public void GetDiaryByIdThrowExceptionwithNonExistantId()
        {
            //arrange

            var diary = new GetShreddedDiary
            {
                Title     = "One",
                Id        = 1,
                CreatedOn = DateTime.Now,
                Summary   = null,
                Type      = new DiaryType
                {
                    Id   = 1,
                    Name = "Cutting"
                },

                UserId = "1111"
            };

            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            var    diaryService = GetService();
            Action act          = () => diaryService.GetDiaryById(2);

            act.Should().Throw <ArgumentException>().WithMessage(GlobalConstants.MissingDiary);
        }
        public void GetDiaryByIdShouldReturnDiaryDetailsModelWithCorrectId()
        {
            //arrange

            var diary = new GetShreddedDiary
            {
                Title     = "One",
                Id        = 1,
                CreatedOn = DateTime.Now,
                Summary   = null,
                Type      = new DiaryType
                {
                    Id   = 1,
                    Name = "Cutting"
                },

                UserId = "1111"
            };

            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            var diaryService = GetService();

            var result = diaryService.GetDiaryById(1);

            result.Should().BeOfType <DiaryDetailsOutputModel>().And.Should().NotBeNull();
        }
        public void DiaryExistsShouldReturnTrue()
        {
            //arrange
            var diary = new GetShreddedDiary
            {
                Title     = "One",
                Id        = 1,
                CreatedOn = DateTime.Now,
                Summary   = null,
                Type      = new DiaryType
                {
                    Id   = 1,
                    Name = "Cutting"
                },

                UserId = "1111",
            };

            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            int diaryId = diary.Id;
            var exists  = this.Context.GetShreddedDiaries.Any(x => x.Id == diaryId);

            //assert

            exists.Should().BeTrue();
        }
        public void AddPageShouldAddNewPageToDiary()
        {
            //arrange

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = user,
                Summary = "Summary",
                Title   = "Title",
                UserId  = "UserId",
            };

            var page = new Page
            {
                Id                 = 2,
                Content            = "Content",
                UserId             = user.Id,
                GetShreddedUser    = user,
                GetShreddedDiary   = diary,
                GetShreddedDiaryId = diary.Id,
                Title              = "Title",
                CreatedOn          = DateTime.UtcNow
            };

            var newPage = new PageInputModel
            {
                User      = user.UserName,
                Content   = "Some New Content",
                CreatedOn = DateTime.Now,
                DiaryId   = diary.Id,
                Title     = "New Page"
            };

            userManager.CreateAsync(user).GetAwaiter();
            this.Context.Pages.Add(page);
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            this.pageService.AddPage(newPage);

            //assert

            var result = this.Context.Pages.OrderBy(x => x.CreatedOn).Last(x => x.GetShreddedDiaryId == diary.Id);

            result.Should().NotBeNull()
            .And.Subject.As <Page>()
            .Title.Should().BeSameAs(newPage.Title);
        }
