Exemplo n.º 1
0
        public void GetTopQuestion_Must_Return_Question_With_Highest_Rated_Question_By_Category()
        {
            // Testing with 2 categories
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser1          = StaticMethods.GetTestUser();
            var testUser2          = StaticMethods.GetTestUser();
            var testQBM1           = GetTestQuestionBM(Category.AndroidDevelopment);
            var testQBM2           = GetTestQuestionBM(Category.AndroidDevelopment);
            var testQBM3           = GetTestQuestionBM(Category.C);
            var testQBM4           = GetTestQuestionBM(Category.C);

            //Act
            db.Users.Add(testUser1);
            db.SaveChanges();
            var addedQuestion1 = discussionsService.AddQuestion(testQBM1, testUser1);
            var addedQuestion2 = discussionsService.AddQuestion(testQBM2, testUser1);
            var addedQuestion3 = discussionsService.AddQuestion(testQBM3, testUser1);
            var addedQuestion4 = discussionsService.AddQuestion(testQBM4, testUser1);

            discussionsService.RateQuestion(GetTestQuestionRatingBMRatingUp(addedQuestion1), testUser2);
            discussionsService.RateQuestion(GetTestQuestionRatingBMRatingDown(addedQuestion2), testUser2);

            discussionsService.RateQuestion(GetTestQuestionRatingBMRatingUp(addedQuestion3), testUser2);
            discussionsService.RateQuestion(GetTestQuestionRatingBMRatingDown(addedQuestion4), testUser2);

            var result = discussionsService.GetTopQuestions();

            //Assert
            Assert.True(result.Count == 2);
            Assert.True(result[0].QuestionId == addedQuestion1.Id);
            Assert.True(result[1].QuestionId == addedQuestion3.Id);
        }
Exemplo n.º 2
0
        public void GetUserAnswersVM_Must_Return_Collection_Of_Answers_From_Given_User_Name()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testPublisher      = StaticMethods.GetTestUser();
            var testUser           = StaticMethods.GetTestUser("ChuckNorris", "*****@*****.**");
            var testQBM            = GetTestQuestionBM();

            //Act
            db.Users.Add(testUser);
            db.Users.Add(testPublisher);
            db.SaveChanges();
            var addedQuestion = discussionsService.AddQuestion(testQBM, testPublisher);
            var content1      = "First Test Answer";
            var answer1       = discussionsService.AddAnswer(content1, testUser, addedQuestion.Id);
            var content2      = "Second Test Answer";
            var answer2       = discussionsService.AddAnswer(content2, testUser, addedQuestion.Id);
            var result        = discussionsService.GetUserAnswersVM(testUser.Id);

            //Assert
            Assert.True(result.Count == 2);
            Assert.True(result.Any(x => x.Content == answer1.Content));
            Assert.True(result.Any(x => x.Content == answer2.Content));

            Assert.True(result.Any(x => x.PublishTime == answer1.PublishTime));
            Assert.True(result.Any(x => x.PublishTime == answer2.PublishTime));

            Assert.True(result.Any(x => x.QuestionId == addedQuestion.Id));
            Assert.True(result.Any(x => x.QuestionTitle == addedQuestion.Title));
        }
