示例#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);
        }
示例#2
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));
        }
示例#3
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));
        }
示例#4
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));
        }
示例#5
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"));
        }
示例#6
0
        public void GetQuestionViewModels_Must_Return_Collection_Of_QuestionViewModels()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM1           = GetTestQuestionBM(Category.C);
            var testQBM2           = GetTestQuestionBM(Category.DesktopDevelopment);

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

            var result = discussionsService.GetQuestionViewModels();

            //Assert
            Assert.True(result.Count == 2);
            Assert.True(result.Any(x => x.Category == addedQuestion1.Category));
            Assert.True(result.Any(x => x.Category == addedQuestion2.Category));
        }
示例#7
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);
        }
示例#8
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);
        }
示例#9
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);
        }
示例#10
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);
        }
示例#11
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);
        }
示例#12
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);
        }
示例#13
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);
        }
示例#14
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);
        }
示例#15
0
        public void AddQuestion_Must_Return_Created_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 result = discussionsService.AddQuestion(testQBM, testUser);

            //Assert
            Assert.True(result.PublisherId == testUser.Id);
            Assert.True(result.Title == testQBM.Title);
            Assert.True(result.Content == testQBM.Content);
            Assert.True(result.Category == testQBM.Category);
            Assert.True(result.Tags.Count == 2);
        }
示例#16
0
        public void GetQuestionViewModel_Must_Return_ViewModel()
        {
            // 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 targetQuestion = discussionsService.GetQuestionViewModel(addedQuestion.Id);

            //Assert
            Assert.True(targetQuestion.QuestionId == addedQuestion.Id);
            Assert.True(targetQuestion.Content == addedQuestion.Content);
            Assert.True(targetQuestion.Category == addedQuestion.Category);
            Assert.True(targetQuestion.Title == addedQuestion.Title);
        }
示例#17
0
        public void RateQuestion_Must_Return_NULL_If_RatedDown_Twice()
        {
            // 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);

            discussionsService.RateQuestion(questionRatingBindingModel, testUser);
            var thisMustBeNull = discussionsService.RateQuestion(questionRatingBindingModel, testUser);

            //Assert
            Assert.True(thisMustBeNull == null);
        }
示例#18
0
        public void RateAnswer_Must_Return_NULL_If_RatedDown_Twice()
        {
            // 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 testAnswerRatingBM = GetTestAnswerRatingBMRatingDown(answer, testUser);
            var ratedAnswer        = discussionsService.RateAnswer(testAnswerRatingBM, testUser);
            var thisMustBeNull     = discussionsService.RateAnswer(testAnswerRatingBM, testUser);

            //Assert
            Assert.True(thisMustBeNull == null);
        }
示例#19
0
        public void AddAnswer_Must_Return_Created_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);

            //Assert
            Assert.True(answer != null);
            Assert.True(answer.Content == content);
            Assert.True(answer.PublisherId == testUser.Id);
            Assert.True(answer.QuestionId == addedQuestion.Id);
        }
示例#20
0
        public void IsUserDisLikedAnswer_Must_Return_True_If_User_DisLiked_Given_Answer()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();
            var content            = "Test Answer";

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var addedQuestion      = discussionsService.AddQuestion(testQBM, testUser);
            var answer             = discussionsService.AddAnswer(content, testUser, addedQuestion.Id);
            var testAnswerRatingBM = GetTestAnswerRatingBMRatingDown(answer, testUser);
            var ratedAnswer        = discussionsService.RateAnswer(testAnswerRatingBM, testUser);
            var result             = discussionsService.IsUserDisLikedAnswer(ratedAnswer.Id, testUser.Id);

            //Assert
            Assert.True(result);
        }
示例#21
0
        public void DeleteQuestion_Must_Return_Deleted_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 result        = discussionsService.DeleteQuestion(addedQuestion.Id, testUser.Id);

            //Assert
            Assert.True(result.Id == addedQuestion.Id);
            Assert.True(result.Title == addedQuestion.Title);
            Assert.True(result.Rating == addedQuestion.Rating);
            Assert.True(result.PublishTime == addedQuestion.PublishTime);
            Assert.True(result.PublisherId == testUser.Id);
        }
示例#22
0
        public void UpdateTags_Must_Return_List_Of_Updated_Tags()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM(Category.AndroidDevelopment);
            var testTags           = "web nice os www nice";

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

            //Assert
            Assert.True(result.Count == 4);
            Assert.True(result.Any(x => x.Name == "web"));
            Assert.True(result.Any(x => x.Name == "www"));
            Assert.True(result.Any(x => x.Name == "os"));
            Assert.True(result.Any(x => x.Name == "nice"));
        }
示例#23
0
        public void GenerateTagEntities_Must_Return_List_Of_Created_Tags()
        {
            // Arrange
            var db = StaticMethods.GetDb();
            var discussionsService = new DiscussionsService(db, this.mapper);
            var testUser           = StaticMethods.GetTestUser();
            var testQBM            = GetTestQuestionBM();
            var testTags           = " newTag myTag";

            //Act
            db.Users.Add(testUser);
            db.SaveChanges();
            var question = discussionsService.AddQuestion(testQBM, testUser);
            var tags     = discussionsService.GenerateTagEntities(testTags, question).ToArray();

            //Assert
            Assert.True(tags.Length == 2);
            Assert.True(tags[0].Name == "newTag");
            Assert.True(tags[0].QuestionId == question.Id);

            Assert.True(tags[1].Name == "myTag");
            Assert.True(tags[1].QuestionId == question.Id);
        }