コード例 #1
0
        public void DeleteAnnouncement_Should_Success()
        {
            var author = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Goshko Petkov"
            };

            var announcementInput = new AnnouncementInputModel()
            {
                Content = "newnew",
                Author  = author.UserName
            };

            var newAnnouncementId = this.adminService.AddAnnouncement(announcementInput);

            var announcement = this.Context.Announcements.Find(newAnnouncementId);

            this.adminService.DeleteAnnouncement(newAnnouncementId);

            var result = this.Context.Announcements.ToList();

            result.Should().BeEmpty()
            .And.Subject.Should().NotContain(announcement);
        }
コード例 #2
0
        public void SendMessage_Should_Success()
        {
            var sender = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Gosho Petkov"
            };

            var receiver = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Petko Goshov"
            };

            this.userManager.CreateAsync(sender).GetAwaiter();
            this.userManager.CreateAsync(receiver).GetAwaiter();
            this.Context.SaveChanges();

            var messageInput = new MessageInputModel
            {
                SenderName   = sender.UserName,
                ReceiverName = receiver.UserName,
                Message      = "ko staa we",
                SendDate     = DateTime.UtcNow
            };

            var newMessageId = this.messageService.SendMessage(messageInput);

            var result = this.Context.Messages.First();

            result.Should().NotBeNull()
            .And.Subject.As <Message>()
            .Id.Should().Be(newMessageId);
        }
コード例 #3
0
        public void FollowingCount_Should_Return_Correct()
        {
            var book = new Book()
            {
                Id      = "1",
                Author  = null,
                Summary = "summary",
                Title   = "title"
            };

            var user = new BookCreatorUser()
            {
                Id       = "123",
                Name     = "Papuncho Kunchev",
                UserName = "******"
            };

            this.Context.Books.Add(book);
            this.userManager.CreateAsync(user).GetAwaiter();
            this.Context.SaveChanges();

            var bookId   = book.Id;
            var userId   = user.Id;
            var username = user.UserName;

            bookService.Follow(username, userId, bookId).GetAwaiter().GetResult();

            var result = this.bookService.FollowingCount(book.Id);

            result.Should().BeGreaterThan(0);
        }
コード例 #4
0
        public async Task Unfollow_Should_Throw_Error_Missing_UserBook()
        {
            var book = new Book()
            {
                Id      = "1",
                Author  = null,
                Summary = "summary",
                Title   = "title"
            };

            var user = new BookCreatorUser()
            {
                Id       = "123",
                Name     = "Papuncho Kunchev",
                UserName = "******"
            };

            await userManager.CreateAsync(user);

            this.Context.Books.Add(book);
            this.Context.SaveChanges();

            var userId = user.Id;
            var bookId = book.Id;

            Func <Task> act = async() => await bookService.UnFollow(userId, bookId);

            await act.Should().ThrowAsync <ArgumentNullException>();
        }
コード例 #5
0
        public void AddComment_Should_Success()
        {
            var user = new BookCreatorUser
            {
                UserName = "******",
                Name     = "Georgi Goshkov"
            };

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

            var commentInput = new CommentInputModel
            {
                BookId        = "1",
                CommentAuthor = user.UserName,
                CommentedOn   = DateTime.UtcNow,
                Message       = "asd"
            };

            this.commentService.AddComment(commentInput);

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

            result.Should().NotBeNull()
            .And.Subject.As <Comment>()
            .Message.Should().Be(commentInput.Message);
        }
コード例 #6
0
        public void AddAnnouncement_Should_Success()
        {
            var user = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Goshko Petkov"
            };

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

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

            var newAnnouncement = new AnnouncementInputModel
            {
                Author  = user.UserName,
                Content = "new"
            };

            var newAnnouncementId = this.adminService.AddAnnouncement(newAnnouncement);

            var announcementCompareTo = new Announcement()
            {
                Id          = newAnnouncementId,
                AuthorId    = user.Id,
                Author      = user,
                Content     = newAnnouncement.Content,
                PublishedOn = DateTime.UtcNow
            };

            var result = this.Context.Announcements.Find(newAnnouncementId);

            result.Should().NotBeNull()
            .And.BeEquivalentTo(announcementCompareTo,
                                options => options.Excluding(x => x.PublishedOn));
        }