示例#5
0
        public void DeleteCommentShouldDeleteComment()
        {
            //arrange

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******"
            };

            var type = new DiaryType
            {
                Id   = 1,
                Name = "Cutting"
            };

            var diary = new GetShreddedDiary
            {
                Title     = "One",
                Id        = 1,
                CreatedOn = DateTime.Now,
                Summary   = null,
                Type      = type,
                UserId    = "UserId"
            };

            var comment = new Comment
            {
                GetShreddedDiaryId = 1,
                GetShreddedUser    = user,
                GetShreddedDiary   = diary,
                CommentedOn        = DateTime.Now.Date,
                Message            = "Comment",
                GetShreddedUserId  = user.Id,
                Id = 1
            };

            var userManager =
                (UserManager <GetShreddedUser>) this.Provider.GetService(typeof(UserManager <GetShreddedUser>));

            userManager.CreateAsync(user).GetAwaiter();
            this.Context.Comments.Add(comment);
            this.Context.DiaryTypes.Add(type);
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act

            this.CommentService.DeleteComment(1);
            var result = this.Context.Comments.ToList();

            //assert

            result.Should().BeEmpty();
        }
        public void EditPageShouldEditPageContentOrTitle()
        {
            //arrange

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = user,
                Summary = "Summary",
                Title   = "Title",
                UserId  = "UserId",
            };

            var page = new Page
            {
                Id                 = 1,
                Content            = "Content",
                UserId             = user.Id,
                GetShreddedUser    = user,
                GetShreddedDiary   = diary,
                GetShreddedDiaryId = diary.Id,
                Title              = "Title",
                CreatedOn          = DateTime.UtcNow
            };

            var record = new PageEditModel
            {
                User      = user.UserName,
                Content   = "Some New Content",
                CreatedOn = page.CreatedOn,
                Id        = page.Id,
                DiaryId   = diary.Id,
                Title     = "New Title"
            };

            userManager.CreateAsync(user).GetAwaiter();
            this.Context.Pages.Add(page);
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            this.pageService.EditPage(record);

            //assert
            var result = this.Context.Pages.ProjectTo <PageEditModel>().FirstOrDefault(x => x.Id == page.Id);

            result.Should().NotBeNull().And.Subject.Should().BeEquivalentTo(record);
        }
        public void GetPageToEditByIdShouldReturnThePageEditModelById()
        {
            //arrange

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = user,
                Summary = "Summary",
                Title   = "Title",
                UserId  = "UserId",
            };

            var page = new Page
            {
                Id                 = 1,
                Content            = "SomeContent",
                UserId             = user.Id,
                GetShreddedUser    = user,
                GetShreddedDiary   = diary,
                GetShreddedDiaryId = diary.Id,
                Title              = "Title",
                CreatedOn          = DateTime.UtcNow
            };

            var record = new PageEditModel
            {
                User      = user.UserName,
                Content   = page.Content,
                CreatedOn = page.CreatedOn,
                Id        = page.Id,
                DiaryId   = diary.Id,
                Title     = page.Title
            };

            userManager.CreateAsync(user).GetAwaiter();
            this.Context.Pages.Add(page);
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            int pageId = page.Id;
            var result = this.pageService.GetPageToEditById(pageId);

            //assert
            result.Should().NotBeNull().And.Subject.Should().BeEquivalentTo(record);
        }
        public void AddRatingShouldThrowExceptionIfAlreadyRatedIsTrue()
        {
            //arrange
            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = null,
                Summary = "Summary",
                Title   = "Title"
            };

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            var rating = new DiaryRating
            {
                Rating            = 8,
                GetShreddedUserId = user.Id,
                Id = 1,
                GetShreddedUser = user
            };

            var diaryRating = new GetShreddedRating
            {
                GetShreddedDiaryId = diary.Id,
                DiaryRatingId      = rating.Id,
                GetShreddedDiary   = diary,
                DiaryRating        = rating
            };

            var usermanager = this.Provider.GetRequiredService <UserManager <GetShreddedUser> >();

            usermanager.CreateAsync(user).GetAwaiter();

            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.DiaryRatings.Add(rating);
            this.Context.GetShreddedRatings.Add(diaryRating);
            this.Context.SaveChanges();

            //act

            var diaryService = GetService();

            Action act = () => diaryService.AddRating(diary.Id, 1, user.UserName);

            //assert
            act.Should().Throw <InvalidOperationException>().WithMessage(GlobalConstants.AlreadyRated);
        }
        public void DeleteDiaryShouldBeSuccessfulForAdmin()
        {
            //arrange
            var firstUser = new GetShreddedUser
            {
                Id       = "FirstId",
                UserName = "******",
            };
            var secondUser = new GetShreddedUser
            {
                Id       = "SecondId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = null,
                Summary = "Summary",
                Title   = "Title",
                UserId  = secondUser.Id,
            };

            var role = new IdentityRole {
                Name = "admin"
            };

            var usermanager = this.Provider.GetRequiredService <UserManager <GetShreddedUser> >();
            var roleManager = this.Provider.GetRequiredService <RoleManager <IdentityRole> >();

            usermanager.CreateAsync(secondUser).GetAwaiter();
            usermanager.CreateAsync(firstUser).GetAwaiter();
            roleManager.CreateAsync(role).GetAwaiter();

            usermanager.AddToRoleAsync(firstUser, "admin").GetAwaiter();

            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            var diaryService = GetService();

            diaryService.DeleteDiary(diary.Id, firstUser.UserName).GetAwaiter();

            //assert

            var result = this.Context.GetShreddedDiaries.FirstOrDefault();

            result.Should().BeNull();
        }
        public async Task FollowShouldCreateUserDiaryEntityInDatabase()
        {
            //arrange

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = null,
                Summary = "Summary",
                Title   = "Title"
            };

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            this.Context.GetShreddedDiaries.Add(diary);

            var usermanager = this.Provider.GetRequiredService <UserManager <GetShreddedUser> >();
            await usermanager.CreateAsync(user);

            this.Context.SaveChanges();

            //act
            var diaryService = GetService();

            var diaryId  = diary.Id;
            var username = user.UserName;
            var userId   = user.Id;
            await diaryService.Follow(username, userId, diaryId);

            //assert

            var result = this.Context.GetShreddedUserDiaries.FirstOrDefault();

            var userDiary = new GetShreddedUserDiary
            {
                GetShreddedUserId  = user.Id,
                GetShreddedDiaryId = diary.Id
            };

            result.Should().BeOfType <GetShreddedUserDiary>().And.Subject.Should().Equals(userDiary);
        }
        public async Task AddRatingShouldAddRatingToADiary()
        {
            //arrange

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = null,
                Summary = "Summary",
                Title   = "Title"
            };

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            var usermanager = this.Provider.GetRequiredService <UserManager <GetShreddedUser> >();
            await usermanager.CreateAsync(user);

            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();
            //act

            var diaryService = GetService();

            diaryService.AddRating(diary.Id, 10, user.UserName);

            //assert

            var diaryRating = new GetShreddedRating
            {
                GetShreddedDiaryId = 1,
                DiaryRatingId      = 1
            };

            var result = this.Context.GetShreddedRatings.FirstOrDefault();

            result.Should().NotBeNull().And.
            Subject.Should()
            .BeOfType <GetShreddedRating>().And.Should()
            .BeEquivalentTo(diaryRating, opt => opt.ExcludingMissingMembers());
        }
        public async Task FollowShouldThrowOperationExceptionWhenTryToAddDuplicateEntity()
        {
            //arrange

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = null,
                Summary = "Summary",
                Title   = "Title"
            };

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            this.Context.GetShreddedDiaries.Add(diary);

            var usermanager = this.Provider.GetRequiredService <UserManager <GetShreddedUser> >();
            await usermanager.CreateAsync(user);

            this.Context.SaveChanges();

            //act
            var storyService = GetService();

            var diaryId  = diary.Id;
            var username = user.UserName;
            var userId   = user.Id;
            await storyService.Follow(username, userId, diaryId);

            //assert

            Action act = () => storyService.Follow(username, userId, diaryId).GetAwaiter().GetResult();

            string message = string.Join(GlobalConstants.AlreadyFollow, user.UserName);

            act.Should().Throw <InvalidOperationException>().WithMessage(message);
        }
        public void DeleteDiaryShouldThrowExceptionWithAdminAndUserBoolsFalse()
        {
            //arrange
            var firstUser = new GetShreddedUser
            {
                Id       = "FirstId",
                UserName = "******",
            };
            var secondUser = new GetShreddedUser
            {
                Id       = "SecondId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = null,
                Summary = "Summary",
                Title   = "Title",
                UserId  = secondUser.Id,
            };

            var usermanager = this.Provider.GetRequiredService <UserManager <GetShreddedUser> >();

            usermanager.CreateAsync(firstUser).GetAwaiter();
            usermanager.CreateAsync(secondUser).GetAwaiter();

            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            var         diaryService = GetService();
            Func <Task> act          = async() => await diaryService.DeleteDiary(diary.Id, firstUser.UserName);

            //assert

            act.Should().Throw <OperationCanceledException>();
        }
        public void AllUsers_Should_Return_Correct_Info_Per_User()
        {
            //arrange
            var firstUser = new GetShreddedUser
            {
                Id       = "FirstUserId",
                UserName = "******",
            };

            var secondUser = new GetShreddedUser
            {
                Id       = "SecondUserId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = null,
                Summary = "Summary",
                Title   = "Title",
                UserId  = firstUser.Id,
            };

            var comments = new[]
            {
                new Comment
                {
                    GetShreddedUser = firstUser,
                    Id = 1,
                    GetShreddedUserId  = firstUser.Id,
                    GetShreddedDiaryId = diary.Id,
                    GetShreddedDiary   = diary,
                    Message            = "FirstMessage"
                },
                new Comment
                {
                    GetShreddedUser = firstUser,
                    Id = 2,
                    GetShreddedUserId  = firstUser.Id,
                    GetShreddedDiaryId = diary.Id,
                    GetShreddedDiary   = diary,
                    Message            = "SecondMessage"
                },
            };

            var messages = new[]
            {
                new Message
                {
                    Id         = 1,
                    IsReaded   = false,
                    Receiver   = firstUser,
                    ReceiverId = firstUser.Id,
                    Sender     = secondUser,
                    SenderId   = secondUser.Id
                },
                new Message
                {
                    Id         = 2,
                    IsReaded   = true,
                    Receiver   = firstUser,
                    ReceiverId = firstUser.Id,
                    Sender     = secondUser,
                    SenderId   = secondUser.Id
                },
                new Message
                {
                    Id         = 3,
                    IsReaded   = false,
                    Receiver   = secondUser,
                    ReceiverId = secondUser.Id,
                    Sender     = firstUser,
                    SenderId   = firstUser.Id
                },
                new Message
                {
                    Id         = 4,
                    IsReaded   = true,
                    Receiver   = secondUser,
                    ReceiverId = secondUser.Id,
                    Sender     = firstUser,
                    SenderId   = firstUser.Id
                }
            };

            this.userManager.CreateAsync(secondUser).GetAwaiter();
            this.userManager.CreateAsync(firstUser).GetAwaiter();
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.Comments.AddRange(comments);
            this.Context.Messages.AddRange(messages);
            this.Context.SaveChanges();

            //act
            var result = this.adminService.AllUsers().GetAwaiter().GetResult();

            int indexToTakeFrom = 0;
            var userToCompare   = result?.ElementAt(indexToTakeFrom);
            //assert
            int totalUserDiaries = 1;

            var expectedAuthorOutput = new UserAdminOutputModel
            {
                Id           = firstUser.Id,
                Comments     = comments.Length,
                MessageCount = messages.Length,
                Username     = firstUser.UserName,
                Diaries      = totalUserDiaries,
                Role         = GlobalConstants.DefaultRole
            };

            userToCompare.Should().NotBeNull()
            .And.Subject.Should().BeEquivalentTo(expectedAuthorOutput);
        }
        public void DeletePageShouldThrowArgumentException()
        {
            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = user,
                Summary = "Summary",
                Title   = "Title",
                UserId  = "UserId",
            };

            var diaryTwo = new GetShreddedDiary
            {
                Id      = 2,
                User    = user,
                Summary = "Summary",
                Title   = "Title",
                UserId  = "UserId",
            };

            var pages = new[]
            {
                new Page
                {
                    Id = 1,
                    GetShreddedUser    = user,
                    GetShreddedDiary   = diary,
                    UserId             = user.Id,
                    GetShreddedDiaryId = diary.Id,
                    Content            = "Content",
                    Title     = "Title",
                    CreatedOn = DateTime.UtcNow
                },

                new Page
                {
                    Id = 2,
                    GetShreddedUser    = user,
                    GetShreddedDiary   = diaryTwo,
                    UserId             = user.Id,
                    GetShreddedDiaryId = diaryTwo.Id,
                    Content            = "Some New Content",
                    Title     = "New Page",
                    CreatedOn = DateTime.Now,
                }
            };

            userManager.CreateAsync(user).GetAwaiter();

            this.Context.Pages.AddRange(pages);
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.GetShreddedDiaries.Add(diaryTwo);
            this.Context.SaveChanges();

            //act
            int    diaryId  = diary.Id;
            int    pageId   = pages[1].Id;
            string username = user.UserName;
            Action act      = () => this.pageService.DeletePage(diaryId, pageId, username);

            //assert
            string message = string.Join(GlobalConstants.NotValidPageDiaryConnection, diaryId, pageId);

            act.Should().Throw <ArgumentException>().WithMessage(message);
        }
        public void DeletePageShouldThrowInvalidOperationException()
        {
            //arrange
            var firstUser = new GetShreddedUser
            {
                Id       = "FirstUserId",
                UserName = "******",
            };

            var secondUser = new GetShreddedUser
            {
                Id       = "SecondUserId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = secondUser,
                Summary = "Summary",
                Title   = "Title",
                UserId  = "UserId",
            };

            var pages = new[]
            {
                new Page
                {
                    Id = 1,
                    GetShreddedUser    = secondUser,
                    GetShreddedDiary   = diary,
                    UserId             = secondUser.Id,
                    GetShreddedDiaryId = diary.Id,
                    Content            = "Content",
                    Title     = "Title",
                    CreatedOn = DateTime.UtcNow
                },

                new Page
                {
                    Id = 2,
                    GetShreddedUser    = secondUser,
                    GetShreddedDiary   = diary,
                    UserId             = secondUser.Id,
                    GetShreddedDiaryId = diary.Id,
                    Content            = "Some New Content",
                    Title     = "New Page",
                    CreatedOn = DateTime.Now,
                }
            };

            var role = new IdentityRole
            {
                Name = GlobalConstants.DefaultRole
            };

            roleManager.CreateAsync(role).GetAwaiter();
            userManager.CreateAsync(secondUser).GetAwaiter();
            userManager.CreateAsync(firstUser).GetAwaiter();

            this.Context.Pages.AddRange(pages);
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            int    diaryId  = diary.Id;
            int    pageId   = pages[0].Id;
            string username = firstUser.UserName;

            Action act = () => this.pageService.DeletePage(diaryId, pageId, username);

            //assert
            string message = GlobalConstants.UserHasNoRights + " " + GlobalConstants.NotUser;

            act.Should().Throw <InvalidOperationException>().WithMessage(message);
        }
        public void DeletePageUserShouldDeletePage()
        {
            //arrange

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******",
            };

            var diary = new GetShreddedDiary
            {
                Id      = 1,
                User    = user,
                Summary = "Summary",
                Title   = "Title",
                UserId  = "UserId",
            };

            var pages = new[]
            {
                new Page
                {
                    Id = 1,
                    GetShreddedUser    = user,
                    GetShreddedDiary   = diary,
                    UserId             = user.Id,
                    GetShreddedDiaryId = diary.Id,
                    Content            = "Content",
                    Title     = "Title",
                    CreatedOn = DateTime.UtcNow
                },

                new Page
                {
                    Id = 2,
                    GetShreddedUser    = user,
                    GetShreddedDiary   = diary,
                    UserId             = user.Id,
                    GetShreddedDiaryId = diary.Id,
                    Content            = "Some New Content",
                    Title     = "New Page",
                    CreatedOn = DateTime.Now,
                }
            };

            var role = new IdentityRole
            {
                Name = GlobalConstants.Admin
            };

            roleManager.CreateAsync(role).GetAwaiter();
            userManager.CreateAsync(user).GetAwaiter();

            this.Context.Pages.AddRange(pages);
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act
            int    diaryId  = diary.Id;
            int    pageId   = pages[0].Id;
            string username = user.UserName;

            this.pageService.DeletePage(diaryId, pageId, username);

            //assert
            var result   = this.Context.Pages.First();
            var pageLeft = pages[1];

            result.Should().NotBeNull()
            .And.Subject.As <Page>().Title.Should().BeEquivalentTo(pageLeft.Title);
        }
        public void DiariesShouldReturnAllDiariesFromDatabase()
        {
            //arrange
            var firstUser = new GetShreddedUser
            {
                UserName = "******",
            };

            var secondUser = new GetShreddedUser
            {
                UserName = "******",
            };

            this.UserManager.CreateAsync(firstUser).GetAwaiter();
            this.UserManager.CreateAsync(secondUser).GetAwaiter();

            var diaries = new GetShreddedDiary[]
            {
                new GetShreddedDiary
                {
                    Title     = "One",
                    Id        = 1,
                    CreatedOn = DateTime.Now,
                    Summary   = null,
                    Type      = new DiaryType
                    {
                        Id   = 1,
                        Name = "Cutting"
                    },

                    UserId = secondUser.Id
                },

                new GetShreddedDiary
                {
                    Title     = "Two",
                    Id        = 2,
                    CreatedOn = DateTime.Now.AddMonths(1),
                    Summary   = null,
                    Type      = new DiaryType
                    {
                        Id   = 2,
                        Name = "Bulking"
                    },

                    UserId = secondUser.Id
                },

                new GetShreddedDiary
                {
                    Title     = "Three",
                    Id        = 3,
                    CreatedOn = DateTime.Now.AddDays(2),
                    Summary   = null,
                    Type      = new DiaryType
                    {
                        Id   = 3,
                        Name = "Shredded"
                    },

                    UserId = firstUser.Id
                },
            };

            this.Context.GetShreddedDiaries.AddRange(diaries);
            this.Context.SaveChanges();
            //act

            var result = this.ApiService.Diaries();

            //assert

            int count = diaries.Length;

            result.Should().NotBeEmpty()
            .And.HaveCount(count)
            .And.AllBeOfType <ApiGetShreddedDiaryOutputModel>();
        }
        public void UsersShouldReturnOnlyUsersWithDiaries()
        {
            //arrange

            var firstUser = new GetShreddedUser
            {
                UserName = "******",
            };

            var secondUser = new GetShreddedUser
            {
                UserName = "******",
            };

            this.UserManager.CreateAsync(firstUser).GetAwaiter();
            this.UserManager.CreateAsync(secondUser).GetAwaiter();

            var diaries = new GetShreddedDiary[]
            {
                new GetShreddedDiary
                {
                    Title     = "One",
                    Id        = 1,
                    CreatedOn = DateTime.Now,
                    Summary   = null,
                    Type      = new DiaryType
                    {
                        Id   = 1,
                        Name = "Cutting"
                    },

                    UserId = secondUser.Id
                },

                new GetShreddedDiary
                {
                    Title     = "Two",
                    Id        = 2,
                    CreatedOn = DateTime.Now.AddMonths(1),
                    Summary   = null,
                    Type      = new DiaryType
                    {
                        Id   = 2,
                        Name = "Bulking"
                    },

                    UserId = secondUser.Id
                },

                new GetShreddedDiary
                {
                    Title     = "Three",
                    Id        = 3,
                    CreatedOn = DateTime.Now.AddDays(2),
                    Summary   = null,
                    Type      = new DiaryType
                    {
                        Id   = 3,
                        Name = "Shredded"
                    },

                    UserId = "3333"
                },
            };

            this.Context.GetShreddedDiaries.AddRange(diaries);
            this.Context.SaveChanges();

            //act

            var result = this.ApiService.Users();

            //assert

            result.Should().NotBeEmpty().And.HaveCount(1)
            .And.Subject.As <IEnumerable <ApiUserOutputModel> >().First()
            .Username.Should().Be(secondUser.UserName);

            result.First()
            .Diaries.Should().NotBeEmpty()
            .And.HaveCount(2).And.BeOfType <List <ApiGetShreddedDiaryOutputModel> >();
        }
        public void CurrentDiariesWithTypeNullShouldReturnOnlyOneTypeDiaries()
        {
            //arrange
            var diaries = new GetShreddedDiary[]
            {
                new GetShreddedDiary
                {
                    Title     = "One",
                    Id        = 1,
                    CreatedOn = DateTime.Now,
                    Summary   = null,
                    Type      = new DiaryType
                    {
                        Id   = 1,
                        Name = "Cutting"
                    },

                    UserId = "1111"
                },

                new GetShreddedDiary
                {
                    Title     = "Two",
                    Id        = 2,
                    CreatedOn = DateTime.Now.AddMonths(1),
                    Summary   = null,
                    Type      = new DiaryType
                    {
                        Id   = 2,
                        Name = "Bulking"
                    },

                    UserId = "2222"
                },

                new GetShreddedDiary
                {
                    Title     = "Three",
                    Id        = 3,
                    CreatedOn = DateTime.Now.AddDays(2),
                    Summary   = null,
                    Type      = new DiaryType
                    {
                        Id   = 3,
                        Name = "Shredded"
                    },

                    UserId = "3333"
                },
            };

            this.Context.GetShreddedDiaries.AddRange(diaries);
            this.Context.SaveChanges();

            //act
            string diaryType    = "Cutting";
            var    diaryService = GetService();
            var    result       = diaryService.CurrentDiaries(diaryType);

            //assert
            result.Should().NotBeEmpty()
            .And.ContainSingle(x => x.Type.Type == "Cutting");
        }
        public void AddNotificationShouldSendToAllFollowersNotificationForNewPage()
        {
            //arrange
            var notificationUserOne = new GetShreddedUser
            {
                Id       = "OneId",
                UserName = "******"
            };

            var notificationUserTwo = new GetShreddedUser
            {
                Id       = "TwoId",
                UserName = "******"
            };

            var diary = new GetShreddedDiary
            {
                Title     = "One",
                Id        = 1,
                CreatedOn = DateTime.Now,
                Summary   = null,
                Type      = new DiaryType
                {
                    Id   = 1,
                    Name = "Cutting"
                },

                UserId = "1111",
            };

            var userDiaryOne = new GetShreddedUserDiary
            {
                GetShreddedUserId = notificationUserOne.Id,

                GetShreddedDiaryId = diary.Id
            };

            var userDiaryTwo = new GetShreddedUserDiary
            {
                GetShreddedUserId = notificationUserTwo.Id,

                GetShreddedDiaryId = diary.Id
            };

            diary.Followers.Add(userDiaryOne);
            diary.Followers.Add(userDiaryTwo);

            userManager.CreateAsync(notificationUserOne).GetAwaiter().GetResult();
            userManager.CreateAsync(notificationUserTwo).GetAwaiter().GetResult();
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.GetShreddedUserDiaries.Add(userDiaryOne);
            this.Context.GetShreddedUserDiaries.Add(userDiaryTwo);
            this.Context.SaveChanges();

            //act
            int    diaryId    = diary.Id;
            string diaryTitle = diary.Title;

            this.notificationService.AddNotification(diaryId, null, diaryTitle);

            //assert
            var result = this.Context.GetShreddedUserDiaries.ToList();

            result.Should().NotBeEmpty().And.HaveCount(2);
            result[0].GetShreddedUser.Should().BeEquivalentTo(notificationUserOne);
            result[1].GetShreddedUser.Should().BeEquivalentTo(notificationUserTwo);
        }
