Ejemplo n.º 1
0
        public void GetHomeViewDetails_Should_Return_Correct_IEnumumerables()
        {
            //arrange

            var storyType = new StoryType
            {
                Name = "fantasy"
            };

            var user = new FanFictionUser
            {
                Nickname = "User",
                UserName = "******"
            };

            this.userManager.CreateAsync(user).GetAwaiter();

            var stories = new[]
            {
                new FanFictionStory
                {
                    Id        = 1,
                    CreatedOn = DateTime.Now.AddHours(2),
                    Type      = storyType,
                    Author    = user,
                    Summary   = "someSummary1",
                    Title     = "SomeTitle1"
                },
                new FanFictionStory
                {
                    Id        = 2,
                    CreatedOn = DateTime.Now,
                    Type      = storyType,
                    Author    = user,
                    Summary   = null,
                    Title     = "SomeTitle2"
                },
                new FanFictionStory
                {
                    Id        = 3,
                    CreatedOn = DateTime.Now.AddDays(-1),
                    Type      = storyType,
                    Author    = user,
                    Summary   = "someSummary2",
                    Title     = "SomeTitle3"
                },
            };

            var announcements = new[]
            {
                new Announcement
                {
                    Author     = user,
                    Content    = "someContent1",
                    Id         = 1,
                    PublshedOn = DateTime.Now
                },
                new Announcement
                {
                    Author     = user,
                    Content    = "someContent2",
                    Id         = 2,
                    PublshedOn = DateTime.Now.AddHours(2)
                },
                new Announcement
                {
                    Author     = user,
                    Content    = "someContent3",
                    Id         = 3,
                    PublshedOn = DateTime.Now.AddDays(-1)
                },
                new Announcement
                {
                    Author     = user,
                    Content    = "someContent4",
                    Id         = 4,
                    PublshedOn = DateTime.Now.AddMonths(-1)
                },
            };

            this.Context.StoryTypes.Add(storyType);
            this.Context.FictionStories.AddRange(stories);
            this.Context.Announcements.AddRange(announcements);
            this.Context.SaveChanges();

            //act

            var result = this.userService.GetHomeViewDetails();

            //assert
            int    anounceCount   = 3;
            int    storiesCount   = 2;
            string summary        = stories[2].Summary;
            var    date           = stories[2].CreatedOn;
            var    title          = stories[2].Title;
            string anounceContent = announcements[3].Content;
            var    anounceDate    = announcements[3].PublshedOn.ToShortDateString();
            var    storyToNotBeIn = new StoryHomeOutputModel
            {
                Id        = 3,
                Summary   = summary,
                Author    = user.UserName,
                CreatedOn = date,
                Rating    = 0,
                StoryType = storyType.Name,
                Title     = title
            };

            var notice = new AnnouncementOutputModel
            {
                Author      = user.UserName,
                Content     = anounceContent,
                PublishedOn = anounceDate
            };

            result.Stories.Should().NotBeNullOrEmpty()
            .And.HaveCount(storiesCount)
            .And.Subject.Should().NotContain(storyToNotBeIn);

            result.Announcements.Should().NotBeNullOrEmpty()
            .And.HaveCount(anounceCount)
            .And.Subject.Should().NotContain(notice);
        }
        public void GetHomeViewDetails_Should_Return_Correct_View()
        {
            var bookGenre = new BookGenre()
            {
                Genre = "Horror"
            };

            var user = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Gosho Goshev"
            };

            this.userManager.CreateAsync(user).GetAwaiter().GetResult();

            var books = new[]
            {
                new Book()
                {
                    Id        = "1",
                    CreatedOn = DateTime.UtcNow.AddHours(2),
                    Genre     = bookGenre,
                    Author    = user,
                    Summary   = "summary1",
                    Title     = "title1"
                },
                new Book()
                {
                    Id        = "2",
                    CreatedOn = DateTime.UtcNow,
                    Genre     = bookGenre,
                    Author    = user,
                    Summary   = null,
                    Title     = "title2"
                },
                new Book()
                {
                    Id        = "3",
                    CreatedOn = DateTime.Now.AddHours(6),
                    Genre     = bookGenre,
                    Author    = user,
                    Summary   = "summary2",
                    Title     = "title3"
                },
            };

            var announcements = new[]
            {
                new Announcement
                {
                    Id          = "1",
                    Author      = user,
                    Content     = "content1",
                    PublishedOn = DateTime.UtcNow
                },
                new Announcement
                {
                    Id          = "2",
                    Author      = user,
                    Content     = "content2",
                    PublishedOn = DateTime.UtcNow.AddHours(4)
                },
                new Announcement
                {
                    Id          = "3",
                    Author      = user,
                    Content     = "content3",
                    PublishedOn = DateTime.UtcNow.AddHours(15)
                }
            };

            this.Context.BooksGenres.Add(bookGenre);
            this.Context.Books.AddRange(books);
            this.Context.Announcements.AddRange(announcements);
            this.Context.SaveChanges();

            var result = this.userService.GetHomeViewDetails();

            var announcementsCount = 2;
            var booksCount         = 2;
            var summary            = books[2].Summary;
            var date  = books[2].CreatedOn;
            var title = books[2].Title;
            var announcementContent = announcements[2].Content;
            var announcementDate    = announcements[2].PublishedOn.ToShortDateString();

            var bookToNotBeIn = new BookHomeOutputModel
            {
                Id        = "3",
                Summary   = summary,
                Author    = user.UserName,
                CreatedOn = date,
                Rating    = 0,
                Genre     = bookGenre.Genre,
                Title     = title
            };
            var announcementToNotBeIn = new AnnouncementOutputModel
            {
                Author      = user.UserName,
                Content     = announcementContent,
                PublishedOn = announcementDate
            };


            result.LatestBooks.Should().NotBeNullOrEmpty()
            .And.HaveCount(booksCount)
            .And.Subject.Should().NotContain(bookToNotBeIn);
            result.LatestAnnouncements.Should().NotBeNullOrEmpty()
            .And.HaveCount(announcementsCount)
            .And.Subject.Should().NotContain(announcementToNotBeIn);
        }