Esempio n. 1
0
    def test_get_eye_level_shelves(self):
        scene_tool_box = PngcnSceneKpis(self.ProjectConnector_mock,
                                        self.common_mock, 16588190,
                                        self.data_provider_mock)
        data = pd.DataFrame(
            [{'bay_number': 1, 'shelf_number': 3}, {'bay_number': 1, 'shelf_number': 3},
             {'bay_number': 1, 'shelf_number': 6}, {'bay_number': 1, 'shelf_number': 6},
             {'bay_number': 2, 'shelf_number': 2}, {'bay_number': 2, 'shelf_number': 4},
             {'bay_number': 2, 'shelf_number': 10}, {'bay_number': 2, 'shelf_number': 9},
             {'bay_number': 3, 'shelf_number': 1}, {'bay_number': 3, 'shelf_number': 1},
             {'bay_number': 3, 'shelf_number': 2}, {'bay_number': 3, 'shelf_number': 2}])
        scene_tool_box.get_filterd_matches = MagicMock(return_value=pd.DataFrame(data))
        scene_tool_box.common.write_to_db_result = MagicMock()
        kpi_results = scene_tool_box.get_eye_level_shelves(data)
        self.assertEqual(len(kpi_results[kpi_results['bay_number'] == 3]), 4, 'expects to have 4 lines with bay number 3')
        self.assertTrue(kpi_results[kpi_results['bay_number'] == 1].empty, "Expected to have an empty df where bay number =1")

        # try blade & razor template
        blade_template_fk = 144
        self.data_provider_mock['templates'] = pd.DataFrame([{'template_fk': 144}])
        scene_tool_box = PngcnSceneKpis(self.ProjectConnector_mock,
                                        self.common_mock, 16588190,
                                        self.data_provider_mock)
        scene_tool_box.get_filterd_matches = MagicMock(return_value=pd.DataFrame(data))
        scene_tool_box.common.write_to_db_result = MagicMock()
        kpi_results = scene_tool_box.get_eye_level_shelves(
            data, psdataprovider=self.psdataprovider, template_fk=blade_template_fk)
        self.assertEqual(len(kpi_results[kpi_results['bay_number'] == 3]), 2,
                         'expects to have only 2 lines with bay number 3 since the eye level for blade is [2, 3]')
        self.assertEqual(len(kpi_results[kpi_results['bay_number'] == 2]), 1,
                         'expects to have only 1 line with bay number 2 since the eye level for blade is [2, 3]')
Esempio n. 2
0
 def test_calculate_facing_eye_level(self):
     scene_tool_box = PngcnSceneKpis(self.ProjectConnector_mock,
                                     self.common_mock, 16588190,
                                     self.data_provider_mock)
     data = pd.DataFrame(
             [{'scene_fk': 16588190, 'manufacturer_name': 'P&G\xe5\xae\x9d\xe6\xb4\x81', 'brand_name': 'Safeguard',
               'category': 'Personal Cleaning Care', 'product_fk': 152, 'stacking_layer': 1, 'category_fk': 101,
               'bay_number': 1, 'shelf_number': 1, 'facing_sequence_number': 3, 'sub_category': 'Handwash'},
             {'scene_fk': 16588190, 'manufacturer_name': 'P&G\xe5\xae\x9d\xe6\xb4\x81', 'brand_name': 'Safeguard',
              'category': 'something', 'product_fk': 152, 'stacking_layer': 2, 'category_fk': 101,
              'bay_number':1, 'shelf_number':2, 'facing_sequence_number': 3, 'sub_category': 'Handwash'},
             {'scene_fk': 16588190, 'manufacturer_name': 'P&G\xe5\xae\x9d\xe6\xb4\x81', 'brand_name': 'Safeguard',
              'category': 'Personal Cleaning Care', 'product_fk': 152, 'stacking_layer': 1, 'category_fk': 102,
              'bay_number': 2, 'shelf_number': 2, 'facing_sequence_number': 1, 'sub_category': 'Bodywash'},
             {'scene_fk': 16588190, 'manufacturer_name': 'P&G\xe5\xae\x9d\xe6\xb4\x81', 'brand_name': 'Safeguard',
              'category': 'Personal Cleaning Care', 'product_fk': 152, 'stacking_layer': 1, 'category_fk': 101,
              'bay_number': 2, 'shelf_number': 2, 'facing_sequence_number': 3, 'sub_category': 'Handwash'},
              {'scene_fk': 16588190, 'manufacturer_name': 'P&G\xe5\xae\x9d\xe6\xb4\x81', 'brand_name': 'hola',
               'category': 'Personal Cleaning Care', 'product_fk': 152, 'stacking_layer': 1, 'category_fk': 101,
               'bay_number': 2, 'shelf_number': 2, 'facing_sequence_number': 2, 'sub_category': 'HOLA'}])
     scene_tool_box.get_filterd_matches = MagicMock(return_value=pd.DataFrame(data))
     scene_tool_box.common.write_to_db_result = MagicMock()
     scene_tool_box.calculate_facing_eye_level(data, 2)
     kpi_results = scene_tool_box.common.write_to_db_result.mock_calls
     if kpi_results:
         self.assertEqual(len(kpi_results), 2, 'expects to write 2 parameters to db')
         self.assertEqual(kpi_results[1][2]['result'], 4, "result isn't 4 although there are 4 facings in shelf 2")
     else:
         raise Exception('No results were saved')
