コード例 #1
0
        public void CanSendMessage_Should_Return_True()
        {
            //arrange
            var sender = new FanFictionUser
            {
                Id       = "sender",
                UserName = "******"
            };
            var receiver = new FanFictionUser
            {
                Id       = "receiver",
                UserName = "******"
            };

            this.userManager.CreateAsync(receiver).GetAwaiter().GetResult();
            this.userManager.CreateAsync(sender).GetAwaiter().GetResult();
            this.Context.SaveChanges();
            //act
            string sendername   = sender.UserName;
            string receivername = receiver.UserName;

            var possible = this.messageService.CanSendMessage(sendername, receivername);

            //assert

            possible.Should().BeTrue();
        }
コード例 #2
0
        public void MessageSeen_Should_Change_Message_IsReaden_Property_To_True()
        {
            //arrange
            var user = new FanFictionUser
            {
                Id       = "user",
                UserName = "******"
            };

            var message = new Message
            {
                IsReaden   = false,
                ReceiverId = user.Id,
                Receiver   = user,
                Id         = 1,
                Text       = "It works?",
            };

            this.Context.Messages.Add(message);
            this.userManager.CreateAsync(user).GetAwaiter().GetResult();
            this.Context.SaveChanges();

            //act
            int messageId = message.Id;

            this.messageService.MessageSeen(messageId);

            //assert
            var result = this.Context.Messages.Find(messageId);

            result.Should().NotBeNull()
            .And.Subject.As <Message>().IsReaden
            .Should().BeTrue();
        }
