def test_generate_recommendations(self, mock_lb, mock_filter): params = self.get_recommendation_params() limit = 1 mock_model = MagicMock() params.model = mock_model mock_predict = mock_model.predictAll candidate_set = self.get_candidate_set() users = [] rdd = recommend.get_candidate_set_rdd_for_user(candidate_set, users) mock_predict.return_value = rdd df = recommend.generate_recommendations(candidate_set, params, limit) mock_predict.assert_called_once_with(candidate_set) mock_df = mock_lb.session.createDataFrame mock_df.assert_called_once_with(mock_predict.return_value, schema=None) mock_filter.assert_called_once_with(mock_df.return_value, limit) with self.assertRaises(RecommendationsNotGeneratedException): # empty rdd mock_predict.return_value = MagicMock() recommend.generate_recommendations(candidate_set, params, limit)
def test_get_candidate_set_rdd_for_user(self): candidate_set = self.get_candidate_set() users = [] candidate_set_rdd = recommend.get_candidate_set_rdd_for_user(candidate_set, users) self.assertTrue(isinstance(candidate_set_rdd, RDD)) res = sorted([row for row in candidate_set_rdd.collect()]) self.assertEqual(res, [(1, 1), (2, 2)]) users = ['vansika'] candidate_set_rdd = recommend.get_candidate_set_rdd_for_user(candidate_set, users) self.assertTrue(isinstance(candidate_set_rdd, RDD)) row = candidate_set_rdd.collect() self.assertEqual([(1, 1)], row) users = ['vansika_1'] with self.assertRaises(EmptyDataframeExcpetion): recommend.get_candidate_set_rdd_for_user(candidate_set, users)