public async Task <IActionResult> Index(int?page, string sortColumn, string sortDirection, string filter) { var me = await this._userManager.FindByIdAsync(HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier)); var dataSource = this._notificationReciever.FetchHistory(me); if (!string.IsNullOrWhiteSpace(filter)) { dataSource = dataSource.Where(x => x.SubjectId.ToLower() == filter.ToLower()); } var dataTable = DataTableBuilder .Create(dataSource) .Sort(sortColumn ?? "SubjectId", sortDirection ?? "Ascending") .Page(page) .RowLink(x => x.URL) .Columns(columns => { columns.Add(x => x.Id).Title("Id").Width(100); columns.Add(x => x.SubjectId).Title("Ämne").Width(200); columns.Add(x => x.ShortDescription).Title("Beskrivning"); }); return(this.ViewOrOk(dataTable)); }
public void ShouldFindUnmatchingValuesPerKey() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name") .WithRows(new object[] { 5, "Peter" }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name") .WithRows(new object[] { 5, "Henell" }) .Build(); var keys = new List <string>(); keys.Add("ID"); var result = comparer.Compare(a, b, keys); Assert.That(result.ComparisonErrors.Where(e => e.ValuesDoesNotMatch).Count(), Is.EqualTo(1)); var diffValue = result.ComparisonErrors.Where(e => e.ValuesDoesNotMatch).FirstOrDefault().ValueDifferences.FirstOrDefault(); Assert.That(diffValue.ColumnName, Is.EqualTo("Name")); Assert.That(diffValue.ExpectedValue, Is.EqualTo("Peter")); Assert.That(diffValue.ActualValue, Is.EqualTo("Henell")); }
public void ShouldBuildEmptyDataTable() { var dt = DataTableBuilder.Create() .Build(); Assert.That(dt.Rows.Count, Is.EqualTo(0)); }
public async Task <IActionResult> Index(int?page, string sortColumn, string sortDirection, string filter) { var dataSource = this._context.Designs.Include(x => x.Images).AsQueryable(); if (!string.IsNullOrWhiteSpace(filter)) { dataSource = dataSource.Where(x => x.Title.ToLower() == filter.ToLower()); } var dataTable = DataTableBuilder .Create(dataSource) .Sort(sortColumn ?? "Title", sortDirection ?? "Ascending") .Page(page) .RowLink(x => Url.Action("Display", new { id = x.Id })) //.CssClass("mox-datatable clean") .Columns(columns => { columns.Add(x => x.Id).Title("Id").Width(100); columns.Add(x => x.Title).Title("Titel"); columns.Add(x => x.Images.Count).Title("Bilder").Width(100); }) .Buttons(buttons => { buttons.Add(x => Url.Action("display", new { Id = x.Id })).CssClass("display"); buttons.Add(x => Url.Action("edit", new { Id = x.Id })).CssClass("edit"); buttons.Add(x => Url.Action("delete", new { Id = x.Id })).CssClass("delete"); }); return(this.ViewOrOk(dataTable)); }
public void ShouldBuildADataTableWithSeveralRows() { var dt = DataTableBuilder.Create() .WithColumns("ID", "Name") .WithRows(new object[] { 1, "Peter" }) .WithRows(new object[] { 2, "Henell" }) .WithRows(new object[] { 3, "Anders" }) .WithRows(new object[] { 4, "Johan" }) .Build(); Assert.That(dt.Rows.Count, Is.EqualTo(4)); }
public async Task <IActionResult> Index(int?page, string sortColumn, string sortDirection) { var dataSource = this._context.Roles.Select(x => new { Name = this._localizer[$"role_{x.Name}"].ToString() }); var dataTable = DataTableBuilder .Create(dataSource) .Sort(sortColumn ?? "Name", sortDirection ?? "Ascending") .Page(page) .Columns(columns => { columns.Add(x => x.Name).Title(this._localizer["Namn"]); }); return(this.ViewOrOk(dataTable)); }
public void ShouldNotAllowDifferentAmountOfColumnsInDataReaderAndObject() { var dt = DataTableBuilder.Create() .WithColumns("Age") // Name is missing in the DataTable .WithRows(new object[] { 5 }) .Build(); var reader = dt.CreateDataReader(); // check for object Assert.Throws <ArgumentException>(() => DataReaderToDTOMapper.DataReaderToObject <MockObject>(reader)); // check for struct Assert.Throws <ArgumentException>(() => DataReaderToDTOMapper.DataReaderToStruct <MockStruct>(reader)); }
public void ShouldBuildADataTableWithOneRow() { var dt = DataTableBuilder.Create() .WithColumns("ID", "Name") .WithRows(new object[] { 1, "Peter" }) .Build(); Assert.That(dt.Rows.Count, Is.EqualTo(1)); var firstRow = dt.Rows[0]; Assert.That(firstRow["Name"], Is.EqualTo("Peter")); Assert.That(firstRow["ID"], Is.EqualTo(1)); }
public void NoResultColumns() { var a = DataTableBuilder.Create("a") .Build(); var b = DataTableBuilder.Create("b") .Build(); var keys = new List <string> { "aID" }; Assert.Throws(typeof(ArgumentException), () => comparer.Compare(a, b, keys)); }
public void EmptyResultSetsIsOK() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name", "ValidFrom") .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name", "ValidFrom") .Build(); var keys = new List <string> { "ID" }; comparer.Compare(a, b, keys); }
public void ShouldMapReaderToObject() { var dt = DataTableBuilder.Create() .WithColumns("Age", "Name") .WithRows(new object[] { 5, "Peter" }) .Build(); var reader = dt.CreateDataReader(); var mappedObjects = DataReaderToDTOMapper.DataReaderToObject <MockObject>(reader); Assert.That(mappedObjects.Count, Is.EqualTo(1)); var o = mappedObjects.FirstOrDefault(); Assert.That(o.Age, Is.EqualTo(5)); Assert.That(o.Name, Is.EqualTo("Peter")); }
public void ResultColumnsDoNotMatch() { var a = DataTableBuilder.Create("a") .WithColumns("aID", "aName", "aValidFrom") .WithRows(new object[] { 5, "Peter", "April" }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("bID", "bName", "bValidFrom") .WithRows(new object[] { 5, "Peter", "June" }) .Build(); var keys = new List <string> { "aID" }; Assert.Throws(typeof(ArgumentException), () => comparer.Compare(a, b, keys)); }
public void ShouldCompareRowsByKeys() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name") .WithRows(new object[] { 5, "Peter" }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name") .WithRows(new object[] { 5, "Peter" }) .Build(); var keys = new List <string>(); keys.Add("ID"); var result = comparer.Compare(a, b, keys); Assert.That(result.ComparisonErrors.Count, Is.EqualTo(0)); }
public void ShouldCalculateComparisonStatistics() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name", "ValidFrom") .WithRows(new object[] { 5, "Peter", "April" }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name", "ValidFrom") .WithRows(new object[] { 5, "Peter", "June" }) .Build(); var keys = new List <string> { "ID" }; var result = comparer.Compare(a, b, keys); Assert.That(result.GetCalculatedStats().Values["ValidFrom"].NonMatchingCount, Is.EqualTo(1)); }
public void ShouldNotAllowIgnoringKeyColumns() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name", "ValidFrom") .WithRows(new object[] { 5, "Peter", "April" }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name", "ValidFrom") .WithRows(new object[] { 5, "Peter", "June" }) .Build(); var keys = new List <string> { "ID" }; var ignores = new List <string> { "ID" }; Assert.Throws(typeof(ArgumentException), () => comparer.Compare(a, b, keys, ignores)); }
public void ShouldNotAllowDuplicatesInRightTable() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name") .WithRows(new object[] { 5, "Peter" }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name") .WithRows(new object[] { 5, "Henell" }) .WithRows(new object[] { 5, "Henell" }) .Build(); var keys = new List <string>(); keys.Add("ID"); var result = comparer.Compare(a, b, keys); Assert.That(result.ComparisonErrors.Where(e => e.MultipleRowPerKeyInB).Count(), Is.EqualTo(1)); }
public void ShouldHandleNullValuesInKey() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name") .WithRows(new object[] { null, "Peter" }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name") .WithRows(new object[] { 5, "Henell" }) .Build(); var keys = new List <string>(); keys.Add("ID"); var result = comparer.Compare(a, b, keys); Assert.That( result.ComparisonErrors.Where(e => e.MissingInB).Count(), Is.EqualTo(1)); }
public void ShouldIgnoreColumns() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name", "ValidFrom") .WithRows(new object[] { 5, "Peter", "April" }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name", "ValidFrom") .WithRows(new object[] { 5, "Peter", "June" }) .Build(); var keys = new List <string> { "ID" }; var ignored = new List <string> { "ValidFrom" }; var result = comparer.Compare(a, b, keys, ignored); Assert.That( result.ComparisonErrors.Count, Is.EqualTo(0)); }
public void ShouldIdentifyMissingKey() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name") .WithRows(new object[] { 5, "Peter" }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name") .WithRows(new object[] { 4, "Peter" }) .Build(); var keys = new List <string>(); keys.Add("ID"); var result = comparer.Compare(a, b, keys); Assert.That(result.ComparisonErrors.Where(e => e.MissingInB).Count(), Is.EqualTo(1)); // Even if the values "Peter" and "Henell" does not match they should not end up as ValuesDoesNotMatch // because the key did not match Assert.That(result.ComparisonErrors.Where(e => e.ValuesDoesNotMatch).Count(), Is.EqualTo(0)); }
public async Task <IActionResult> Index(int?page, string sortColumn, string sortDirection, string filter) { var dataSource = this._context.Users.Where(x => x.Email != "*****@*****.**").AsQueryable(); // TODO: Make a better way to hide users from this list! var userRoles = await this._context.UserRoles.ToListAsync(); var roles = await this._context.Roles.ToListAsync(); if (!string.IsNullOrWhiteSpace(filter)) { dataSource = dataSource.Where(x => x.Email.ToLower() == filter.ToLower()); } var dataTable = DataTableBuilder .Create(dataSource.Select(x => new { Id = x.Id, Email = x.Email, Name = x.Name, Roles = string.Join(", ", roles.Where(role => userRoles.Where(ur => ur.UserId == x.Id).Select(ur => ur.RoleId).Contains(role.Id)).Select(role => this._localizer[$"role_{role.Name}"])) })) .Sort(sortColumn ?? "Email", sortDirection ?? "Ascending") .Page(page) .RowLink(x => Url.Action("Edit", new { id = x.Id })) .Columns(columns => { columns.Add(x => x.Email).Title(this._localizer["E-post"]).Width(250); columns.Add(x => x.Name).Title(this._localizer["Namn"]); columns.Add(x => x.Roles).Title(this._localizer["Behörigheter"]); }) .Buttons(buttons => { buttons.Add(x => Url.Action("edit", new { x.Id })).CssClass("edit"); buttons.Add(x => Url.Action("delete", new { x.Id })).CssClass("delete"); }); return(this.ViewOrOk(dataTable)); }
public void ShouldHandleNullValuesInExpectedRow() { var a = DataTableBuilder.Create("a") .WithColumns("ID", "Name") .WithRows(new object[] { 5, null }) .Build(); var b = DataTableBuilder.Create("b") .WithColumns("ID", "Name") .WithRows(new object[] { 5, "Peter" }) .Build(); var keys = new List <string>(); keys.Add("ID"); var result = comparer.Compare(a, b, keys); var diffValue = result.ComparisonErrors.Where(e => e.ValuesDoesNotMatch).FirstOrDefault().ValueDifferences.FirstOrDefault(); Assert.That(diffValue.ColumnName, Is.EqualTo("Name")); Assert.That(diffValue.ExpectedValue, Is.EqualTo(System.DBNull.Value)); Assert.That(diffValue.ActualValue, Is.EqualTo("Peter")); }