Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
a113c59
Add SelectRowColumn column
dvoituron Apr 26, 2024
81177cd
Including Icons
dvoituron Apr 26, 2024
3e233e2
Update the colum name to SelectColumn and use a EventCallback
dvoituron Apr 26, 2024
ef233bc
Adding TGridItem="Person"
dvoituron Apr 26, 2024
5524506
Add SelectAllChanged
dvoituron Apr 26, 2024
fc2f225
Add a bindable SelectAll property
dvoituron Apr 26, 2024
ac38417
Remove AllSelected demo var
dvoituron Apr 26, 2024
888a78e
Merge branch 'dev' into users/datagrid/multi-select
dvoituron Apr 26, 2024
696923e
Merge branch 'dev' into users/datagrid/multi-select
vnbaaij Apr 26, 2024
4bf3bbf
Add Style
dvoituron Apr 26, 2024
0b38e8c
Fix the sample
dvoituron Apr 26, 2024
f110762
Merge branch 'users/datagrid/multi-select' of github.amrom.workers.dev-perso:micros…
dvoituron Apr 26, 2024
cbfe3c1
Add IconIndeterminate
dvoituron Apr 26, 2024
0b47a07
Replace by IEnumerable
dvoituron Apr 26, 2024
5ed9696
Add DataGridSelectMode.Single
dvoituron Apr 26, 2024
50068f9
Merge branch 'dev' into users/datagrid/multi-select
dvoituron Apr 28, 2024
c8daac0
Separated the SelectedItems and Property / OnSelect (not yet completed)
dvoituron Apr 28, 2024
fc271b7
Update
dvoituron Apr 28, 2024
1b83879
Update the 2 examples
dvoituron Apr 28, 2024
0229a57
Add Titles
dvoituron Apr 28, 2024
489af95
Add OnRowDoubleClick
dvoituron Apr 28, 2024
3c1a8ac
Add Enter key
dvoituron Apr 28, 2024
04881be
Update keys to select/unselect
dvoituron Apr 28, 2024
5c87496
Merge branch 'dev' into users/datagrid/multi-select
dvoituron Apr 28, 2024
d360e7e
Update doc
dvoituron Apr 28, 2024
323f2c3
Add first Unit Test
dvoituron Apr 29, 2024
e275763
Add Unit Tests
dvoituron Apr 29, 2024
56d3a89
Add Unit Tests for Property attribute
dvoituron Apr 29, 2024
4f3e2cc
Merge branch 'dev' into users/datagrid/multi-select
dvoituron Apr 29, 2024
cf19e3f
Add SwitchMultiToSingleSelect
dvoituron Apr 29, 2024
6473d6e
Update the doc
dvoituron Apr 29, 2024
c927720
Update Single Icons and Doc (PR comments)
dvoituron Apr 30, 2024
1ae2d38
Merge branch 'dev' into users/datagrid/multi-select
vnbaaij Apr 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add Unit Tests for Property attribute
  • Loading branch information
dvoituron committed Apr 29, 2024
commit 56d3a89f0c37cc2f2b26ec3c6c448814d7f2b227
114 changes: 108 additions & 6 deletions tests/Core/DataGrid/FluentDataGridColumSelectTests.razor
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
@bind-SelectedItems="@SelectedItems" />
<PropertyColumn Property="@(p => p.Name)" />
</FluentDataGrid>
);
);

cut.Verify();
}

[Fact]
public async Task FluentDataGrid_ColumSelect_SingleSelect()
public async Task FluentDataGrid_ColumSelect_SingleSelect_SelectedItems()
{
IEnumerable<Person> SelectedItems = Array.Empty<Person>();

Expand Down Expand Up @@ -50,6 +50,37 @@
Assert.Single(SelectedItems);
}

[Fact]
public async Task FluentDataGrid_ColumSelect_SingleSelect_Property()
{
var items = new List<Person>(People).AsQueryable();

// Arrange
var cut = Render(
@<FluentDataGrid Items="@items" TGridItem="Person">
<SelectColumn TGridItem="Person"
SelectMode="@DataGridSelectMode.Single"
Property="@(e => e.Selected)"
OnSelect="@(e => e.Item.Selected = e.Selected)" />
<PropertyColumn Property="@(p => p.Name)" />
</FluentDataGrid>
);

// Pre-Assert
Assert.Empty(cut.FindAll("svg[row-selected]"));
Assert.Empty(items.Where(i => i.Selected));

// Act - Click and select Row 0
await ClickOnRowAsync(cut, row: 0);
Assert.Single(cut.FindAll("svg[row-selected]"));
Assert.Single(items.Where(i => i.Selected));

// Act - Click and select Row 1
await ClickOnRowAsync(cut, row: 1);
Assert.Single(cut.FindAll("svg[row-selected]"));
Assert.Single(items.Where(i => i.Selected));
}

