Example #1
0
    def test_assortment_calculation_does_not_add_wine_products_to_distribution_kpi(
            self):
        lvl3_result = self.create_assortment_result_data_mock([2])
        tool_box = RISPARKWINEDEToolBox(self.data_provider_mock, self.output)
        tool_box.store_assortment = self.STORE_ASSORTMENT
        tool_box.common.write_to_db_result = MagicMock()
        tool_box.main_calculation()

        results_df = self.build_results_df(tool_box)
        results_df['score'] = results_df['score'].apply(lambda x: round(x, 2))
        results_df['result'] = results_df['result'].apply(
            lambda x: round(x, 2))

        expected_list = list()
        expected_list.append({
            'fk': 3,
            'score': 3.0 / 5 * 100,
            'result': 3.0 / 5 * 100,
            'numerator_result': 3,
            'denominator_result': 5
        })
        expected_list.append({
            'fk': 2,
            'score': 2.0 / 5 * 100,
            'result': 2.0 / 5 * 100,
            'numerator_result': 2,
            'denominator_result': 5
        })
        test_result_list = []
        for expected_result in expected_list:
            test_result_list.append(
                self.check_results(results_df, expected_result) == 1)
        self.assertTrue(all(test_result_list))
Example #2
0
    def test_wine_assortment_calculation_wine_products_present_in_session(
            self):
        lvl3_result = self.create_assortment_result_data_mock([2])
        tool_box = RISPARKWINEDEToolBox(self.data_provider_mock, self.output)
        tool_box.store_assortment = self.STORE_ASSORTMENT
        tool_box.common.write_to_db_result = MagicMock()
        tool_box.wine_assortment_calculation(lvl3_result)
        results_df = self.build_results_df(tool_box)
        self.assertEquals(len(results_df), 4)

        expected_list = list()
        expected_list.append({
            'fk': 642,
            'score': 100,
            'result': 100,
            'numerator_id': 6,
            'denominator_result': 1
        })
        expected_list.append({
            'fk': 642,
            'score': 100,
            'result': 100,
            'numerator_id': 7,
            'denominator_result': 1
        })
        expected_list.append({
            'fk': 642,
            'score': 0,
            'result': 0,
            'numerator_id': 8,
            'denominator_result': 1
        })
        expected_list.append({
            'fk': 642,
            'score': 0,
            'result': 0,
            'numerator_id': 9,
            'denominator_result': 1
        })
        test_result_list = []
        for expected_result in expected_list:
            test_result_list.append(
                self.check_results(results_df, expected_result) == 1)
        self.assertTrue(all(test_result_list))
class RISPARKWINEDEGenerator:
    def __init__(self, data_provider, output):
        self.data_provider = data_provider
        self.output = output
        self.project_name = data_provider.project_name
        self.session_uid = self.data_provider.session_uid
        self.tool_box = RISPARKWINEDEToolBox(self.data_provider, self.output)

    @log_runtime('Total Calculations', log_start=True)
    def main_function(self):
        """
        This is the main KPI calculation function.
        It calculates the score for every KPI set and saves it to the DB.
        """
        try:
            if self.tool_box.scif.empty:
                Log.warning('Scene item facts is empty for this session')
            # for kpi_set_fk in self.tool_box.kpi_static_data['kpi_set_fk'].unique().tolist():
            #     score = self.tool_box.main_calculation(kpi_set_fk=kpi_set_fk)
            #     self.tool_box.write_to_db_result(kpi_set_fk, score, self.tool_box.LEVEL1)
            self.tool_box.main_calculation()
            # self.tool_box.commit_results_data()
        except Exception as e:
            Log.error('{}'.format(e))
Example #4
0
    def test_main_assortment_calculation_historical_products_present_in_session(
            self):
        lvl3_result = self.create_assortment_result_data_mock([2])
        tool_box = RISPARKWINEDEToolBox(self.data_provider_mock, self.output)
        tool_box.store_assortment = self.STORE_ASSORTMENT
        tool_box.common.write_to_db_result = MagicMock()
        tool_box.main_assortment_calculation(lvl3_result)

        results_df = self.build_results_df(tool_box)
        results_df['score'] = results_df['score'].apply(lambda x: round(x, 2))
        results_df['result'] = results_df['result'].apply(
            lambda x: round(x, 2))
        self.assertEquals(len(results_df), 14)
        self.assertEquals(len(results_df[results_df['fk'] == 642]), 0)

        expected_list = list()
        # distribution kpis
        expected_list.append({
            'fk': 4,
            'score': 0,
            'result': 0,
            'numerator_id': 1,
            'denominator_result': 1,
            'score_after_actions': 1
        })
        expected_list.append({
            'fk': 4,
            'score': 100,
            'result': 100,
            'numerator_id': 2,
            'denominator_result': 1,
            'score_after_actions': 0
        })

        expected_list.append({
            'fk': 5,
            'score': 100,
            'result': 100,
            'numerator_id': 3,
            'denominator_result': 1,
            'score_after_actions': 0
        })
        expected_list.append({
            'fk': 5,
            'score': 100,
            'result': 100,
            'numerator_id': 4,
            'denominator_result': 1,
            'score_after_actions': 1
        })
        expected_list.append({
            'fk': 5,
            'score': 0,
            'result': 0,
            'numerator_id': 5,
            'denominator_result': 1,
            'score_after_actions': 0
        })

        expected_list.append({
            'fk': 10,
            'score': 0,
            'result': 50,
            'numerator_id': 1,
            'numerator_result': 1,
            'denominator_id': 4,
            'denominator_result': 2
        })
        expected_list.append({
            'fk': 11,
            'score': 0,
            'result': round(2.0 / 3 * 100, 2),
            'numerator_id': 2,
            'numerator_result': 2,
            'denominator_id': 5,
            'denominator_result': 3
        })
        expected_list.append({
            'fk': 3,
            'score': 3.0 / 5 * 100,
            'result': 3.0 / 5 * 100,
            'numerator_result': 3,
            'denominator_result': 5
        })

        # oos kpis
        expected_list.append({'fk': 1, 'result': 1, 'numerator_id': 1})
        expected_list.append({'fk': 1, 'result': 0, 'numerator_id': 2})

        expected_list.append({'fk': 1, 'result': 0, 'numerator_id': 3})
        expected_list.append({'fk': 1, 'result': 0, 'numerator_id': 4})
        expected_list.append({'fk': 1, 'result': 1, 'numerator_id': 5})

        expected_list.append({
            'fk': 2,
            'score': 2.0 / 5 * 100,
            'result': 2.0 / 5 * 100,
            'numerator_result': 2,
            'denominator_result': 5
        })

        test_result_list = []
        for expected_result in expected_list:
            test_result_list.append(
                self.check_results(results_df, expected_result) == 1)
        self.assertTrue(all(test_result_list))
 def __init__(self, data_provider, output):
     self.data_provider = data_provider
     self.output = output
     self.project_name = data_provider.project_name
     self.session_uid = self.data_provider.session_uid
     self.tool_box = RISPARKWINEDEToolBox(self.data_provider, self.output)