def test_parse_should_group_indicator_indexes_when_appear_consecutively(
         self):
     result = parse_service_indicators_order("1.1, 2.1, 2.2, 3.1, 1.2")
     self.assertEqual(1, result[0][0])
     self.assertEqual(2, result[1][0])
     self.assertEqual(3, result[2][0])
     self.assertEqual(1, result[3][0])
Beispiel #2
0
    def list_by_service_id_and_indicators_order(
            self, service_id, indicators_order,
            count_indicator=None, count_category=None):
        if not indicators_order:
            return self.list_by_service_id(
                service_id, count_indicator, count_category)
        if count_indicator == 0 or count_category == 0:
            return []
        if not is_valid_service_indicators_order(indicators_order):
            raise IndicadorsDataReporterException(
                "Indicators order is not valid")

        m = IndicadorsMatrixDataReporter(self.client, service_id)
        indicators = []
        count_category_cur = 0
        for indicator_i, categories_is in parse_service_indicators_order(
                indicators_order):
            categories = []
            for category_i in categories_is:
                try:
                    categories.append(
                        self._category_to_dict(m[indicator_i, category_i]))
                    count_category_cur += 1
                    if count_category and count_category_cur >= count_category:
                        break
                except IndexError:
                    logger.warning(
                        "IndexError when accessing category {0}, {1} in "
                        "list_by_service_id_and_indicators_order".format(
                            indicator_i, category_i))
                    continue
            try:
                indicators.append(
                    self._indicator_to_dict(m[indicator_i], categories))
                if count_indicator and len(indicators) >= count_indicator:
                    break
                if count_category and count_category_cur >= count_category:
                    break
            except IndexError:
                logger.warning(
                    "IndexError when accessing indicator {0} in "
                    "list_by_service_id_and_indicators_order".format(
                        indicator_i))
                continue
        return indicators
 def test_parse_should_group_indicator_indexes_when_appear_consecutively(self):
     result = parse_service_indicators_order("1.1, 2.1, 2.2, 3.1, 1.2")
     self.assertEqual(1, result[0][0])
     self.assertEqual(2, result[1][0])
     self.assertEqual(3, result[2][0])
     self.assertEqual(1, result[3][0])
 def test_parse_2_element_tuples_int_should_be_numbers_before_dots(self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     self.assertEqual(1, result[0][0])
     self.assertEqual(2, result[1][0])
     self.assertEqual(3, result[2][0])
 def test_parse_2_element_tuples_should_contain_int_and_list(self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     for element in result:
         self.assertEqual(int, type(element[0]))
         self.assertEqual(list, type(element[1]))
 def test_parse_should_return_list_of_2_element_tuples(self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     for element in result:
         self.assertEqual(tuple, type(element))
         self.assertEqual(2, len(element))
 def test_parse_should_return_list_of_n_elements_when_n_indicator_items(self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     self.assertEqual(3, len(result))
 def test_parse_should_return_empty_list_when_order_empty(self):
     result = parse_service_indicators_order("")
     self.assertEqual([], result)
 def test_parse_should_return_empty_list_when_order_empty(self):
     result = parse_service_indicators_order("")
     self.assertEqual([], result)
 def test_parse_should_group_category_indexes_by_indicator_index(self):
     result = parse_service_indicators_order("1.1, 1.1, 3.1, 2.1, 2.2, 1.2")
     self.assertListEqual([1, 1], result[0][1])
     self.assertListEqual([1], result[1][1])
     self.assertListEqual([1, 2], result[2][1])
     self.assertListEqual([2], result[3][1])
 def test_parse_2_element_tuples_int_should_be_numbers_before_dots(self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     self.assertEqual(1, result[0][0])
     self.assertEqual(2, result[1][0])
     self.assertEqual(3, result[2][0])
 def test_parse_2_element_tuples_should_contain_int_and_list(self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     for element in result:
         self.assertEqual(int, type(element[0]))
         self.assertEqual(list, type(element[1]))
 def test_parse_should_return_list_of_2_element_tuples(self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     for element in result:
         self.assertEqual(tuple, type(element))
         self.assertEqual(2, len(element))
 def test_parse_should_return_list_of_n_elements_when_n_indicator_items(
         self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     self.assertEqual(3, len(result))
 def test_parse_should_group_category_indexes_by_indicator_index(self):
     result = parse_service_indicators_order("1.1, 1.1, 3.1, 2.1, 2.2, 1.2")
     self.assertListEqual([1, 1], result[0][1])
     self.assertListEqual([1], result[1][1])
     self.assertListEqual([1, 2], result[2][1])
     self.assertListEqual([2], result[3][1])
 def test_parse_should_return_list(self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     self.assertEqual(list, type(result))
 def test_parse_should_return_list(self):
     result = parse_service_indicators_order("1.1, 2.1, 3.1")
     self.assertEqual(list, type(result))