[Fact]
public void FluentDataGrid_ColumSelect_MultiSelect_Rendering()
{
Expand All @@ -63,13 +94,13 @@
@bind-SelectedItems="@SelectedItems" />
<PropertyColumn Property="@(p => p.Name)" />
</FluentDataGrid>
);
);

cut.Verify();
}

[Fact]
public async Task FluentDataGrid_ColumSelect_MultiSelect()
public async Task FluentDataGrid_ColumSelect_MultiSelect_SelectedItems()
{
IEnumerable<Person> SelectedItems = Array.Empty<Person>();

Expand All @@ -81,7 +112,7 @@
@bind-SelectedItems="@SelectedItems" />
<PropertyColumn Property="@(p => p.Name)" />
</FluentDataGrid>
);
);

// Pre-Assert
Assert.Empty(cut.FindAll("svg[row-selected]"));
Expand All @@ -105,7 +136,44 @@
}

[Fact]
public async Task FluentDataGrid_ColumSelect_MultiSelect_SelectAll()
public async Task FluentDataGrid_ColumSelect_MultiSelect_Property()
{
var items = new List<Person>(People).AsQueryable();

// Arrange
var cut = Render(
@<FluentDataGrid Items="@items" TGridItem="Person">
<SelectColumn TGridItem="Person"
SelectMode="@DataGridSelectMode.Multiple"
Property="@(e => e.Selected)"
OnSelect="@(e => e.Item.Selected = e.Selected)" />
<PropertyColumn Property="@(p => p.Name)" />
</FluentDataGrid>
);

// Pre-Assert
Assert.Empty(cut.FindAll("svg[row-selected]"));
Assert.Empty(items.Where(i => i.Selected));

// Act - Click and select Row 0
await ClickOnRowAsync(cut, row: 0);
Assert.Single(cut.FindAll("svg[row-selected]"));
Assert.Single(items.Where(i => i.Selected));

// Act - Click and select Row 1
await ClickOnRowAsync(cut, row: 1);
Assert.Equal(2, cut.FindAll("svg[row-selected]").Count);
Assert.Equal(2, items.Where(i => i.Selected).Count());

// Act - Click and unselect Row 0
await ClickOnRowAsync(cut, row: 0);
Assert.Single(cut.FindAll("svg[row-selected]"));
Assert.Single(items.Where(i => i.Selected));

}

[Fact]
public async Task FluentDataGrid_ColumSelect_MultiSelect_SelectAll_SelectedItems()
{
IEnumerable<Person> SelectedItems = Array.Empty<Person>();

Expand Down Expand Up @@ -135,6 +203,40 @@

}

[Fact]
public async Task FluentDataGrid_ColumSelect_MultiSelect_SelectAll_Property()
{
var items = new List<Person>(People).AsQueryable();

// Arrange
var cut = Render(
@<FluentDataGrid Items="@items" TGridItem="Person">
<SelectColumn TGridItem="Person"
SelectMode="@DataGridSelectMode.Multiple"
Property="@(e => e.Selected)"
OnSelect="@(e => e.Item.Selected = e.Selected)"
SelectAll="@(items.All(p => p.Selected))"
SelectAllChanged="@(all => items.ToList().ForEach(p => p.Selected = (all == true)))" />
<PropertyColumn Property="@(p => p.Name)" />
</FluentDataGrid>
);

// Pre-Assert
Assert.Empty(cut.FindAll("svg[row-selected]"));
Assert.Empty(items.Where(i => i.Selected));

// Act - Click on All checkbox to select all
await ClickOnAllAsync(cut);
Assert.Equal(3, cut.FindAll("svg[row-selected]").Count);
Assert.Equal(3, items.Where(i => i.Selected).Count());

// Act - Click on All checkbox to unselect all
await ClickOnAllAsync(cut);
Assert.Empty(cut.FindAll("svg[row-selected]"));
Assert.Empty(items.Where(i => i.Selected));

}

/// <summary>
/// Simulate a click on the DataGrid row number <paramref name="row"/>.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ private record Person(int PersonId, string Name, DateOnly BirthDate)
public bool Selected { get; set; }
};

private static readonly IQueryable<Person> People = new[]
private readonly IQueryable<Person> People = new[]
{
new Person(1, "Jean Martin", new DateOnly(1985, 3, 16)),
new Person(2, "Kenji Sato", new DateOnly(2004, 1, 9)),
Expand Down