Ejemplo n.º 1
0
 def test__get_oc_filter(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': 'Crest',
         'category': 'Oral Care',
         'product_fk': 252,
         'stacking_layer': 1,
         'category_fk': 101,
         'bay_number': 1,
         'shelf_number': 2,
         'facing_sequence_number': 3,
         'sub_brand_name': 'sb1'
     }, {
         'scene_fk': 16588190,
         'manufacturer_name': 'P&G\xe5\xae\x9d\xe6\xb4\x81',
         'brand_name': 'Oral-B',
         'category': 'Oral Care',
         'product_fk': 132,
         'stacking_layer': 1,
         'category_fk': 101,
         'bay_number': 1,
         'shelf_number': 2,
         'facing_sequence_number': 3,
         'sub_brand_name': 'sb2'
     }, {
         'scene_fk': 16588190,
         'manufacturer_name': 'P&G\xe5\xae\x9d\xe6\xb4\x81',
         'brand_name': 'Oral-B',
         'category': 'Oral Care',
         'product_fk': 999,
         'stacking_layer': 1,
         'category_fk': 101,
         'bay_number': 1,
         'shelf_number': 2,
         'facing_sequence_number': 3,
         'sub_brand_name': ''
     }, {
         'scene_fk': 16588190,
         'manufacturer_name': 'P&G\xe5\xae\x9d\xe6\xb4\x81',
         'brand_name': 'Crest',
         'category': 'Oral 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': 172,
         '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': 173,
         'stacking_layer': 1,
         'category_fk': 101,
         'bay_number': 2,
         'shelf_number': 2,
         'facing_sequence_number': 2,
         'sub_category': 'HOLA'
     }])
     filters = scene_tool_box._get_category_specific_filters(
         'Oral Care', data)
     self.assertEqual(len(filters), 5, 'expects 5 filter entry created.')
Ejemplo n.º 2
0
 def test_calculate_sequence_eye_level(self):
     scene_tool_box = PngcnSceneKpis(self.ProjectConnector_mock,
                                     self.common_mock, 16588190,
                                     self.data_provider_mock)
     entity_df = pd.DataFrame([{
         'entity_fk': 17,
         'entity_name': u'SFG Handwash',
         'entity_type_fk': 1002,
         'entity_type_name': u'eye_level_fragments'
     }, {
         'entity_fk': 18,
         'entity_name': u'SFG Bodywash',
         'entity_type_fk': 1002,
         'entity_type_name': u'eye_level_fragments'
     }, {
         'entity_fk': 27,
         'entity_name': u'Competitor Other',
         'entity_type_fk': 1002,
         'entity_type_name': u'eye_level_fragments'
     }])
     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': 252,
         'stacking_layer': 1,
         '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': 'something',
         'product_fk': 132,
         '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': 172,
         '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': 173,
         'stacking_layer': 1,
         'category_fk': 101,
         'bay_number': 2,
         'shelf_number': 2,
         'facing_sequence_number': 2,
         'sub_category': 'HOLA'
     }])
     scene_tool_box._get_category_specific_filters = MagicMock(
         return_value=pd.DataFrame(scene_tool_box.PCC_FILTERS))
     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_sequence_eye_level(entity_df, data,
                                                 'Personal Cleaning Care')
     kpi_results = scene_tool_box.common.write_to_db_result.mock_calls
     if kpi_results:
         self.assertEqual(len(kpi_results), 3,
                          'expects to write 3 parameters to db')
         self.assertEqual(
             kpi_results[2][2]['numerator_id'], 17,
             "numerator_id !=17, sequence written isn't correct")
     else:
         raise Exception('No results were saved')