コード例 #7
0
        public void GetUsersCount_Should_Return_Correct_Count()
        {
            var user1 = new BookCreatorUser()
            {
                Id       = "1",
                UserName = "******",
                Name     = "Vankata Ivanov"
            };

            var user2 = new BookCreatorUser()
            {
                Id       = "2",
                UserName = "******",
                Name     = "Ivan Vankov"
            };

            this.userManager.CreateAsync(user1).GetAwaiter();
            this.userManager.CreateAsync(user2).GetAwaiter();
            this.Context.SaveChanges();

            var usersCount = 2;

            var result = this.adminService.GetUsersCount();

            result.Should().Be(usersCount);
        }
コード例 #8
0
        public void DeleteUser_Should_Throw_Error_User_NotFound()
        {
            var user1 = new BookCreatorUser()
            {
                Id       = "1",
                UserName = "******",
                Name     = "Vankata Ivanov"
            };

            var user2 = new BookCreatorUser()
            {
                Id       = "2",
                UserName = "******",
                Name     = "Ivan Vankov"
            };

            this.userManager.CreateAsync(user1).GetAwaiter();
            this.userManager.CreateAsync(user2).GetAwaiter();
            this.Context.SaveChanges();

            var         userIdToDelete = "asdasd";
            Func <Task> act            = async() => await this.adminService.DeleteUser(userIdToDelete);

            act.Should().Throw <ArgumentException>().WithMessage(GlobalConstants.ErrorOnDeleteUser);
        }
コード例 #9
0
        public void DeleteBook_Throw_Error_Lack_Rights()
        {
            var user = new BookCreatorUser()
            {
                Id       = "123",
                Name     = "Papuncho Kunchev",
                UserName = "******"
            };
            var author = new BookCreatorUser()
            {
                Id       = "321",
                Name     = "Kuncho Papunchev",
                UserName = "******"
            };

            var book = new Book()
            {
                Id       = "1",
                AuthorId = author.Id,
                Summary  = "summary",
                Title    = "title"
            };

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

            this.Context.Books.Add(book);
            this.Context.SaveChanges();

            Func <Task> act = async() => await bookService.DeleteBook(book.Id, user.UserName);

            act.Should().Throw <OperationCanceledException>();
        }
コード例 #10
0
        public void Register_Should_Fail_Duplicate_Username()
        {
            var registerModel = new RegisterInputModel()
            {
                Username        = "******",
                Name            = "Ivan Goshkov",
                Password        = "******",
                ConfirmPassword = "******",
                Email           = "*****@*****.**"
            };

            var user = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Goshko Ivanov",
                Email    = "*****@*****.**"
            };

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

            this.roleService.CreateAsync(new IdentityRole {
                Name = GlobalConstants.DefaultRole
            }).GetAwaiter();
            var result = this.userService.RegisterUser(registerModel).GetAwaiter().GetResult();

            result.Should().BeEquivalentTo(SignInResult.Failed);
        }
コード例 #11
0
        public void DeleteUser_Should_Success()
        {
            var user1 = new BookCreatorUser()
            {
                Id       = "1",
                UserName = "******",
                Name     = "Vankata Ivanov"
            };

            var user2 = new BookCreatorUser()
            {
                Id       = "2",
                UserName = "******",
                Name     = "Ivan Vankov"
            };

            this.userManager.CreateAsync(user1).GetAwaiter();
            this.userManager.CreateAsync(user2).GetAwaiter();
            this.Context.SaveChanges();

            this.adminService.DeleteUser(user1.Id);

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

            users.Should().ContainSingle()
            .And.Subject.Should().NotContain(user1);
        }
コード例 #12
0
        public void DeleteBook_Throw_Error_NonExisting_Book()
        {
            var admin = new BookCreatorUser()
            {
                Id       = "123",
                Name     = "Papuncho Kunchev",
                UserName = "******"
            };
            var author = new BookCreatorUser()
            {
                Id       = "321",
                Name     = "Kuncho Papunchev",
                UserName = "******"
            };

            userManager.CreateAsync(admin).GetAwaiter();
            userManager.CreateAsync(author).GetAwaiter();

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

            roleManager.CreateAsync(role).GetAwaiter();
            userManager.AddToRoleAsync(admin, role.Name).GetAwaiter();
            this.Context.SaveChanges();

            Func <Task> act = async() => await bookService.DeleteBook("1", admin.UserName);

            act.Should().ThrowAsync <InvalidOperationException>().Wait();
        }
