Пример #1
0
        public async Task GetFollowingCountMethodShouldCountFollowingUsersPosts()
        {
            var guid = Guid.NewGuid().ToString();

            var options = new DbContextOptionsBuilder <ForumDbContext>()
                          .UseInMemoryDatabase(guid)
                          .Options;

            var db = new ForumDbContext(options);
            var dateTimeProvider = new Mock <IDateTimeProvider>();

            dateTimeProvider.Setup(dtp => dtp.Now()).Returns(new DateTime(2020, 3, 27));

            var users = new List <ForumUser>
            {
                new ForumUser
                {
                    Id        = guid,
                    UserName  = "******",
                    Email     = "*****@*****.**",
                    BirthDate = dateTimeProvider.Object.Now(),
                    CreatedOn = dateTimeProvider.Object.Now()
                },
                new ForumUser
                {
                    Id        = "123",
                    UserName  = "******",
                    Email     = "*****@*****.**",
                    BirthDate = dateTimeProvider.Object.Now(),
                    CreatedOn = dateTimeProvider.Object.Now()
                }
            };

            var posts = new List <Post>
            {
                new Post
                {
                    Id          = 1,
                    Title       = "Test title 1",
                    Description = "Test description 1",
                    Type        = PostType.Discussion,
                    CategoryId  = 1,
                    AuthorId    = guid,
                    CreatedOn   = dateTimeProvider.Object.Now()
                },
                new Post
                {
                    Id          = 2,
                    Title       = "Test title 2",
                    Description = "Test description 2",
                    Type        = PostType.Discussion,
                    CategoryId  = 2,
                    AuthorId    = guid,
                    CreatedOn   = dateTimeProvider.Object.Now()
                }
            };

            var userFollower = new UserFollower
            {
                User     = users[0],
                Follower = users[1]
            };

            await db.Users.AddRangeAsync(users);

            await db.Posts.AddRangeAsync(posts);

            await db.UsersFollowers.AddAsync(userFollower);

            await db.SaveChangesAsync();

            var postsService = new PostsService(db, null, null, dateTimeProvider.Object);

            var count = await postsService.GetFollowingCountAsync("123");

            count.Should().Be(posts.Count);
        }