Esempio n. 1
0
    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);
    }
Esempio n. 3
0
 /// <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);
Esempio n. 4
0
 /// <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);
Esempio n. 5
0
    public void Content_Property_Wrong_Type_Returns_None_With_ContentPropertyNotFoundMsg()
    {
        // Arrange

        // Act
        var result = QueryPostsF.GetPostContent <WithContentPropertyWrongType>();

        // Assert
        result.AssertNone().AssertType <ContentPropertyNotFoundMsg <WithContentPropertyWrongType> >();
    }
Esempio n. 6
0
    public void No_TermList_Properties_Returns_Empty_List()
    {
        // Arrange

        // Act
        var result = QueryPostsF.GetTermLists <NoTermLists>();

        // Assert
        Assert.Empty(result);
    }
Esempio n. 7
0
    public void No_Content_Property_Returns_None_With_ContentPropertyNotFoundMsg()
    {
        // Arrange

        // Act
        var result = QueryPostsF.GetPostContent <NoContentProperty>();

        // Assert
        result.AssertNone().AssertType <ContentPropertyNotFoundMsg <NoContentProperty> >();
    }
Esempio n. 8
0
    public void More_Than_One_MetaDictionary_Properties_Returns_None_With_MoreThanOneMetaDictionaryMsg()
    {
        // Arrange

        // Act
        var result = QueryPostsF.GetMetaDictionary <MoreThanOneMetaDictionaryProperty>();

        // Assert
        result.AssertNone().AssertType <MoreThanOneMetaDictionaryMsg <MoreThanOneMetaDictionaryProperty> >();
    }
Esempio n. 9
0
    public void No_MetaDictionary_Properties_Returns_None_With_MetaDictionaryPropertyNotFoundMsg()
    {
        // Arrange

        // Act
        var result = QueryPostsF.GetMetaDictionary <NoMetaDictionaryProperties>();

        // Assert
        result.AssertNone().AssertType <MetaDictionaryPropertyNotFoundMsg <NoMetaDictionaryProperties> >();
    }
Esempio n. 10
0
    public void No_CustomFields_Returns_Empty_List()
    {
        // Arrange

        // Act
        var result = QueryPostsF.GetCustomFields <NoCustomFields>();

        // Assert
        Assert.Empty(result);
    }
Esempio n. 11
0
    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);
    }
Esempio n. 12
0
    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);
    }
Esempio n. 13
0
    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);
    }
Esempio n. 16
0
    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);
    }
Esempio n. 17
0
    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);
    }
Esempio n. 18
0
    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);
    }
Esempio n. 19
0
    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);
    }
Esempio n. 20
0
    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> >();
    }
Esempio n. 21
0
    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);
    }
Esempio n. 22
0
    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);
    }
Esempio n. 23
0
    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);
        }
                          );
    }
Esempio n. 24
0
    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));
        }
                          );
    }
Esempio n. 25
0
 /// <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));
 }
Esempio n. 26
0
 /// <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));
 }