コード例 #13
0
        public void IsBlocked_Should_Return_Correct_Result()
        {
            var user1 = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Ivan Goshkov1",
                Email    = "*****@*****.**"
            };
            var user2 = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Ivan Ivanov",
                Email    = "*****@*****.**"
            };

            this.userManager.CreateAsync(user1).GetAwaiter();
            this.userManager.CreateAsync(user2).GetAwaiter();
            this.Context.SaveChanges();

            this.userService.BlockUser(user1.UserName, user2.UserName).GetAwaiter().GetResult();

            var result = this.userService.IsBlocked(user1.UserName, user2.UserName);

            result.Should().BeTrue();
        }
コード例 #14
0
        public void Unblock_Should_Throw_Error()
        {
            var user1 = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Ivan Goshkov",
                Email    = "*****@*****.**"
            };
            var user2 = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Ivan Goshkov",
                Email    = "*****@*****.**"
            };

            this.userManager.CreateAsync(user1).GetAwaiter();
            this.userManager.CreateAsync(user2).GetAwaiter();
            this.Context.SaveChanges();

            var    bookCreatorId        = user1.Id;
            var    blockedBookCreatorId = user2.Id;
            Action act = () => this.userService.UnblockUser(bookCreatorId, blockedBookCreatorId);

            act.Should().Throw <InvalidOperationException>()
            .WithMessage(GlobalConstants.NoRecordInDb);
        }
コード例 #15
0
        public void AddNotification_Should_Success_When_NewChapter_Added()
        {
            var user1 = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Gosho Goshev"
            };

            var user2 = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Ivan Ivanov"
            };

            var book = new Book()
            {
                Id        = "1",
                Title     = "title1",
                Summary   = "summary1",
                CreatedOn = DateTime.UtcNow,
                ImageUrl  = GlobalConstants.NoImageAvailableUrl,
                Genre     = new BookGenre()
                {
                    Genre = "Horror"
                },
                AuthorId = "111"
            };

            var userBook1 = new UserBook()
            {
                UserId = user1.Id,
                BookId = book.Id
            };

            var userBook2 = new UserBook()
            {
                UserId = user2.Id,
                BookId = book.Id
            };

            book.Followers.Add(userBook1);
            book.Followers.Add(userBook2);

            userManager.CreateAsync(user1).GetAwaiter();
            userManager.CreateAsync(user2).GetAwaiter();

            this.Context.Books.Add(book);
            this.Context.UsersBooks.Add(userBook1);
            this.Context.UsersBooks.Add(userBook2);
            this.Context.SaveChanges();

            this.notificationService.AddNotification(book.Id, null, book.Title);

            var result = this.Context.UsersBooks.ToList();

            result.Should().NotBeEmpty().And.HaveCount(2);

            result[0].User.Should().BeEquivalentTo(user1);
            result[1].User.Should().BeEquivalentTo(user2);
        }
コード例 #16
0
        public async Task Follow_Throw_Error_Duplicate_Entity()
        {
            var book = new Book()
            {
                Id      = "1",
                Author  = null,
                Summary = "summary",
                Title   = "title"
            };

            var user = new BookCreatorUser()
            {
                Id       = "123",
                Name     = "Papuncho Kunchev",
                UserName = "******"
            };

            this.Context.Books.Add(book);
            await userManager.CreateAsync(user);

            this.Context.SaveChanges();

            var bookId   = book.Id;
            var userId   = user.Id;
            var username = user.UserName;
            await bookService.Follow(username, userId, bookId);

            Action act = () => bookService.Follow(username, userId, bookId).GetAwaiter().GetResult();

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

            act.Should().Throw <InvalidOperationException>().WithMessage(message);
        }
コード例 #17
0
        public void AdminModifyRole_Should_Success()
        {
            var user = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Goshko Petkov"
            };

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

            var roles = new[]
            {
                "admin",
                "user"
            };

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

            var result = this.adminService.AdminModifyRole(user.Id);

            result.Should().Equals(IdentityResult.Success);
        }
