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); }
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)); }
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); }
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)); }
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")); }
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")); }
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()); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }