public void Applies_Filters_To_Each_Post() { // Arrange var c0 = Rnd.Str; var p0 = new Model(ULongId <WpPostId>(), c0); var c1 = Rnd.Str; var p1 = new Model(ULongId <WpPostId>(), c1); var posts = new[] { p0, p1 }; var f0 = Substitute.For <IContentFilter>(); f0.Execute(Arg.Any <string>()).Returns(x => x.ArgAt <string>(0)); var f1 = Substitute.For <IContentFilter>(); f1.Execute(Arg.Any <string>()).Returns(x => x.ArgAt <string>(0)); var filters = new[] { f0, f1 }; // Act QueryPostsF.ApplyContentFilters <IEnumerable <Model>, Model>(posts, filters); // Assert f0.Received(1).Execute(c0); f1.Received(1).Execute(c0); f0.Received(1).Execute(c1); f1.Received(1).Execute(c1); }
public void Executes_Filters_On_Each_Post() { // Arrange var c0 = Rnd.Str; var p0 = new Model(c0); var c1 = Rnd.Str; var p1 = new Model(c1); var posts = new[] { p0, p1 }; var content = QueryPostsF.GetPostContentInfo <Model>().UnsafeUnwrap(); var f0 = Substitute.For <IContentFilter>(); f0.Execute(Arg.Any <string>()).Returns(x => x.ArgAt <string>(0)); var f1 = Substitute.For <IContentFilter>(); f1.Execute(Arg.Any <string>()).Returns(x => x.ArgAt <string>(0)); var filters = new[] { f0, f1 }; // Act QueryPostsF.ExecuteContentFilters(posts, content, filters); // Assert f0.Received(1).Execute(c0); f1.Received(1).Execute(c0); f0.Received(1).Execute(c1); f1.Received(1).Execute(c1); }
/// <inheritdoc/> public Task <Maybe <IEnumerable <T> > > ExecuteAsync <T>( IWpDb db, IUnitOfWork w, GetPostsOptions opt, params IContentFilter[] filters ) where T : IWithId <WpPostId> => QueryPostsF.ExecuteAsync <T>(db, w, opt, filters);
/// <inheritdoc/> public Task <Maybe <IPagedList <T> > > ExecuteAsync <T>( IWpDb db, IUnitOfWork w, ulong page, GetPostsOptions opt, params IContentFilter[] filters ) where T : IWithId <WpPostId> => QueryPostsF.ExecuteAsync <T>(db, w, page, opt, filters);
public void Content_Property_Wrong_Type_Returns_None_With_ContentPropertyNotFoundMsg() { // Arrange // Act var result = QueryPostsF.GetPostContent <WithContentPropertyWrongType>(); // Assert result.AssertNone().AssertType <ContentPropertyNotFoundMsg <WithContentPropertyWrongType> >(); }
public void No_TermList_Properties_Returns_Empty_List() { // Arrange // Act var result = QueryPostsF.GetTermLists <NoTermLists>(); // Assert Assert.Empty(result); }
public void No_Content_Property_Returns_None_With_ContentPropertyNotFoundMsg() { // Arrange // Act var result = QueryPostsF.GetPostContent <NoContentProperty>(); // Assert result.AssertNone().AssertType <ContentPropertyNotFoundMsg <NoContentProperty> >(); }
public void More_Than_One_MetaDictionary_Properties_Returns_None_With_MoreThanOneMetaDictionaryMsg() { // Arrange // Act var result = QueryPostsF.GetMetaDictionary <MoreThanOneMetaDictionaryProperty>(); // Assert result.AssertNone().AssertType <MoreThanOneMetaDictionaryMsg <MoreThanOneMetaDictionaryProperty> >(); }
public void No_MetaDictionary_Properties_Returns_None_With_MetaDictionaryPropertyNotFoundMsg() { // Arrange // Act var result = QueryPostsF.GetMetaDictionary <NoMetaDictionaryProperties>(); // Assert result.AssertNone().AssertType <MetaDictionaryPropertyNotFoundMsg <NoMetaDictionaryProperties> >(); }
public void No_CustomFields_Returns_Empty_List() { // Arrange // Act var result = QueryPostsF.GetCustomFields <NoCustomFields>(); // Assert Assert.Empty(result); }
public void With_Single_MetaDictionary_Property_Returns_PropertyInfo() { // Arrange // Act var result = QueryPostsF.GetMetaDictionary <SingleMetaDictionaryProperty>(); // Assert var some = result.AssertSome(); Assert.Equal(nameof(SingleMetaDictionaryProperty.Meta), some.Name); }
public void Empty_List_Returns_None_With_ListIsEmptyMsg() { // Arrange var list = new List <ulong>(); // Act var(r0, r1) = QueryPostsF.GetPreviousAndNext(Rnd.ULng, list); // Assert Assert.Null(r0); Assert.Null(r1); }
public void With_Content_Property_Returns_Content_Property() { // Arrange // Act var result = QueryPostsF.GetPostContentInfo <WithContentProperty>(); // Assert var some = result.AssertSome(); Assert.Equal(nameof(WpPostEntity.Content), some.Name); }
public void No_Filters_Does_Nothing() { // Arrange var posts = new[] { new Model(Rnd.Str) }; var content = QueryPostsF.GetPostContentInfo <Model>().UnsafeUnwrap(); var filters = Array.Empty <IContentFilter>(); // Act var result = QueryPostsF.ExecuteContentFilters(posts, content, filters); // Assert Assert.Same(posts, result); }
public void No_Posts_Does_Nothing() { // Arrange var posts = Substitute.For <IEnumerable <Model> >(); var content = QueryPostsF.GetPostContentInfo <Model>().UnsafeUnwrap(); var filters = new[] { Substitute.For <IContentFilter>() }; // Act var result = QueryPostsF.ExecuteContentFilters(posts, content, filters); // Assert Assert.Same(posts, result); }
public void No_Filters_Does_Nothing() { // Arrange var posts = new[] { new Model(ULongId <WpPostId>(), Rnd.Str) }; var filters = Array.Empty <IContentFilter>(); // Act var result = QueryPostsF.ApplyContentFilters <IEnumerable <Model>, Model>(posts, filters); // Assert var some = result.AssertSome(); Assert.Same(posts, some); }
public void Single_Item_Returns_None_With_ListContainsSingleItemMsg() { // Arrange var list = new List <ulong> { Rnd.ULng }; // Act var(r0, r1) = QueryPostsF.GetPreviousAndNext(Rnd.ULng, list); // Assert Assert.Null(r0); Assert.Null(r1); }
public void No_Posts_Does_Nothing() { // Arrange var posts = Substitute.For <IEnumerable <Model> >(); var filters = new[] { Substitute.For <IContentFilter>() }; // Act var result = QueryPostsF.ApplyContentFilters <IEnumerable <Model>, Model>(posts, filters); // Assert var some = result.AssertSome(); Assert.Same(posts, some); }
public void Item_Not_In_List_Returns_None_With_ListDoesNotContainItemMsg() { // Arrange var value = 10001U; var list = new List <ulong> { Rnd.ULng, Rnd.ULng, Rnd.ULng }; // Act var(r0, r1) = QueryPostsF.GetPreviousAndNext(value, list); // Assert Assert.Null(r0); Assert.Null(r1); }
public void Catches_Exception_In_ContentFilter_Returns_None_With_ApplyContentFiltersExceptionMsg() { // Arrange var posts = new[] { new Model(ULongId <WpPostId>(), Rnd.Str) }; var filter = Substitute.For <IContentFilter>(); filter.Execute(Arg.Any <string>()).Throws(new Exception()); var filters = new[] { filter }; // Act var result = QueryPostsF.ApplyContentFilters <IEnumerable <Model>, Model>(posts, filters); // Assert result.AssertNone().AssertType <ApplyContentFiltersExceptionMsg <Model> >(); }
public void Last_Item_Returns_Previous_Item_And_None() { // Arrange var value = Rnd.ULng; var prev = Rnd.ULng; var list = new List <ulong> { Rnd.ULng, Rnd.ULng, prev, value }; // Act var(r0, r1) = QueryPostsF.GetPreviousAndNext(value, list); // Assert Assert.NotNull(r0); Assert.Equal(prev, r0 !.Value); Assert.Null(r1); }
public void First_Item_Returns_None_And_Next_Item() { // Arrange var value = Rnd.ULng; var next = Rnd.ULng; var list = new List <ulong> { value, next, Rnd.ULng, Rnd.ULng }; // Act var(r0, r1) = QueryPostsF.GetPreviousAndNext(value, list); // Assert Assert.Null(r0); Assert.NotNull(r1); Assert.Equal(next, r1 !.Value); }
public void With_TermList_Properties_Returns_PropertyInfo() { // Arrange // Act var result = QueryPostsF.GetTermLists <WithTermLists>(); // Assert Assert.Collection(result, x => { Assert.Equal(nameof(WithTermLists.Terms0), x.Name); Assert.Equal(typeof(TermList), x.PropertyType); }, x => { Assert.Equal(nameof(WithTermLists.Terms1), x.Name); Assert.Equal(typeof(TermList), x.PropertyType); } ); }
public void With_CustomFields_Returns_PropertyInfo() { // Arrange // Act var result = QueryPostsF.GetCustomFields <WithCustomFields>(); // Assert Assert.Collection(result, x => { Assert.Equal(nameof(WithCustomFields.Field0), x.Name); Assert.True(typeof(ICustomField).IsAssignableFrom(x.PropertyType)); }, x => { Assert.Equal(nameof(WithCustomFields.Field1), x.Name); Assert.True(typeof(ICustomField).IsAssignableFrom(x.PropertyType)); } ); }
/// <inheritdoc/> public async Task <Maybe <IPagedList <T> > > PostsAsync <T>(ulong page, Query.GetPostsOptions opt, params IContentFilter[] filters) where T : IWithId <WpPostId> { using var w = Db.UnitOfWork; return(await QueryPostsF.ExecuteAsync <T>(Db, w, page, opt, filters).ConfigureAwait(false)); }
/// <inheritdoc/> public async Task <Maybe <(WpPostId?prev, WpPostId?next)> > PreviousAndNextPostsAsync(WpPostId id, Query.GetPostsOptions opt) { using var w = Db.UnitOfWork; return(await QueryPostsF.GetPreviousAndNextAsync(Db, w, id, opt).ConfigureAwait(false)); }