Exemplo n.º 3
0
        public void GetUserQuestionsVM_Must_Return_Collection_Of_Answers_From_Given_User_Name()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM1           = GetTestQuestionBM(Category.AndroidDevelopment);
            var testQBM2           = GetTestQuestionBM(Category.C);

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion1 = discussionsService.AddQuestion(testQBM1, testUser);
            var addedQuestion2 = discussionsService.AddQuestion(testQBM2, testUser);
            var result         = discussionsService.GetUserQuestionsVM(testUser.Id);

            //Assert
            Assert.True(result.Count == 2);
            Assert.True(result.Any(x => x.Id == addedQuestion1.Id));
            Assert.True(result.Any(x => x.Id == addedQuestion2.Id));

            Assert.True(result.Any(x => x.Title == addedQuestion1.Title));
            Assert.True(result.Any(x => x.Title == addedQuestion2.Title));

            Assert.True(result.Any(x => x.Category == addedQuestion1.Category));
            Assert.True(result.Any(x => x.Category == addedQuestion2.Category));
        }
        public async Task CreateCommentAddsCorrectly()
        {
            // Arrange
            var commentsList     = this.GetComments();
            var expectedComments = commentsList.Count() + 1;

            var discussionList = this.GetDiscussions();
            var discussionId   = discussionList.FirstOrDefault().Id;

            var commentsRepoMock   = this.GetCommentMock(commentsList).Object;
            var discussionRepoMock = this.GetDiscussionMock(discussionList).Object;
            var commentService     = new DiscussionsService(discussionRepoMock, commentsRepoMock, this.commentVoteRepo, this.mediaRepo);

            var inputModel = new CommentInputModel()
            {
                Content      = "Hell yeah123",
                DiscussionId = discussionId,
            };

            // Act
            await commentService.CreateComment(inputModel.Content, "", inputModel.DiscussionId);

            // Assert
            Assert.Equal(expectedComments, commentsRepoMock.AllAsNoTracking().Count());
            Assert.Contains(commentsRepoMock.AllAsNoTracking().Where(x => x.DiscussionId == discussionId).ToList(), x => x.Content == inputModel.Content);
        }
Exemplo n.º 5
0
        public void GetUserDisLikedAnswersIdList_Must_Return_User_Liked_Answers_Ids_In_List()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();
            var content1           = "Test Answer";
            var content2           = "Test Answer";

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();

            var addedQuestion = discussionsService.AddQuestion(testQBM, testUser);

            var answer1 = discussionsService.AddAnswer(content1, testUser, addedQuestion.Id);
            var answer2 = discussionsService.AddAnswer(content2, testUser, addedQuestion.Id);

            //// Like First Answer
            var testAnswerRatingBM1 = GetTestAnswerRatingBMRatingDown(answer1, testUser);
            var ratedAnswer1        = discussionsService.RateAnswer(testAnswerRatingBM1, testUser);

            //// Like Secont Answer
            testAnswerRatingBM1 = GetTestAnswerRatingBMRatingDown(answer2, testUser);
            var ratedAnswer2 = discussionsService.RateAnswer(testAnswerRatingBM1, testUser);

            var userLikedAnswers = discussionsService.GetUserDisLikedAnswersIdList(testUser.Id);

            //Assert

            Assert.True(userLikedAnswers.Count == 2);
            Assert.True(userLikedAnswers.Contains(answer1.Id));
            Assert.True(userLikedAnswers.Contains(answer2.Id));
        }
Exemplo n.º 6
0
        public void EditQuestion_Must_Return_QuestionEditBM_Of_Given_Question()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM(Category.AndroidDevelopment);

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion = discussionsService.AddQuestion(testQBM, testUser);
            var editBM        = discussionsService.GetQuestionEditBindingModel(addedQuestion.Id, testUser.Id);

            editBM.Title    = "Testing buddy";
            editBM.Content  = "This must be long string i think";
            editBM.Category = Category.JavaScript;
            editBM.Tags     = editBM.Tags + " nice go back";
            var result = discussionsService.EditQuestion(editBM, testUser.Id);

            //Assert
            Assert.True(result.Id == addedQuestion.Id);
            Assert.True(result.Title == editBM.Title);
            Assert.True(result.Category == editBM.Category);

            Assert.True(result.Tags.Count == 4);
            Assert.True(result.Tags.Any(x => x.Name == "web"));
            Assert.True(result.Tags.Any(x => x.Name == "nice"));
            Assert.True(result.Tags.Any(x => x.Name == "go"));
            Assert.True(result.Tags.Any(x => x.Name == "back"));
        }
