def test_compute_weighted_question_filter_hybrid_min_does_not_contain_item(self): # Arrange weighted_algorithm = WeightScoringAlgorithm() # Act result = weighted_algorithm.compute_weighted_question_filter(HYBRID_WEIGHT_MIN, False) # Assert self.assertTrue(result)
def test_compute_weighted_question_filter_working(self): # Arrange weighted_algorithm = WeightScoringAlgorithm() # Act result = weighted_algorithm.compute_weighted_question_filter(0, True) # Assert self.assertTrue(result)
def test_compute_weighted_question_score_zero_scale_factor_does_contain_item(self): # Arrange weighted_algorithm = WeightScoringAlgorithm() user_scale_factor = 0 does_contain_item = True # Act result = weighted_algorithm.compute_weighted_question_score(user_scale_factor, does_contain_item) # Assert self.assertEqual(0, result)
def test_compute_weighted_question_score_positive_scale_factor_does_contain_item(self): # Arrange weighted_algorithm = WeightScoringAlgorithm() user_scale_factor = 4 does_contain_item = True # Act result = weighted_algorithm.compute_weighted_question_score(user_scale_factor, does_contain_item) # Assert self.assertEqual(1 * user_scale_factor * HYBRID_QUESTION_WEIGHT, result)
def test_wants_neither_in_unit_and_building(self): """ Tests that if a user says they don't want in building or in unit then even if the home has it, it doesn't affect the score """ # Arrange survey = RentingSurveyModel.create_survey(self.user.userProfile, wants_laundry_in_building=False, wants_laundry_in_unit=False) weighted_algorithm = WeightScoringAlgorithm() home = self.create_home(self.home_type, laundry_in_unit=True, laundry_in_building=True) # Act weighted_algorithm.handle_laundry_weight_question(survey, home) # Assert self.assertEqual(home.accumulated_points, 0) self.assertEqual(home.total_possible_points, 0) self.assertFalse(home.eliminated)
def test_wants_in_unit_need(self): """ Tests that if the user needs in building, then if the home has either in unit or in building then it is scored properly """ # Arrange in_unit_weight = HYBRID_WEIGHT_MAX in_building_weight = 0 survey = RentingSurveyModel.create_survey(self.user.userProfile, wants_laundry_in_building=False, wants_laundry_in_unit=True, laundry_in_unit_weight=in_unit_weight, laundry_in_building_weight=in_building_weight, ) weighted_algorithm = WeightScoringAlgorithm() # Create homes home = self.create_home(self.home_type, laundry_in_unit=False, laundry_in_building=False) home1 = self.create_home(self.home_type, laundry_in_unit=True, laundry_in_building=False) home2 = self.create_home(self.home_type, laundry_in_unit=False, laundry_in_building=True) home3 = self.create_home(self.home_type, laundry_in_unit=True, laundry_in_building=True) # Act weighted_algorithm.handle_laundry_weight_question(survey, home) weighted_algorithm.handle_laundry_weight_question(survey, home1) weighted_algorithm.handle_laundry_weight_question(survey, home2) weighted_algorithm.handle_laundry_weight_question(survey, home3) # Assert self.assertEqual(home.accumulated_points, 0) self.assertEqual(home.total_possible_points, abs(in_unit_weight) * weighted_algorithm.hybrid_question_weight) self.assertFalse(home.eliminated) self.assertEqual(home1.accumulated_points, weighted_algorithm.compute_weighted_question_score(in_unit_weight, home1.home.laundry_in_unit)) self.assertEqual(home1.total_possible_points, abs(in_unit_weight) * weighted_algorithm.hybrid_question_weight) self.assertFalse(home1.eliminated) self.assertEqual(home2.accumulated_points, 0) self.assertEqual(home2.total_possible_points, abs(in_unit_weight) * weighted_algorithm.hybrid_question_weight) self.assertFalse(home2.eliminated) self.assertEqual(home3.accumulated_points, weighted_algorithm.compute_weighted_question_score(in_unit_weight, home3.home.laundry_in_unit)) self.assertEqual(home3.total_possible_points, abs(in_unit_weight) * weighted_algorithm.hybrid_question_weight) self.assertFalse(home3.eliminated)