コード例 #18
0
        public void GetReceivedMessages_Should_Return_Success()
        {
            var sender = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Gosho Petkov"
            };

            var receiver = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Petko Goshov"
            };

            this.userManager.CreateAsync(sender).GetAwaiter();
            this.userManager.CreateAsync(receiver).GetAwaiter();
            this.Context.SaveChanges();

            var messages = new[]
            {
                new Message()
                {
                    Id         = "1",
                    IsRead     = false,
                    ReceiverId = receiver.Id,
                    SenderId   = sender.Id,
                    SentOn     = DateTime.UtcNow,
                    Text       = "asdasd"
                },
                new Message()
                {
                    Id         = "2",
                    IsRead     = false,
                    ReceiverId = receiver.Id,
                    SenderId   = sender.Id,
                    SentOn     = DateTime.UtcNow,
                    Text       = "qweqwewqe"
                },
                new Message()
                {
                    Id         = "1",
                    IsRead     = false,
                    ReceiverId = sender.Id,
                    SenderId   = receiver.Id,
                    SentOn     = DateTime.UtcNow,
                    Text       = "asdasd"
                },
            };

            var result = this.messageService.GetReceivedMessages(receiver.Id);

            var mappedMessages = Mapper.Map <IList <MessageOutputModel> >(messages);

            var expectedResult = mappedMessages.Take(2).ToList();

            result.Should().NotBeNull()
            .And.Subject.Equals(expectedResult);
            result.Should().Subject.Count().Equals(messages.Length - 1);
        }
コード例 #19
0
        public void DeleteChapter_Should_Throw_Error_NoRights()
        {
            var user1 = new BookCreatorUser
            {
                UserName = "******",
                Name     = "Gosho Ivanov"
            };
            var user2 = new BookCreatorUser
            {
                UserName = "******",
                Name     = "Gosho Ivanov"
            };

            this.userManager.CreateAsync(user1).GetAwaiter();
            this.userManager.CreateAsync(user2).GetAwaiter();
            this.Context.SaveChanges();

            var book = new Book
            {
                Id       = "1",
                Summary  = "asd",
                Title    = "asdasd",
                AuthorId = user2.Id
            };

            var chapters = new[]
            {
                new Chapter()
                {
                    Id        = "1",
                    AuthorId  = user2.Id,
                    BookId    = book.Id,
                    Title     = "asdasd",
                    Content   = "contentfsdf",
                    CreatedOn = DateTime.UtcNow
                },
                new Chapter()
                {
                    Id        = "2",
                    AuthorId  = user2.Id,
                    BookId    = book.Id,
                    Title     = "dasd",
                    Content   = "gdfgdfg",
                    CreatedOn = DateTime.UtcNow
                },
            };

            this.Context.Chapters.AddRange(chapters);
            this.Context.Books.Add(book);
            this.Context.SaveChanges();

            Action act = () => this.chapterService.DeleteChapter(book.Id, chapters[0].Id, user1.UserName);

            string message = GlobalConstants.UserHasNoRights + " " + GlobalConstants.NotAuthor;

            act.Should().Throw <InvalidOperationException>().WithMessage(message);
        }
コード例 #20
0
        public void AddChapter_Should_Success()
        {
            var user = new BookCreatorUser
            {
                UserName = "******",
                Name     = "Gosho Ivanov"
            };

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

            var book = new Book
            {
                Id       = "1",
                Summary  = "asd",
                Title    = "asdasd",
                AuthorId = user.Id
            };

            var chapter = new Chapter
            {
                Id        = "2",
                Content   = "content2",
                AuthorId  = user.Id,
                BookId    = book.Id,
                Title     = "title2",
                CreatedOn = DateTime.UtcNow
            };

            var chapterInputModel = new ChapterInputModel
            {
                Author    = user.UserName,
                BookId    = book.Id,
                Content   = "newnew",
                CreatedOn = DateTime.UtcNow,
                Title     = "newnewTitle"
            };

            this.Context.Chapters.Add(chapter);
            this.Context.Books.Add(book);
            this.Context.SaveChanges();

            var newChapterId = this.chapterService.AddChapter(chapterInputModel);

            var result = this.Context.Chapters.Find(newChapterId);

            result.Should().NotBeNull()
            .And.Subject.Should()
            .BeOfType <Chapter>();
        }