Exemplo n.º 7
0
        public void CreateInstanceOfDiscussionsServiceWhenParametersAreNotNull()
        {
            var mockedUnitOfWork = new Mock <IUnitOfWork>();
            var mockedRepository = new Mock <IRepository <Discussion> >();

            var dicussionService = new DiscussionsService(mockedRepository.Object, mockedUnitOfWork.Object);

            Assert.IsInstanceOf <DiscussionsService>(dicussionService);
        }
        public void ThrowArgumentNullExceptionWithProperMessageWhenDiscussionIsNull()
        {
            var mockedRepository   = new Mock <IRepository <Discussion> >();
            var mockedUnitOfWork   = new Mock <IUnitOfWork>();
            var discussionsService = new DiscussionsService(mockedRepository.Object, mockedUnitOfWork.Object);

            Assert.That(() => discussionsService.AddDiscussion(null),
                        Throws.ArgumentNullException.With.Message.Contains("discussion"));
        }
Exemplo n.º 9
0
        public void ThrowWhenUserIsNull()
        {
            var mockedUnitOfWork   = new Mock <IUnitOfWork>();
            var mockedRepository   = new Mock <IRepository <Discussion> >();
            var mockedDiscussion   = new Mock <Discussion>();
            var discussionsService = new DiscussionsService(mockedRepository.Object, mockedUnitOfWork.Object);

            Assert.That(() => discussionsService.RemoveUserFromDiscussion(mockedDiscussion.Object, null),
                        Throws.ArgumentNullException.With.Message.Contains("user"));
        }
        public void CallUnitOfWorkCommitMethodWhenDiscussionParameterIsValid()
        {
            var mockedRepository   = new Mock <IRepository <Discussion> >();
            var mockedUnitOfWork   = new Mock <IUnitOfWork>();
            var discussionsService = new DiscussionsService(mockedRepository.Object, mockedUnitOfWork.Object);
            var mockedDiscussion   = new Mock <Discussion>();

            discussionsService.AddDiscussion(mockedDiscussion.Object);

            mockedUnitOfWork.Verify(x => x.Commit(), Times.Once());
        }
Exemplo n.º 11
0
        public void GetUserAnswersVM_Must_Return_Empty_Collection_If_There_Isnt_User_With_User_Name()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testQBM            = GetTestQuestionBM();

            //Act
            var result = discussionsService.GetUserAnswersVM("ChuckNorris");

            //Assert
            Assert.True(result.Count == 0);
        }
Exemplo n.º 12
0
        public void GetAnswersViewModels_Must_Return_Empty_Collection_If_There_Isnt_Question_With_Given_Id()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testPublisher      = StaticMethods.GetTestUser();

            //Act
            db.Users.Add(testPublisher);
            db.SaveChanges();
            var result = discussionsService.GetAnswersViewModels(2312);

            //Assert
            Assert.True(result.Count == 0);
        }
Exemplo n.º 13
0
        public void AddAnswer_Must_Return_NULL_If_Publisher_Isnt_Registered()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();

            //Act
            var content    = "Test Answer";
            var nonUser    = StaticMethods.GetTestUser();
            var questionId = 10;
            var answer     = discussionsService.AddAnswer(content, nonUser, questionId);

            //Assert
            Assert.True(answer == null);
        }
Exemplo n.º 14
0
        public async Task GetTotalDiscussionsGetsProperCount()
        {
            // Arrange
            var discussionList  = this.GetDiscussions();
            var expectedMediaId = "2";
            var expectedCount   = discussionList.Count(x => x.MediaId == expectedMediaId);

            var discussionRepoMock = this.GetDiscussionMock(this.GetDiscussions()).Object;
            var discussionService  = new DiscussionsService(discussionRepoMock, this.commentRepo, this.commentVoteRepo, this.mediaRepo);

            // Act
            var discussionCount = await discussionService.GetTotalDiscussions(expectedMediaId);

            // Assert
            Assert.Equal(discussionCount, expectedCount);
        }
Exemplo n.º 15
0
        public void GetUserDisLikedAnswersIdList_Must_Return_Empty_List_If_User_Havent_Disliked_Any_Answer()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var userLikedAnswers = discussionsService.GetUserDisLikedAnswersIdList(testUser.UserName);

            //Assert
            Assert.True(userLikedAnswers.Count == 0);
        }