Esempio n. 3
0
 def test__get_filterd_matches_test_type(self):
     """
         test that the result is a DF
     """
     scene_tool_box = PngcnSceneKpis(self.ProjectConnector_mock,
                                     self.common_mock, 16588190,
                                     self.data_provider_mock)
     # test that the result is a DF
     df_type = scene_tool_box.get_filterd_matches()
     self.assertIsInstance(df_type, type(pd.DataFrame()))
Esempio n. 4
0
 def test__get_filterd_matches_test_manufacturer_size(self):
     """
         test that there is only one manufacturer fk in the return DF
     """
     scene_tool_box = PngcnSceneKpis(self.ProjectConnector_mock,
                                     self.common_mock, 16588190,
                                     self.data_provider_mock)
     # test that the result is a DF
     df_type = scene_tool_box.get_filterd_matches()
     # test that there is only one manufacturer fk in the return DF
     unique_fk = len(df_type['manufacturer_fk'].unique())
     self.assertEqual(unique_fk, 1)
Esempio n. 5
0
    def test__get_filterd_matches_test_manufacturer_fk(self):
        """
            test that the only manufacturer fk in DF is Png
        """
        scene_tool_box = PngcnSceneKpis(self.ProjectConnector_mock,
                                        self.common_mock, 16588190,
                                        self.data_provider_mock)

        # test that the result is a DF
        df_type = scene_tool_box.get_filterd_matches()

        # test that the only manufacturer fk in DF is Png
        png_fk = df_type['manufacturer_fk'].unique()[0]
        self.assertEqual(png_fk, 4)
Esempio n. 6
0
 def test_calculate_linear_or_presize_linear_length_test_results_length(self):
     """
         test that we write 8 fields to DB
     """
     scene_tool_box = PngcnSceneKpis(self.ProjectConnector_mock,
                                     self.common_mock, 16588190,
                                     self.data_provider_mock)
     data = [{'scene_fk': 101, 'manufacturer_fk': 2, 'product_fk': 252, 'width_mm': 0.84, 'width_mm_advance': 1.23},
             {'scene_fk': 121, 'manufacturer_fk': 4, 'product_fk': 132,
              'width_mm': 0.80, 'width_mm_advance': 0.99},
             {'scene_fk': 201, 'manufacturer_fk': 4, 'product_fk': 152,
              'width_mm': 0.28, 'width_mm_advance': 0.75},
             {'scene_fk': 151, 'manufacturer_fk': 5, 'product_fk': 172, 'width_mm': 0.95, 'width_mm_advance': 0.15}]
     scene_tool_box.get_filterd_matches = MagicMock(return_value=pd.DataFrame(data))
     scene_tool_box.png_manufacturer_fk = 4
     scene_tool_box.common.write_to_db_result = MagicMock()
     width = random.choice(['width_mm', 'width_mm_advance'])
     scene_tool_box.calculate_linear_or_presize_linear_length(width)
     kpi_results = scene_tool_box.common.write_to_db_result.mock_calls[0][2]
     if kpi_results:
         self.assertEqual(len(kpi_results), 8, 'expects to write 8 parameters to db')
Esempio n. 7
0
 def test_calculate_linear_or_presize_linear_length_test_results_sanity(self):
     """
         test if the numerator is greater then denominator (if the subgroup is greater then containing group)
     """
     scene_tool_box = PngcnSceneKpis(self.ProjectConnector_mock,
                                     self.common_mock, 16588190,
                                     self.data_provider_mock)
     data = [{'scene_fk': 101, 'manufacturer_fk': 2, 'product_fk': 252, 'width_mm': 0.84, 'width_mm_advance': 1.23},
             {'scene_fk': 121, 'manufacturer_fk': 4, 'product_fk': 132,
              'width_mm': 0.80, 'width_mm_advance': 0.99},
             {'scene_fk': 201, 'manufacturer_fk': 4, 'product_fk': 152,
              'width_mm': 0.28, 'width_mm_advance': 0.75},
             {'scene_fk': 151, 'manufacturer_fk': 5, 'product_fk': 172, 'width_mm': 0.95, 'width_mm_advance': 0.15}]
     scene_tool_box.get_filterd_matches = MagicMock(return_value=pd.DataFrame(data))
     scene_tool_box.png_manufacturer_fk = 4
     scene_tool_box.common.write_to_db_result = MagicMock()
     width = random.choice(['width_mm', 'width_mm_advance'])
     scene_tool_box.calculate_linear_or_presize_linear_length(width)
     kpi_results = scene_tool_box.common.write_to_db_result.mock_calls[0][2]
     if kpi_results:
         numerator = kpi_results['numerator_result']
         denominator = kpi_results['denominator_result']
         self.assertGreaterEqual(denominator, numerator,
                                 'the numerator cant be greater then denominator')