コード例 #21
0
        public void BlockedUsers_Should_Return_Correct_Count()
        {
            var user1 = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Ivan Goshkov",
                Email    = "*****@*****.**"
            };
            var user2 = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Ivan Goshkov",
                Email    = "*****@*****.**"
            };
            var user3 = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Ivan Goshkov",
                Email    = "*****@*****.**"
            };

            this.userManager.CreateAsync(user1).GetAwaiter();
            this.userManager.CreateAsync(user2).GetAwaiter();
            this.userManager.CreateAsync(user3).GetAwaiter();

            var blockedUsers = new[]
            {
                new BlockedUser()
                {
                    BookCreatorUser        = user1,
                    BlockedBookCreatorUser = user2
                },
                new BlockedUser()
                {
                    BookCreatorUser        = user1,
                    BlockedBookCreatorUser = user3
                }
            };

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

            var count  = blockedUsers.Length;
            var userId = user1.Id;
            var result = this.userService.BlockedUsers(userId);

            result.Should().NotBeNullOrEmpty()
            .And.HaveCount(count);
        }
コード例 #22
0
        public void DeleteComment_Should_Success()
        {
            var user = new BookCreatorUser
            {
                UserName = "******",
                Name     = "Georgi Goshkov"
            };

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

            var genre = new BookGenre()
            {
                Id    = "1",
                Genre = "Horror"
            };

            var book = new Book()
            {
                Id        = "1",
                Title     = "title1",
                CreatedOn = DateTime.UtcNow,
                Summary   = "summary1",
                ImageUrl  = GlobalConstants.NoImageAvailableUrl,
                Genre     = genre,
                AuthorId  = user.Id
            };

            var comment = new Comment()
            {
                Id          = "1",
                BookId      = book.Id,
                UserId      = user.Id,
                CommentedOn = DateTime.UtcNow,
                Message     = "asdasd"
            };

            this.Context.Comments.Add(comment);
            this.Context.Books.Add(book);
            this.Context.BooksGenres.Add(genre);
            this.Context.SaveChanges();

            this.commentService.DeleteComment(comment.Id);

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

            result.Should().BeEmpty();
        }
コード例 #23
0
        public void GetChapterToEdit_Return_ChapterEditModel_From_Id()
        {
            var user = new BookCreatorUser
            {
                UserName = "******",
                Name     = "Gosho Ivanov"
            };

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

            var book = new Book
            {
                Id       = "1",
                Summary  = "asd",
                Title    = "asdasd",
                AuthorId = user.Id
            };

            var chapter = new Chapter
            {
                Id        = "1",
                Content   = "content1",
                AuthorId  = user.Id,
                BookId    = book.Id,
                Title     = "title1",
                CreatedOn = DateTime.UtcNow
            };

            var chapterEditModel = new ChapterEditModel
            {
                Id        = chapter.Id,
                Author    = user.UserName,
                Content   = chapter.Content,
                CreatedOn = chapter.CreatedOn,
                BookId    = book.Id,
                Title     = chapter.Title
            };

            this.Context.Chapters.Add(chapter);
            this.Context.Books.Add(book);
            this.Context.SaveChanges();

            var result = this.chapterService.GetChapterToEdit(chapter.Id);

            result.Should().NotBeNull()
            .And.Subject.Should().Equals(chapterEditModel);
        }
コード例 #24
0
        public void GetNotifications_Should_Success()
        {
            var user = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Gosho Goshev"
            };

            var notifications = new[]
            {
                new Notification()
                {
                    Id            = "1",
                    UserId        = user.Id,
                    Seen          = true,
                    Message       = GlobalConstants.NotificationMessageNewChapter,
                    UpdatedBookId = "1"
                },
                new Notification()
                {
                    Id            = "2",
                    UserId        = user.Id,
                    Seen          = false,
                    Message       = GlobalConstants.NotificationMessageNewChapter,
                    UpdatedBookId = "2"
                },
            };

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

            var result       = this.notificationService.GetNotifications(user.Id).First();
            var notification = notifications[0];

            var expectedResult = new NotificationOutputModel
            {
                Id            = notification.Id,
                Message       = notification.Message,
                Seen          = notification.Seen,
                UpdatedBookId = notification.UpdatedBookId,
                Username      = notification.User.UserName
            };

            result.Should().NotBeNull()
            .And.Equals(expectedResult);
        }