Exemplo n.º 16
0
        public async Task GetTotalCommentsGetProperCount()
        {
            // Arrange
            var commentsList         = this.GetComments();
            var expectedDiscussionId = "10";
            var expectedCount        = commentsList.Count(x => x.DiscussionId == expectedDiscussionId);

            var commentsRepoMock   = this.GetCommentMock(commentsList).Object;
            var discussionRepoMock = this.GetDiscussionMock(this.GetDiscussions()).Object;
            var commentService     = new DiscussionsService(discussionRepoMock, commentsRepoMock, this.commentVoteRepo, this.mediaRepo);

            // Act
            var commentsCount = await commentService.GetTotalComments(expectedDiscussionId);

            // Assert
            Assert.Equal(expectedCount, commentsCount);
        }
Exemplo n.º 17
0
        public void GetUserQuestionsVM_Must_Return_Empty_Collection_If_There_Isnt_User_With_User_Name()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM(Category.AndroidDevelopment);

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion1 = discussionsService.AddQuestion(testQBM, testUser);
            var result         = discussionsService.GetUserQuestionsVM("ChuckNorris");

            //Assert
            Assert.True(result.Count == 0);
        }
Exemplo n.º 18
0
        public void AddAnswer_Must_Return_NULL_If_There_Isnt_Question_With_Given_Id()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var content        = "Test Answer";
            var testQuestionID = 10;
            var answer         = discussionsService.AddAnswer(content, testUser, testQuestionID);

            //Assert
            Assert.True(answer == null);
        }
Exemplo n.º 19
0
        public void IsUserDisLikedQuestion_Must_Return_False_If_User_Not_Liked_Given_Question()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion = discussionsService.AddQuestion(testQBM, testUser);
            var result        = discussionsService.IsUserDisLikedQuestion(addedQuestion.Id, testUser.UserName);

            //Assert
            Assert.True(!result);
        }
Exemplo n.º 20
0
        public void DeleteAnswer_Must_Return_NULL_If_There_Is_No_Answer_Or_Question_With_Given_Ids()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var testAnswerId   = 23;
            var testQuestionId = 23;
            var deletedAnswer  = discussionsService.DeleteAnswer(testAnswerId, testQuestionId, testUser.Id);

            //Assert
            Assert.True(deletedAnswer == null);
        }
Exemplo n.º 21
0
        public void GetQuestionViewModel_Must_Return_NULL_If_There_Isnt_Question_With_Given_Id()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion = discussionsService.AddQuestion(testQBM, testUser);
            var result        = discussionsService.GetQuestionViewModel(addedQuestion.Id + 1);

            //Assert
            Assert.True(result == null);
        }
Exemplo n.º 22
0
        public async Task GetCommentInfoGetsCorrectDetails()
        {
            // Arrange
            var commentsList           = this.GetComments();
            var expectedComment        = commentsList[1];
            var expectedCommentId      = expectedComment.Id;
            var expectedCommentContent = expectedComment.Content;

            var commentsRepoMock   = this.GetCommentMock(commentsList).Object;
            var discussionRepoMock = this.GetDiscussionMock(this.GetDiscussions()).Object;
            var commentService     = new DiscussionsService(discussionRepoMock, commentsRepoMock, this.commentVoteRepo, this.mediaRepo);

            // Act
            var commentsInfo = await commentService.GetCommentInfo <CommentViewModel>(expectedCommentId);

            // Assert
            Assert.Equal(expectedCommentContent, commentsInfo.Content);
        }
Exemplo n.º 23
0
        public void UpdateTags_Must_Return_Empty_List_Of_Tags_If_There_Isnt_Any_Tag_To_Update()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM(Category.AndroidDevelopment);
            var testTags           = "";

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion = discussionsService.AddQuestion(testQBM, testUser);
            var result        = discussionsService.UpdateTags(testTags, addedQuestion);

            //Assert
            Assert.True(result.Count == 0);
        }
Exemplo n.º 24
0
        public void IsUserDisLikedQuestion_Must_Return_True_If_User_DisLiked_Given_Question()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion = discussionsService.AddQuestion(testQBM, testUser);
            var questionRatingBindingModel = GetTestQuestionRatingBMRatingDown(addedQuestion);
            var ratedQuestion = discussionsService.RateQuestion(questionRatingBindingModel, testUser);
            var result        = discussionsService.IsUserDisLikedQuestion(ratedQuestion.Id, testUser.Id);

            //Assert
            Assert.True(result);
        }