コード例 #3
0
        public void RegisterUser_Should_Fail_With_Same_Username()
        {
            //arrange
            var toRegister = new RegisterInputModel
            {
                Nickname        = "NewUser",
                Password        = "******",
                ConfirmPassword = "******",
                Email           = "*****@*****.**",
                Username        = "******"
            };

            var user = new FanFictionUser
            {
                Nickname = "NewUserTwo",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            this.userManager.CreateAsync(user).GetAwaiter();
            this.Context.SaveChanges();
            //act
            this.roleService.CreateAsync(new IdentityRole {
                Name = GlobalConstants.DefaultRole
            }).GetAwaiter();
            var result = this.userService.RegisterUser(toRegister).GetAwaiter().GetResult();

            //assert

            result.Should().BeEquivalentTo(SignInResult.Failed);
        }
コード例 #4
0
        public void LogUser_Should_Return_Sucess()
        {
            //arrange
            var user = new FanFictionUser
            {
                UserName = "******",
                Nickname = "TestLogin",
            };
            string userPassword = "******";

            this.userManager.CreateAsync(user).GetAwaiter().GetResult();
            this.userManager.AddPasswordAsync(user, userPassword).GetAwaiter().GetResult();
            this.Context.SaveChanges();

            //act

            var loginUser = new LoginInputModel
            {
                Password = userPassword,
                Nickname = user.Nickname
            };

            var result = this.userService.LogUser(loginUser);

            //assert
            result.Should().BeEquivalentTo(SignInResult.Success);
        }
コード例 #5
0
        public void UnBlockUser_Should_Throw_Exception()
        {
            //arrange
            var user = new FanFictionUser
            {
                Nickname = "NewUser",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            var userOne = new FanFictionUser
            {
                Nickname = "NewUser2",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            this.userManager.CreateAsync(user).GetAwaiter();
            this.userManager.CreateAsync(userOne).GetAwaiter();
            this.Context.SaveChanges();

            //act
            string userId    = user.Id;
            string unblockId = userOne.Id;

            Action act = () => this.userService.UnblockUser(userId, unblockId);

            //assert

            act.Should().Throw <InvalidOperationException>()
            .WithMessage(GlobalConstants.NoRecordInDb);
        }
コード例 #6
0
        public void DeleteUser_Should_Throw_Argument_Exception()
        {
            //arrange
            var author = new FanFictionUser
            {
                Id       = "AuthorId",
                Nickname = "StoryAuthor",
                UserName = "******",
            };

            var user = new FanFictionUser
            {
                Id       = "userId",
                Nickname = "AnotherUser",
                UserName = "******",
            };

            this.userManager.CreateAsync(user).GetAwaiter();
            this.userManager.CreateAsync(author).GetAwaiter();
            this.Context.SaveChanges();

            //act
            string      userToDeleteId = "randomId";
            Func <Task> act            = async() => await this.adminService.DeleteUser(userToDeleteId);

            //assert
            act.Should().Throw <ArgumentException>().WithMessage(GlobalConstants.ErrorOnDeleteUser);
        }
コード例 #7
0
        public void DeleteUser_Should_Delete_User_By_Given_Id()
        {
            //arrange
            var author = new FanFictionUser
            {
                Id       = "AuthorId",
                Nickname = "StoryAuthor",
                UserName = "******",
            };

            var user = new FanFictionUser
            {
                Id       = "userId",
                Nickname = "AnotherUser",
                UserName = "******",
            };

            this.userManager.CreateAsync(user).GetAwaiter();
            this.userManager.CreateAsync(author).GetAwaiter();
            this.Context.SaveChanges();

            //act
            string userToDeleteId = author.Id;

            this.adminService.DeleteUser(userToDeleteId);

            //assert
            var users = this.Context.Users.ToList();

            users.Should().ContainSingle()
            .And.Subject.Should().NotContain(author);
        }
コード例 #8
0
        public void DeleteComment_Should_Delete_Comment()
        {
            //arrange

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

            var genre = new StoryType
            {
                Id   = 1,
                Name = "Fantasy"
            };

            var story = new FanFictionStory
            {
                Title     = "One",
                Id        = 1,
                CreatedOn = DateTime.Now,
                Summary   = null,
                ImageUrl  = GlobalConstants.DefaultNoImage,
                Type      = genre,
                AuthorId  = "user"
            };

            var comment = new Comment
            {
                StoryId         = 1,
                FanFictionUser  = user,
                FanFictionStory = story,
                CommentedOn     = DateTime.Now.Date,
                Message         = "SomeComment",
                UserId          = user.Id,
                Id = 1
            };

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

            userManager.CreateAsync(user).GetAwaiter();
            this.Context.Comments.Add(comment);
            this.Context.StoryTypes.Add(genre);
            this.Context.FictionStories.Add(story);
            this.Context.SaveChanges();

            //act

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

            //assert

            result.Should().BeEmpty();
        }
コード例 #9
0
        public void EditChapter_Should_Edit_Chapter_Content_Or_Title()
        {
            //arrange

            var someUser = new FanFictionUser
            {
                Id       = "AnotherUserId",
                Nickname = "ThirdUser",
                UserName = "******",
            };

            var story = new FanFictionStory
            {
                Id       = 1,
                Author   = someUser,
                Summary  = "some summary",
                Title    = "Story To test",
                AuthorId = "AnotherUserId",
            };

            var chapter = new Chapter
            {
                Id                = 1,
                Content           = "SomeContent",
                AuthorId          = someUser.Id,
                FanFictionUser    = someUser,
                FanFictionStory   = story,
                FanFictionStoryId = story.Id,
                Title             = "Test Chapter",
                CreatedOn         = DateTime.UtcNow
            };

            var record = new ChapterEditModel
            {
                Author    = someUser.UserName,
                Content   = "Some new content",
                CreatedOn = chapter.CreatedOn,
                Id        = chapter.Id,
                StoryId   = story.Id,
                Title     = "New Title"
            };

            userManager.CreateAsync(someUser).GetAwaiter();
            this.Context.Chapters.Add(chapter);
            this.Context.FictionStories.Add(story);
            this.Context.SaveChanges();

            //act
            this.chapterService.EditChapter(record);

            //assert
            var result = this.Context.Chapters.ProjectTo <ChapterEditModel>().FirstOrDefault(x => x.Id == chapter.Id);

            result.Should().NotBeNull().And.Subject.Should().BeEquivalentTo(record);
        }
コード例 #10
0
        public void AllAnnouncements_Should_Return_Correct_Number_Of_Announcements()
        {
            //arrange

            var user = new FanFictionUser
            {
                Id       = "userId",
                Nickname = "AnotherUser",
                UserName = "******",
            };

            var announcements = new[]
            {
                new Announcement
                {
                    Author     = user,
                    AuthorId   = user.Id,
                    Content    = "SomeAnnouncement1",
                    Id         = 1,
                    PublshedOn = DateTime.Now
                },
                new Announcement
                {
                    Author     = user,
                    AuthorId   = user.Id,
                    Content    = "SomeAnnouncement2",
                    Id         = 2,
                    PublshedOn = DateTime.Now
                },
                new Announcement
                {
                    Author     = user,
                    AuthorId   = user.Id,
                    Content    = "SomeAnnouncement3",
                    Id         = 3,
                    PublshedOn = DateTime.Now
                },
            };

            this.userManager.CreateAsync(user).GetAwaiter();
            this.Context.Announcements.AddRange(announcements);
            this.Context.SaveChanges();

            //act
            var result = this.adminService.AllAnnouncements();

            //assert
            int count = announcements.Length;

            result.Announcements.Should()
            .NotBeEmpty()
            .And.HaveCount(count)
            .And.ContainItemsAssignableTo <AnnouncementOutputModel>();
        }
コード例 #11
0
        public void GetChapterToEditById_Should_Return_The_ChapterEditModel_By_Id()
        {
            //arrange

            var someUser = new FanFictionUser
            {
                Id       = "AnotherUserId",
                Nickname = "ThirdUser",
                UserName = "******",
            };

            var story = new FanFictionStory
            {
                Id       = 1,
                Author   = someUser,
                Summary  = "some summary",
                Title    = "Story To test",
                AuthorId = "someUserId",
            };

            var chapter = new Chapter
            {
                Id                = 1,
                Content           = "SomeContent",
                AuthorId          = someUser.Id,
                FanFictionUser    = someUser,
                FanFictionStory   = story,
                FanFictionStoryId = story.Id,
                Title             = "Test Chapter",
                CreatedOn         = DateTime.UtcNow
            };

            var record = new ChapterEditModel
            {
                Author    = someUser.UserName,
                Content   = chapter.Content,
                CreatedOn = chapter.CreatedOn,
                Id        = chapter.Id,
                StoryId   = story.Id,
                Title     = chapter.Title
            };

            userManager.CreateAsync(someUser).GetAwaiter();
            this.Context.Chapters.Add(chapter);
            this.Context.FictionStories.Add(story);
            this.Context.SaveChanges();

            //act
            int chapterId = chapter.Id;
            var result    = this.chapterService.GetChapterToEditById(chapterId);

            //assert
            result.Should().NotBeNull().And.Subject.Should().BeEquivalentTo(record);
        }
コード例 #12
0
        public void BlockedUsers_Should_Return_Correct_Count()
        {
            //arrange
            var user = new FanFictionUser
            {
                Nickname = "NewUser",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            var userOne = new FanFictionUser
            {
                Nickname = "NewUser2",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            var userTwo = new FanFictionUser
            {
                Nickname = "NewUser3",
                Email    = "*****@*****.**",
                UserName = "******"
            };

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

            var blockedPairs = new[]
            {
                new BlockedUsers
                {
                    FanFictionUser = user,
                    BlockedUser    = userOne
                },
                new BlockedUsers
                {
                    FanFictionUser = user,
                    BlockedUser    = userTwo
                },
            };

            this.Context.BlockedUsers.AddRange(blockedPairs);
            this.Context.SaveChanges();

            //act
            int    count  = blockedPairs.Length;
            string userId = user.Id;
            var    result = this.userService.BlockedUsers(userId);

            //assert
            result.Should().NotBeNullOrEmpty()
            .And.HaveCount(count);
        }
コード例 #13
0
        public void CreateStory_Should_Work_Correct_With_Null_Iform_File()
        {
            //arrange
            var author = new FanFictionUser
            {
                Id       = "AuthorId",
                Nickname = "StoryAuthor",
                UserName = "******",
            };

            var genre = new StoryType
            {
                Id   = 1,
                Name = "fantasy"
            };
            var usermanager = this.Provider.GetRequiredService <UserManager <FanFictionUser> >();

            usermanager.CreateAsync(author).GetAwaiter();
            this.Context.StoryTypes.Add(genre);
            this.Context.SaveChanges();

            var newStory = new StoryInputModel
            {
                Author     = author.UserName,
                StoryImage = null,
                CreatedOn  = DateTime.Now,
                Genre      = "fantasy",
                Summary    = "someSummary",
                Title      = "NewStoryTitle",
            };

            //act
            var storyService = GetService();
            int result       = storyService.CreateStory(newStory).GetAwaiter().GetResult();

            var story = this.Context.FictionStories.First();

            //assert

            result.Should().BePositive().And.Subject.Should().Be(1);
            story.Should().NotBeNull().And.Subject.Should().BeEquivalentTo(new
            {
                Id       = 1,
                ImageUrl = GlobalConstants.DefaultNoImage,
                newStory.Title,
                Type = new StoryTypeOutputModel
                {
                    Id   = 1,
                    Type = newStory.Genre
                }
            }, options => options.ExcludingMissingMembers());
        }
コード例 #14
0
        public void DeleteStory_Should_Be_Successful_For_Admin()
        {
            //arrange
            var user = new FanFictionUser
            {
                Id       = "UserId",
                Nickname = "TestStory",
                UserName = "******",
            };
            var author = new FanFictionUser
            {
                Id       = "AuthorId",
                Nickname = "StoryAuthor",
                UserName = "******",
            };

            var story = new FanFictionStory
            {
                Id       = 1,
                Author   = null,
                Summary  = "some summary",
                Title    = "Story To test",
                AuthorId = author.Id,
            };

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

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

            usermanager.CreateAsync(author).GetAwaiter();
            usermanager.CreateAsync(user).GetAwaiter();
            roleManager.CreateAsync(role).GetAwaiter();

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

            this.Context.FictionStories.Add(story);
            this.Context.SaveChanges();

            //act
            var storyService = GetService();

            storyService.DeleteStory(story.Id, user.UserName).GetAwaiter();

            //assert

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

            result.Should().BeNull();
        }
コード例 #15
0
        public void Add_Rating_Should_Throw_Exception_If_AlreadyRated_Is_True()
        {
            //arrange
            var story = new FanFictionStory
            {
                Id      = 1,
                Author  = null,
                Summary = "some summary",
                Title   = "Story To test"
            };

            var user = new FanFictionUser
            {
                Id       = "UserId",
                Nickname = "TestStory",
                UserName = "******",
            };

            var rating = new StoryRating
            {
                Rating         = 8,
                UserId         = user.Id,
                Id             = 1,
                FanFictionUser = user
            };

            var storyRating = new FanFictionRating
            {
                FanFictionId    = story.Id,
                RatingId        = rating.Id,
                FanFictionStory = story,
                StoryRating     = rating
            };

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

            usermanager.CreateAsync(user).GetAwaiter();

            this.Context.FictionStories.Add(story);
            this.Context.StoryRatings.Add(rating);
            this.Context.FictionRatings.Add(storyRating);
            this.Context.SaveChanges();

            //act

            var storyService = GetService();

            Action act = () => storyService.AddRating(story.Id, 1, user.UserName);

            //assert
            act.Should().Throw <InvalidOperationException>().WithMessage(GlobalConstants.AlreadyRated);
        }
コード例 #16
0
        public void AddComment_Should_Add_Comment()
        {
            //arrange
            var user = new FanFictionUser
            {
                Id       = "user",
                UserName = "******"
            };

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

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

            //public int Id { get; set; }

            //public int StoryId { get; set; }

            //public string Author { get; set; }

            //public string Message { get; set; }

            //public DateTime CommentedOn { get; set; }

            var comment = new CommentInputModel
            {
                StoryId       = 1,
                CommentAuthor = "CommentingUser",
                CommentedOn   = DateTime.Now.Date,
                Message       = "SomeComment",
            };

            var commentOut = new CommentOutputModel
            {
                Id          = 1,
                Author      = "CommentingUser",
                CommentedOn = DateTime.Now.Date,
                Message     = "SomeComment",
                StoryId     = comment.StoryId
            };

            //act
            this.CommentService.AddComment(comment);

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

            var mappedResult = Mapper.Map <CommentOutputModel>(result);

            mappedResult.Should().BeEquivalentTo(commentOut);
        }
コード例 #17
0
        private async Task SeedRoles(
            UserManager <FanFictionUser> userManager,
            RoleManager <IdentityRole> roleManager)
        {
            await roleManager.CreateAsync(new IdentityRole
            {
                Name = GlobalConstants.Admin
            });

            await roleManager.CreateAsync(new IdentityRole
            {
                Name = GlobalConstants.Moderator
            });

            await roleManager.CreateAsync(new IdentityRole
            {
                Name = GlobalConstants.PaidUser
            });

            await roleManager.CreateAsync(new IdentityRole
            {
                Name = GlobalConstants.DefaultRole
            });

            var user = new FanFictionUser
            {
                UserName = "******",
                Email    = "*****@*****.**",
                Nickname = "ThatAdmin"
            };

            var normalUser = new FanFictionUser
            {
                UserName = "******",
                Email    = "*****@*****.**",
                Nickname = "NormalUser"
            };

            string normalUserPass = "******";
            string adminPass      = "******";

            await userManager.CreateAsync(user, adminPass);

            await userManager.CreateAsync(normalUser, normalUserPass);

            await userManager.AddToRoleAsync(user, GlobalConstants.Admin);

            await userManager.AddToRoleAsync(normalUser, GlobalConstants.DefaultRole);
        }
コード例 #18
0
        public void All_Message_Seen_Should_Change_For_All_Messages_IsReaden_To_True()
        {
            //arrange
            var user = new FanFictionUser
            {
                Id       = "user",
                UserName = "******"
            };

            var messages = new[]
            {
                new Message
                {
                    IsReaden   = false,
                    ReceiverId = user.Id,
                    Receiver   = user,
                    Id         = 1,
                    Text       = "It works?",
                },

                new Message
                {
                    IsReaden   = false,
                    ReceiverId = user.Id,
                    Receiver   = user,
                    Id         = 2,
                    Text       = "It works?two",
                }
            };

            this.Context.Messages.AddRange(messages);
            this.userManager.CreateAsync(user).GetAwaiter().GetResult();
            this.Context.SaveChanges();

            //act
            string username = user.UserName;

            this.messageService.AllMessagesSeen(username);

            //assert

            var messagesFromDb = this.Context.Messages.Where(x => x.ReceiverId == user.Id).ToArray();

            messagesFromDb
            .Select(
                x => x.IsReaden.Should()
                .NotBeFalse())
            .Should().HaveCount(2);
        }
コード例 #19
0
        public void Delete_Message_Should_Delete_Only_The_Message_With_Given_Id()
        {
            var user = new FanFictionUser
            {
                Id       = "user",
                UserName = "******"
            };

            var messages = new[]
            {
                new Message
                {
                    IsReaden   = false,
                    ReceiverId = user.Id,
                    Receiver   = user,
                    Id         = 1,
                    Text       = "It works?",
                },

                new Message
                {
                    IsReaden   = false,
                    ReceiverId = user.Id,
                    Receiver   = user,
                    Id         = 2,
                    Text       = "It works?two",
                }
            };

            this.Context.Messages.AddRange(messages);
            this.userManager.CreateAsync(user).GetAwaiter().GetResult();
            this.Context.SaveChanges();

            //act
            int messageId = messages[0].Id;

            this.messageService.DeleteMessage(messageId);

            //assert
            var messagesFromDb          = this.Context.Messages.Where(x => x.ReceiverId == user.Id).ToArray();
            int singleMessageIdShouldBe = 2;

            messagesFromDb.Should()
            .ContainSingle()
            .And.Subject.Should()
            .Contain(x => x.Id == singleMessageIdShouldBe);
        }
コード例 #20
0
        public async Task Follow_Should_Create_UserStory_Entity_In_Db()
        {
            //arrange

            var story = new FanFictionStory
            {
                Id      = 1,
                Author  = null,
                Summary = "some summary",
                Title   = "Story To test"
            };

            var user = new FanFictionUser
            {
                Id       = "UserId",
                Nickname = "TestStory",
                UserName = "******",
            };

            this.Context.FictionStories.Add(story);

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

            this.Context.SaveChanges();

            //act
            var storyService = GetService();

            var storyId  = story.Id;
            var username = user.UserName;
            var userId   = user.Id;
            await storyService.Follow(username, userId, storyId);

            //assert

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

            var userStory = new UserStory
            {
                FanfictionUserId  = user.Id,
                FanFictionStoryId = story.Id
            };

            result.Should().BeOfType <UserStory>().And.Subject.Should().Equals(userStory);
        }
コード例 #21
0
        public async Task UnFollow_Should_Remove_UserStoryLink_From_Db()
        {
            var story = new FanFictionStory
            {
                Id      = 1,
                Author  = null,
                Summary = "some summary",
                Title   = "Story To test"
            };

            var user = new FanFictionUser
            {
                Id       = "UserId",
                Nickname = "TestStory",
                UserName = "******",
            };

            var userStory = new UserStory
            {
                FanfictionUserId  = user.Id,
                FanFictionStoryId = story.Id
            };

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

            this.Context.FictionStories.Add(story);
            this.Context.UsersStories.Add(userStory);
            this.Context.SaveChanges();
            this.Context.Entry(userStory).State = EntityState.Detached;

            //act
            var storyService = GetService();

            var storyId = story.Id;
            var userId  = user.Id;

            storyService.UnFollow(userId, storyId).GetAwaiter().GetResult();

            //assert

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

            result.Should().BeNull();
        }
コード例 #22
0
        public void ChangeRole_Succeed_Role()
        {
            //arrange
            var roles = new[]
            {
                "admin",
                "superUser",
                "moderator",
                "user"
            };

            foreach (var currentRolename in roles)
            {
                var role = new IdentityRole
                {
                    Name = currentRolename
                };
                this.roleManager.CreateAsync(role).GetAwaiter();
            }

            var user = new FanFictionUser
            {
                Id       = "userId",
                Nickname = "AnotherUser",
                UserName = "******",
            };

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

            //act
            string newRole = roles[2];
            var    model   = new ChangingRoleModel
            {
                Id       = user.Id,
                AppRoles = roles,
                NewRole  = newRole,
                Nickname = user.Nickname,
                Role     = GlobalConstants.DefaultRole
            };
            var methodResult = this.adminService.ChangeRole(model);

            //assert
            methodResult.Should().Equals(IdentityResult.Failed());
        }
コード例 #23
0
        public async Task Add_Rating_Should_Add_Rating_To_A_Story()
        {
            //arrange

            var story = new FanFictionStory
            {
                Id      = 1,
                Author  = null,
                Summary = "some summary",
                Title   = "Story To test"
            };

            var user = new FanFictionUser
            {
                Id       = "UserId",
                Nickname = "TestStory",
                UserName = "******",
            };

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

            this.Context.FictionStories.Add(story);
            this.Context.SaveChanges();
            //act

            var storyService = GetService();

            storyService.AddRating(story.Id, 10, user.UserName);

            //assert

            var storyRating = new FanFictionRating
            {
                FanFictionId = 1,
                RatingId     = 1
            };

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

            result.Should().NotBeNull().And.
            Subject.Should()
            .BeOfType <FanFictionRating>().And.Should()
            .BeEquivalentTo(storyRating, opt => opt.ExcludingMissingMembers());
        }
コード例 #24
0
        public void Delete_All_Messages_Should_Delete_All_Messages_For_User()
        {
            //arrange
            var user = new FanFictionUser
            {
                Id       = "user",
                UserName = "******"
            };

            var messages = new[]
            {
                new Message
                {
                    IsReaden   = false,
                    ReceiverId = user.Id,
                    Receiver   = user,
                    Id         = 1,
                    Text       = "It works?",
                },

                new Message
                {
                    IsReaden   = false,
                    ReceiverId = user.Id,
                    Receiver   = user,
                    Id         = 2,
                    Text       = "It works?two",
                }
            };

            this.Context.Messages.AddRange(messages);
            this.userManager.CreateAsync(user).GetAwaiter().GetResult();
            this.Context.SaveChanges();

            //act
            string userId = user.Id;

            this.messageService.DeleteAllMessages(userId);

            //assert
            var messagesFromDb = this.Context.Messages.Where(x => x.ReceiverId == user.Id).ToArray();

            messagesFromDb.Should().BeEmpty();
        }
コード例 #25
0
        public void DeleteAllNotifications_Should_Remove_All_Notifications_For_User_By_Username()
        {
            //arrange
            var user = new FanFictionUser
            {
                Id       = "one",
                UserName = "******"
            };

            var notifications = new[]
            {
                new Notification
                {
                    FanFictionUser   = user,
                    FanFictionUserId = user.Id,
                    Seen             = false,
                    Message          = GlobalConstants.NotificationMessage,
                    UpdatedStoryId   = 1
                },
                new Notification
                {
                    FanFictionUser   = user,
                    FanFictionUserId = user.Id,
                    Seen             = false,
                    Message          = GlobalConstants.NotificationMessage,
                    UpdatedStoryId   = 2
                }
            };

            this.userManager.CreateAsync(user).GetAwaiter().GetResult();
            this.Context.Notifications.AddRange(notifications);
            this.Context.SaveChanges();

            //act
            string username = user.UserName;

            this.notificationService.DeleteAllNotifications(username);

            //assert
            var userNotifications = this.Context.Notifications.Count();
            int expectedCount     = 0;

            userNotifications.Should().Be(expectedCount);
        }
コード例 #26
0
        public void DeleteStory_Should_Throw_Exception_With_Admin_And_Author_Bools_False()
        {
            //arrange
            var user = new FanFictionUser
            {
                Id       = "UserId",
                Nickname = "TestStory",
                UserName = "******",
            };

            var someUser = new FanFictionUser
            {
                Id       = "AnotherUserId",
                Nickname = "ThirdUser",
                UserName = "******",
            };

            var story = new FanFictionStory
            {
                Id       = 1,
                Author   = someUser,
                Summary  = "some summary",
                Title    = "Story To test",
                AuthorId = "someUserId",
            };

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

            usermanager.CreateAsync(user).GetAwaiter();
            usermanager.CreateAsync(someUser).GetAwaiter();

            this.Context.FictionStories.Add(story);
            this.Context.SaveChanges();

            //act
            var         storyService = GetService();
            Func <Task> act          = async() => await storyService.DeleteStory(story.Id, user.UserName);

            //assert

            act.Should().Throw <OperationCanceledException>();
        }
コード例 #27
0
        public void BlockUser_Should_Work_Correctly()
        {
            //arrange
            var user = new FanFictionUser
            {
                Nickname = "NewUser",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            var userOne = new FanFictionUser
            {
                Nickname = "NewUser2",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            this.userManager.CreateAsync(user).GetAwaiter();
            this.userManager.CreateAsync(userOne).GetAwaiter();
            this.Context.SaveChanges();

            //act
            string currentUserName = user.UserName;
            string toBeBlocked     = userOne.UserName;

            this.userService.BlockUser(currentUserName, toBeBlocked).GetAwaiter();

            //assert

            var blockedFromDb = new BlockedUsers
            {
                FanFictionUser   = user,
                BlockedUser      = userOne,
                FanfictionUserId = user.Id,
                BlockedUserId    = userOne.Id
            };

            var blocked = this.Context.BlockedUsers.FirstOrDefault();

            blocked.Should().NotBeNull()
            .And.Subject.Should().BeEquivalentTo(blockedFromDb);
        }
コード例 #28
0
        public async Task Follow_Should_Throw_OperationException_When_Try_To_Add_Duplicate_Entity()
        {
            //arrange

            var story = new FanFictionStory
            {
                Id      = 1,
                Author  = null,
                Summary = "some summary",
                Title   = "Story To test"
            };

            var user = new FanFictionUser
            {
                Id       = "UserId",
                Nickname = "TestStory",
                UserName = "******",
            };

            this.Context.FictionStories.Add(story);

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

            this.Context.SaveChanges();

            //act
            var storyService = GetService();

            var storyId  = story.Id;
            var username = user.UserName;
            var userId   = user.Id;
            await storyService.Follow(username, userId, storyId);

            //assert

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

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

            act.Should().Throw <InvalidOperationException>().WithMessage(message);
        }
コード例 #29
0
        public void NewMessages_Should_Return_The_Count_Of_Messages_Where_Is_Readen_Is_False()
        {
            //arrange
            var user = new FanFictionUser
            {
                Id       = "user",
                UserName = "******"
            };

            var messages = new[]
            {
                new Message
                {
                    IsReaden   = false,
                    ReceiverId = user.Id,
                    Receiver   = user,
                    Id         = 1,
                    Text       = "It works?",
                },

                new Message
                {
                    IsReaden   = false,
                    ReceiverId = user.Id,
                    Receiver   = user,
                    Id         = 2,
                    Text       = "It works?two",
                }
            };

            this.Context.Messages.AddRange(messages);
            this.userManager.CreateAsync(user).GetAwaiter().GetResult();
            this.Context.SaveChanges();

            //act
            string userId        = user.Id;
            int    count         = this.messageService.NewMessages(userId);
            int    expectedCount = messages.Count();

            //assert
            count.Should().BePositive().And.Subject.Should().Be(expectedCount);
        }
コード例 #30
0
        public void UnBlockUser_Should_Work_Correctly()
        {
            //arrange
            var user = new FanFictionUser
            {
                Nickname = "NewUser",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            var userOne = new FanFictionUser
            {
                Nickname = "NewUser2",
                Email    = "*****@*****.**",
                UserName = "******"
            };

            var blocked = new BlockedUsers
            {
                FanFictionUser   = user,
                BlockedUser      = userOne,
                FanfictionUserId = user.Id,
                BlockedUserId    = userOne.Id
            };

            this.userManager.CreateAsync(user).GetAwaiter();
            this.userManager.CreateAsync(userOne).GetAwaiter();
            this.Context.BlockedUsers.Add(blocked);
            this.Context.SaveChanges();

            //act
            string userId    = user.Id;
            string unblockId = userOne.Id;

            this.userService.UnblockUser(userId, unblockId);

            //assert
            var blockedFromDb = this.Context.BlockedUsers;

            blockedFromDb.Should().BeNullOrEmpty();
        }