コード例 #25
0
        public void CreateBook_Success_Without_Image()
        {
            var author = new BookCreatorUser()
            {
                Id       = "123",
                Name     = "Nagatomo Gazaki",
                UserName = "******"
            };

            var genre = new BookGenre()
            {
                Id    = "1",
                Genre = "Horror"
            };

            userManager.CreateAsync(author).GetAwaiter();
            this.Context.BooksGenres.Add(genre);
            this.Context.SaveChanges();

            var bookInputModel = new BookInputModel()
            {
                Author         = author.UserName,
                BookCoverImage = null,
                CreatedOn      = DateTime.UtcNow,
                Genre          = genre.Genre,
                Summary        = "summary",
                Title          = "title"
            };

            var result = bookService.CreateBook(bookInputModel).GetAwaiter().GetResult();

            var book = this.Context.Books.FirstOrDefault();

            result.Should().NotBeNull();
            book.Should().NotBeNull().And.Subject.Should().BeEquivalentTo(new
            {
                Id       = result,
                ImageUrl = GlobalConstants.NoImageAvailableUrl,
                bookInputModel.Title,
                Genre = new BookGenreOutputModel()
                {
                    Id        = "1",
                    GenreName = bookInputModel.Genre
                }
            }, options => options.ExcludingMissingMembers());
        }
コード例 #26
0
        public void GetName_Should_Return_Correct_Name()
        {
            var user = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Ivan Goshkov1",
                Email    = "*****@*****.**"
            };

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

            var result = this.userService.GetName(user.Id);

            result.Should().NotBeNull()
            .And.Subject.Should().Equals(user.Name);
        }
コード例 #27
0
        public void AllAnnouncements_Should_Return_Correct_Count()
        {
            var user = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Goshko Petkov"
            };

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

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

            var result = this.adminService.AllAnnouncements();

            var count = announcements.Length;

            result.Announcements.Should().NotBeEmpty()
            .And.HaveCount(count)
            .And.ContainItemsAssignableTo <AnnouncementOutputModel>();
        }
コード例 #28
0
        public void DeleteBook_Success_OnlyAdmin()
        {
            var admin = new BookCreatorUser()
            {
                Id       = "123",
                Name     = "Papuncho Kunchev",
                UserName = "******"
            };
            var author = new BookCreatorUser()
            {
                Id       = "321",
                Name     = "Kuncho Papunchev",
                UserName = "******"
            };

            var book = new Book()
            {
                Id       = "1",
                AuthorId = author.Id,
                Summary  = "summary",
                Title    = "title"
            };

            userManager.CreateAsync(admin).GetAwaiter();
            userManager.CreateAsync(author).GetAwaiter();

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

            roleManager.CreateAsync(role).GetAwaiter();
            userManager.AddToRoleAsync(admin, role.Name).GetAwaiter();

            this.Context.Books.Add(book);
            this.Context.SaveChanges();

            bookService.DeleteBook(book.Id, admin.UserName);

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

            result.Should().BeNull();
        }
コード例 #29
0
        public async Task AddRating_Should_Success()
        {
            var book = new Book()
            {
                Id      = "1",
                Author  = null,
                Summary = "summary",
                Title   = "title"
            };

            var user = new BookCreatorUser()
            {
                Id       = "123",
                Name     = "Papuncho Kunchev",
                UserName = "******"
            };

            await userManager.CreateAsync(user);

            this.Context.Books.Add(book);
            this.Context.SaveChanges();

            var bookId   = book.Id;
            var rating   = 9.5;
            var username = user.UserName;

            var ratingId = bookService.AddRating(bookId, rating, username);

            var bookRating = new BookRating()
            {
                RatingId = ratingId,
                BookId   = bookId
            };

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

            result.Should().NotBeNull()
            .And.Subject.Should()
            .BeOfType <BookRating>()
            .And.Should()
            .BeEquivalentTo(bookRating, x => x.ExcludingMissingMembers());
        }
コード例 #30
0
        public void AddRating_Should_Throw_Exception_AlreadyRated()
        {
            var book = new Book()
            {
                Id      = "1",
                Author  = null,
                Summary = "summary",
                Title   = "title"
            };

            var user = new BookCreatorUser()
            {
                Id       = "123",
                Name     = "Papuncho Kunchev",
                UserName = "******"
            };

            var rating = new UserRating()
            {
                Id     = "1",
                UserId = user.Id,
                Rating = 9.5
            };

            var bookRating = new BookRating()
            {
                RatingId = rating.Id,
                BookId   = book.Id
            };

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

            this.Context.Books.Add(book);
            this.Context.BooksRatings.Add(bookRating);
            this.Context.UsersRatings.Add(rating);
            this.Context.SaveChanges();

            Action act = () => bookService.AddRating(book.Id, 2.00, user.UserName);

            act.Should().Throw <InvalidOperationException>().WithMessage(GlobalConstants.AlreadyRated);
        }