Exemplo n.º 25
0
        public async Task GetDiscussionTitleGivesCorrectTitle()
        {
            // Arrange
            var discussionList          = this.GetDiscussions();
            var commentsList            = this.GetComments();
            var expectedDiscussion      = discussionList[1];
            var expectedDiscussionId    = expectedDiscussion.Id;
            var expectedDiscussionTitle = expectedDiscussion.Title;

            var discussionRepoMock = this.GetDiscussionMock(discussionList).Object;
            var commentsRepoMock   = this.GetCommentMock(commentsList).Object;
            var discussionService  = new DiscussionsService(discussionRepoMock, commentsRepoMock, this.commentVoteRepo, this.mediaRepo);

            // Act
            var discussionTitle = await discussionService.GetDiscussionTitle(expectedDiscussionId);

            // Assert
            Assert.Equal(expectedDiscussionTitle, discussionTitle);
        }
Exemplo n.º 26
0
        public void DeleteAnswer_Must_Return_Deleted_Answer()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion = discussionsService.AddQuestion(testQBM, testUser);
            var content       = "Test Answer";
            var answer        = discussionsService.AddAnswer(content, testUser, addedQuestion.Id);
            var deletedAnswer = discussionsService.DeleteAnswer(answer.Id, addedQuestion.Id, testUser.Id);

            //Assert
            Assert.True(deletedAnswer.Id == answer.Id);
        }
Exemplo n.º 27
0
        public async Task GetDiscussionInfoGetsCorrectDetails()
        {
            // Arrange
            var discussionList          = this.GetDiscussions();
            var expectedDiscussion      = discussionList[1];
            var expectedDiscussionId    = expectedDiscussion.Id;
            var expectedDiscussionTitle = expectedDiscussion.Title;

            var discussionRepoMock = this.GetDiscussionMock(discussionList).Object;
            var discussionService  = new DiscussionsService(discussionRepoMock, this.commentRepo, this.commentVoteRepo, this.mediaRepo);

            // Act
            var discussion = await discussionService.GetDiscussionInfo <DiscussionViewModel>(expectedDiscussionId);

            var discussionTitle = discussion.Title;

            // Assert
            Assert.Equal(expectedDiscussionTitle, discussionTitle);
        }
Exemplo n.º 28
0
        public void RateQuestion_Must_Return_Updated_Question_RatedUp()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion = discussionsService.AddQuestion(testQBM, testUser);
            var questionRatingBindingModel = GetTestQuestionRatingBMRatingUp(addedQuestion);
            var ratedQuestion = discussionsService.RateQuestion(questionRatingBindingModel, testUser);

            //Assert
            Assert.True(ratedQuestion.Id == addedQuestion.Id);
            Assert.True(ratedQuestion.Rating == 1);
        }
Exemplo n.º 29
0
        public async Task GetDiscussionGetsCorrectData()
        {
            // Arrange
            var discussionList          = this.GetDiscussions();
            var expectedDiscussion      = discussionList[1];
            var expectedTitle           = expectedDiscussion.Title;
            var expectedDiscussionMedia = expectedDiscussion.MediaId;

            var discussionRepoMock = this.GetDiscussionMock(this.GetDiscussions()).Object;

            var discussionService = new DiscussionsService(discussionRepoMock, this.commentRepo, this.commentVoteRepo, this.mediaRepo);

            // Act
            var discussionViewModel = await discussionService.GetDiscussions <DiscussionViewModel>(expectedDiscussionMedia, 1, 2);

            // Assert
            Assert.Single(discussionViewModel);
            Assert.Contains(discussionViewModel, x => x.Title == expectedTitle);
        }
Exemplo n.º 30
0
        public void AddTag_Must_Return_Created_Tag()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var question = discussionsService.AddQuestion(testQBM, testUser);
            var tag      = discussionsService.AddTag("tag", question);

            //Assert
            Assert.True(tag.Name == "tag");
            Assert.True(tag.QuestionId == question.Id);
            Assert.True(question.Tags.Count == 3);
        }