public async Task AllAsync_UsingPaginator_ReturnsExpectedResult() { // Arrange var people = new[] { new Person { GivenName = "Dwayne", FamilyName = "Welsh" }, new Person { GivenName = "Ed", FamilyName = "Stuart" }, new Person { GivenName = "Hollie", FamilyName = "Marin" }, new Person { GivenName = "Randall", FamilyName = "Bloom" }, }; uow.People().AddRange(people); await uow.CompleteAsync(); var paginator = new SortingPaginator <Person>().StartingAt(1).WithPageSizeOf(2).SortedBy("Id", SortDirection.Descending); // Act var paginatedResult = await uow.People().AllAsync(paginator); // Assert Assert.AreEqual(2, paginatedResult.Count()); Assert.AreEqual("Randall", paginatedResult[0].GivenName); Assert.AreEqual("Hollie", paginatedResult[1].GivenName); }
public void HasPreviousPage_ByDefault_ReturnsFalse() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 5); // Act var result = paginator.HasPreviousPage(); // Assert Assert.IsFalse(result); }
public void SortedByString_GivenEmptyOrWhiteSpaceOnlyString_ThrowsArgumentException(string value) { // Arrange var paginator = new SortingPaginator <Person>(); // Act void action() => paginator.SortedByString(value); // Assert Assert.ThrowsException <ArgumentException>(action); }
public void SortedByString_GivenInvalidString_ThrowsFormatException(string value) { // Arrange var paginator = new SortingPaginator <Person>(); // Act void action() => paginator.SortedByString(value); // Assert Assert.ThrowsException <FormatException>(action); }
public void PageNumber_ByDefault_ReturnsOne() { // Arrange var paginator = new SortingPaginator <object>(); // Act var pageNumber = paginator.PageNumber; // Assert Assert.AreEqual(1, pageNumber); }
public void SortedByString_GivenNullString_ThrowsArgumentNullException() { // Arrange var paginator = new SortingPaginator <Person>(); // Act void action() => paginator.SortedByString(null); // Assert Assert.ThrowsException <ArgumentNullException>(action); }
public void MovePreviousPage_ByDefault_DoesNotMoveToPreviousPage() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 5); // Act var result = paginator.MovePreviousPage(); // Assert Assert.IsFalse(result); }
public void ItemCount_ByDefault_ReturnsZero() { // Arrange var paginator = new SortingPaginator <object>(); // Act var itemCount = paginator.ItemCount; // Assert Assert.AreEqual(0, itemCount); }
public void PageSize_ByDefault_ReturnsDefaultPageSize() { // Arrange var paginator = new SortingPaginator <object>(); // Act var pageSize = paginator.PageSize; // Assert Assert.AreEqual(SortingPaginator <object> .DefaultPageSize, pageSize); }
public void PageSize_GivenInvalidValue_ThrowsArgumentOutOfRangeException(int pageSize) { // Arrange var paginator = new SortingPaginator <object>(); // Act void action() => paginator.PageSize = pageSize; // Assert Assert.ThrowsException <ArgumentOutOfRangeException>(action); }
public void MoveNextPage_ByDefault_DoesNotMoveToNextPage() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 5); // Act var result = paginator.MoveNextPage(); // Assert Assert.IsFalse(result); Assert.AreNotEqual(2, paginator.PageNumber); }
public void Paginate_WithNoSortProperties_ReturnsUnorderedPage() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 5); // Act var result = paginator.Paginate(People); // Assert Assert.AreEqual(5, result.Count()); Assert.AreEqual("Welsh", result.First().FamilyName); Assert.AreEqual("Hensley", result.Last().FamilyName); }
public void HasNextPage_AfterPaginating_ReturnsTrue() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 5); paginator.Paginate(People); // Act var result = paginator.HasNextPage(); // Assert Assert.IsTrue(result); }
public void SortedByString_GivenSingleDirective_AddsSortDirective() { // Arrange var paginator = new SortingPaginator <Person>(); // Act paginator.SortedByString("FamilyName"); // Assert Assert.AreEqual(1, paginator.SortDirectives.Count); Assert.AreEqual("FamilyName", GetPropertyNameFromLambda(((SortProperty <Person>)paginator.SortDirectives.First()).Property)); Assert.AreEqual(SortDirection.Ascending, ((SortProperty <Person>)paginator.SortDirectives.First()).Direction); }
public void SortedBy_GivenInvalidNestedProperty_ThrowsArgumentException() { // Arrange var paginator = new SortingPaginator <Person>(); // Act void action() => paginator.SortedBy("FavoriteBook.UndefinedProperty"); // Assert var exception = Assert.ThrowsException <ArgumentException>(action); Assert.AreEqual("No property 'UndefinedProperty' on type 'Book'. (Parameter 'propertyName')", exception.Message); }
public void HasPreviousPage_AfterPaginatingStartingAtFirstPage_ReturnsFalse() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 5); paginator.Paginate(People); // Act var result = paginator.HasPreviousPage(); // Assert Assert.IsFalse(result); }
public void Find_GivenNullFilterAndNonNullPaginator_ThrowsArgumentNullException() { // Arrange var repository = uow.Repository <Person>(); IQueryableFilter <Person> filter = null; IQueryablePaginator <Person> paginator = new SortingPaginator <Person>(); // Act void action() => repository.Find(filter, paginator); // Assert Assert.ThrowsException <ArgumentNullException>(action); }
public void MoveNextPage_AfterPaginating_MovesToNextPage() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 5); paginator.Paginate(People); // Act var result = paginator.MoveNextPage(); // Assert Assert.IsTrue(result); Assert.AreEqual(2, paginator.PageNumber); }
public void Paginate_SortedByAgeDescendingUsingExpression_ReturnsExpectedResult() { // Arrange var paginator = new SortingPaginator <Person>().StartingAt(1).WithPageSizeOf(2); paginator.SortedBy(p => p.Age, SortDirection.Descending); // Act var result = paginator.Paginate(People); // Assert Assert.AreEqual(2, result.Count()); Assert.AreEqual("Edgar Bernard", result.First().FullName()); Assert.AreEqual("Randall Bloom", result.Last().FullName()); }
public void MovePreviousPage_AfterPaginatingStartingAtLastPage_MovesToPreviousPage() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 5); paginator.Paginate(People); paginator.PageNumber = paginator.PageCount; // Act var result = paginator.MovePreviousPage(); // Assert Assert.IsTrue(result); Assert.AreEqual(paginator.PageCount - 1, paginator.PageNumber); }
public void Paginate_SortedByFamilyNameDescending_ReturnsExpectedResult() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 2); paginator.SortDirectives.Add(new SortProperty <Person>("FamilyName", SortDirection.Descending)); // Act var result = paginator.Paginate(People); // Assert Assert.AreEqual(2, result.Count()); Assert.AreEqual("Welsh", result.First().FamilyName); Assert.AreEqual("Stuart", result.Last().FamilyName); }
public void Paginate_SortedByGivenNameAscending_ReturnsExpectedResult() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 2); paginator.SortDirectives.Add(new SortProperty <Person>("GivenName", SortDirection.Ascending)); // Act var result = paginator.Paginate(People); // Assert Assert.AreEqual(2, result.Count()); Assert.AreEqual("Ana", result.First().GivenName); Assert.AreEqual("Dwayne", result.Last().GivenName); }
public void Paginate_SortedByAgeAscending_ReturnsExpectedResult() { // Arrange var paginator = new SortingPaginator <Person>().StartingAt(1).WithPageSizeOf(3); paginator.SortedBy("Age", SortDirection.Ascending); // Act var result = paginator.Paginate(People); // Assert Assert.AreEqual(3, result.Count()); Assert.AreEqual("Phillipa Connor", result.First().FullName()); // null < any other value Assert.AreEqual("Peter Connor", result.ElementAt(1).FullName()); Assert.AreEqual("Dwayne Welsh", result.Last().FullName()); }
public async Task AllAsync_ByDefault_ReturnsPaginatedList() { // Arrange await uow.BeginTransactionAsync().ConfigureAwait(false); var people = new[] { new Person { GivenName = "Dwayne", FamilyName = "Welsh" }, new Person { GivenName = "Ed", FamilyName = "Stuart" }, new Person { GivenName = "Hollie", FamilyName = "Marin" }, new Person { GivenName = "Randall", FamilyName = "Bloom" }, new Person { GivenName = "Glenn", FamilyName = "Hensley" }, new Person { GivenName = "Phillipa", FamilyName = "Connor" }, new Person { GivenName = "Ana", FamilyName = "Bryan" }, new Person { GivenName = "Edgar", FamilyName = "Bernard" } }; uow.People().AddRange(people); await uow.CompleteAsync().ConfigureAwait(false); // Act var paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 5); var result = await uow.People().AllAsync(paginator).ConfigureAwait(false); // Assert Assert.AreEqual(5, result.Count); Assert.AreEqual(paginator.PageNumber, result.PageNumber); Assert.AreEqual(paginator.PageCount, result.PageCount); }
public void Paginate_SortedByFamilyNameAscendingThenGivenNameDescending_ReturnsExpectedResult() { // Arrange var paginator = new SortingPaginator <Person>(pageNumber: 2, pageSize: 3); paginator.SortDirectives.Add(new SortProperty <Person>("FamilyName", SortDirection.Ascending)); paginator.SortDirectives.Add(new SortProperty <Person>("GivenName", SortDirection.Descending)); // Act var result = paginator.Paginate(People); // Assert Assert.AreEqual(3, result.Count()); Assert.AreEqual("Phillipa", result.First().GivenName); Assert.AreEqual("Peter", result.ElementAt(1).GivenName); Assert.AreEqual("Glenn", result.Last().GivenName); }
public void Find_UsingPaginator_ReturnsExpectedResult() { // Arrange var people = new[] { new Person { GivenName = "Dwayne", FamilyName = "Welsh" }, new Person { GivenName = "Ed", FamilyName = "Stuart" }, new Person { GivenName = "Hollie", FamilyName = "Marin" }, new Person { GivenName = "Randall", FamilyName = "Bloom" }, new Person { GivenName = "Glenn", FamilyName = "Hensley" }, new Person { GivenName = "Phillipa", FamilyName = "Connor" }, new Person { GivenName = "Ana", FamilyName = "Bryan" }, new Person { GivenName = "Edgar", FamilyName = "Bernard" } }; uow.People().AddRange(people); uow.Complete(); IQueryablePaginator <Person> paginator = new SortingPaginator <Person>(pageNumber: 1, pageSize: 2).SortedBy(nameof(Person.FamilyName)); // Act var result = uow.People().Find(p => p.GivenName.Contains("ll")); // 3 var paginatedResult = uow.People().Find(p => p.GivenName.Contains("ll"), paginator); // 2 // Assert Assert.AreEqual(3, result.Count()); Assert.AreEqual(2, paginatedResult.Count()); Assert.AreEqual("Randall", paginatedResult.First().GivenName); Assert.AreEqual("Phillipa", paginatedResult.Last().GivenName); }
protected async override Task OnApplicationStartedAsync(CancellationToken cancellationToken) { var uow = ServiceProvider.GetRequiredService <IUnitOfWork>(); if (!uow.IsTransactional) { await uow.BeginTransactionAsync(cancellationToken); } new DataSeeder().Seed(uow.People()); await uow.CompleteAsync(cancellationToken).ConfigureAwait(true); var person = uow.People().Find(new FilterByName { FamilyName = "Welsh" }).SingleOrDefault(); var paginator = new SortingPaginator <Person>().StartingAt(1).WithPageSizeOf(2).SortedBy("Contact.HomeAddress.State", SortDirection.Descending); do { var people = uow.People().All(paginator); } while (paginator.MoveNextPage()); }