示例#22
0
        public void DeleteAllCommentsForUserShouldDeleteAll()
        {
            //arrange

            var user = new GetShreddedUser
            {
                Id       = "UserId",
                UserName = "******"
            };

            var type = new DiaryType
            {
                Id   = 1,
                Name = "Cutting"
            };

            var diary = new GetShreddedDiary
            {
                Title     = "One",
                Id        = 1,
                CreatedOn = DateTime.Now,
                Summary   = null,
                ImageUrl  = GlobalConstants.DefaultNoImage,
                Type      = type,
                UserId    = "UserId"
            };

            var comments = new[]
            {
                new Comment
                {
                    GetShreddedDiaryId = 1,
                    GetShreddedUser    = user,
                    GetShreddedDiary   = diary,
                    CommentedOn        = DateTime.Now.Date,
                    Message            = "Comment",
                    GetShreddedUserId  = user.Id,
                    Id = 1
                },

                new Comment
                {
                    GetShreddedDiaryId = 1,
                    GetShreddedUser    = user,
                    GetShreddedDiary   = diary,
                    CommentedOn        = DateTime.Now.Date,
                    Message            = "CommentTwo",
                    GetShreddedUserId  = user.Id,
                    Id = 2
                }
            };

            var userManager =
                (UserManager <GetShreddedUser>) this.Provider.GetService(typeof(UserManager <GetShreddedUser>));

            userManager.CreateAsync(user).GetAwaiter();
            this.Context.Comments.AddRange(comments);
            this.Context.DiaryTypes.Add(type);
            this.Context.GetShreddedDiaries.Add(diary);
            this.Context.SaveChanges();

            //act

            string username = user.UserName;

            this.CommentService.DeleteAllComments(username);

            //assert
            var result = this.Context.Comments.ToList();

            result.Should().BeEmpty();
        }