Exemple #1
0
    def test_full_metadata_flat_response(self):
        catalog = self.field.distribution.dataset.catalog
        catalog.metadata = '{"title": "test_title", "extra_field": "extra"}'
        catalog.save()

        dataset = self.field.distribution.dataset
        dataset.metadata = '{"title": "test_title", "extra_field": "extra"}'
        dataset.save()

        dist = self.field.distribution
        dist.metadata = '{"title": "test_title", "extra_field": "extra"}'
        dist.save()

        self.field.metadata = '{"id": "test_title", "extra_field": "extra"}'
        self.field.save()

        self.query.add_series(self.single_series, self.field)
        self.query.set_metadata_config('full')
        self.query.flatten_metadata_response()
        self.query.run()

        flat_meta = self.query.get_metadata()[1]

        other_query = Query(index=settings.TEST_INDEX)
        other_query.add_series(self.single_series, self.field)
        other_query.set_metadata_config('full')
        other_query.run()
        meta = other_query.get_metadata()[1]

        for key in meta:
            for in_key in meta[key]:
                self.assertEqual(meta[key][in_key],
                                 flat_meta['{}_{}'.format(key, in_key)])
    def test_flatten_metadata_response(self):
        catalog = self.field.distribution.dataset.catalog
        catalog.metadata = '{"title": "test_title", "extra_field": "extra"}'
        catalog.save()

        dataset = self.field.distribution.dataset
        dataset.metadata = '{"title": "test_title", "extra_field": "extra"}'
        dataset.save()

        dist = self.field.distribution
        dist.metadata = '{"title": "test_title", "extra_field": "extra"}'
        dist.save()

        self.field.metadata = '{"id": "test_title", "extra_field": "extra"}'

        self.query.add_series(self.field)
        self.query.flatten_metadata_response()
        flat_meta = self.query.run()['meta'][1]

        other_query = Query()
        other_query.add_series(self.field)
        meta = other_query.run()['meta'][1]

        for key in meta:
            for in_key in meta[key]:
                self.assertEqual(meta[key][in_key],
                                 flat_meta['{}_{}'.format(key, in_key)])
Exemple #3
0
 def setUpClass(cls):
     cls.query = Query(index=settings.TEST_INDEX)
     field = Field.objects.get(identifier=cls.single_series)
     cls.query.add_series(cls.single_series, field)
     cls.series_name = field.title
     cls.series_desc = json.loads(field.metadata)['description']
     super(ResponseTests, cls).setUpClass()
    def setupQueryWithSeriesWithDifferentRepresentationModes(self):
        query = Query()
        field = Field.objects.get(identifier=self.single_series)
        query.add_series(field, rep_mode='change')
        query.add_series(field, rep_mode='percent_change')
        query.add_series(field, rep_mode='change_a_year_ago')
        query.add_series(field, rep_mode='percent_change_a_year_ago')

        return query
    def test_csv_different_decimal_empty_rows(self):
        query = Query()

        field = Field.objects.get(identifier=self.single_series)
        query.add_series(field)
        query.add_series(field, rep_mode='percent_change_a_year_ago')

        generator = ResponseFormatterGenerator('csv').get_formatter()
        response = generator.run(query, {'decimal': ','})

        self.assertFalse("None" in str(response.content))
    def test_last_cmd(self):
        self.query.add_series(self.field)
        self.cmd.run(self.query, {'last': '10'})

        orig_query = Query()
        orig_query.add_series(self.field)
        orig_query.sort('desc')
        data = orig_query.run()['data']
        data.reverse()

        reverse_data = self.query.run()['data']

        self.assertListEqual(data[-10:], reverse_data)
Exemple #7
0
    def test_global_rep_mode(self):
        self.cmd.run(self.query, {'ids': self.single_series})
        self.query.sort('asc')
        data = self.query.run()['data']

        other_query = Query(index=settings.TEST_INDEX)
        self.cmd.run(other_query, {'ids': self.single_series,
                                   'representation_mode': 'change'})
        other_query.sort('asc')
        other_data = other_query.run()['data']

        for index, row in enumerate(other_data):
            change = data[index + 1][1] - data[index][1]
            # La resta anterior trae pérdida de precisión si los números de 'data' son grandes
            self.assertAlmostEqual(row[1], change, places=5)
    def test_end_of_period_with_rep_mode(self):
        self.query.add_series(self.field, 'percent_change', 'end_of_period')
        self.query.update_collapse('year')
        self.query.sort('asc')
        data = self.query.run()['data']

        orig_eop = Query(index=settings.TS_INDEX)
        orig_eop.add_series(self.field, collapse_agg='end_of_period')
        orig_eop.update_collapse('year')
        orig_eop.sort('asc')
        end_of_period = orig_eop.run()['data']

        for i, row in enumerate(data):  # El primero es nulo en pct change
            value = end_of_period[i + 1][1] / end_of_period[i][1] - 1

            self.assertAlmostEqual(value, row[1])
    def test_last_cmd_with_start_date(self):
        rows = 100
        self.query.add_series(self.field)
        self.cmd.run(self.query, {'last': str(rows)})

        orig_query = Query()
        orig_query.add_series(self.field)
        orig_query.sort('desc')
        data = orig_query.run()['data']
        last_date = iso8601.parse_date(data[-1][0])

        start_date = last_date - relativedelta(years=1)
        self.query.add_filter(start_date=start_date, end_date=None)

        data = self.query.run()['data']
        self.assertTrue(len(data), 12)
    def test_collapse_aggregation_series_order_different_periodicity(self):
        year_series = get_series_id('day')
        year_field = Field.objects.get(identifier=year_series)

        self.query.add_series(self.field, collapse_agg='sum')
        self.query.add_series(year_field)
        data = self.query.run()['data']

        other_query = Query()
        other_query.add_series(year_field)
        other_query.add_series(self.field, collapse_agg='sum')
        other_data = other_query.run()['data']

        for row1, row2 in zip(data, other_data):
            self.assertEqual(row1[0], row2[0])
            self.assertEqual(row1[1], row2[2])
            self.assertEqual(row1[2], row2[1])
    def run(self, args):
        query = Query()
        for cmd in self.commands:
            cmd_instance = cmd()
            cmd_instance.run(query, args)
            if cmd_instance.errors:
                return self.generate_error_response_from_cmd(cmd_instance)

        _format = args.get(constants.PARAM_FORMAT,
                           constants.API_DEFAULT_VALUES[constants.PARAM_FORMAT])
        formatter = self.get_formatter(_format)
        try:
            return formatter.run(query, args)
        except TransportError:
            return self.generate_error_response([strings.ELASTICSEARCH_ERROR])
        except EndOfPeriodError as e:
            return self.generate_error_response([e.message])
    def test_global_rep_mode(self):
        self.cmd.run(self.query, {'ids': self.single_series})
        self.query.sort('asc')
        data = self.query.run()['data']

        change_query = Query()
        self.cmd.run(change_query, {'ids': self.single_series,
                                    'representation_mode': 'change'})

        change_query.sort('asc')
        # Un valor menos que la query original, 99 variaciones para 100 valores
        change_query.add_pagination(start=0, limit=99)
        change_data = change_query.run()['data']

        for index, row in enumerate(change_data):
            change = data[index + 1][1] - data[index][1]
            # La resta anterior trae pérdida de precisión si los números de 'data' son grandes
            self.assertAlmostEqual(row[1], change, places=5)
Exemple #13
0
    def test_start(self):
        self.query.add_series(self.field, 'value')
        params = {'ids': self.single_series, 'limit': self.limit}

        # Query sin offset
        other_query = Query()
        other_query.add_series(self.field, 'value')
        self.cmd.run(other_query, params)
        other_data = other_query.run()['data']

        # Query con un offset de 'start'
        params_start = params.copy()
        params_start['start'] = self.start
        self.cmd.run(self.query, params_start)
        data = self.query.run()['data']

        # Los datos del primer query empiezan en un offset de start en el otro
        self.assertEqual(data[0], other_data[self.start])
    def test_partial_end_date_is_inclusive(self):
        field = Field.objects.get(identifier=self.single_series)
        query = Query(index=settings.TEST_INDEX)
        query.add_series(self.single_series, self.field, 'value')
        query.sort('asc')
        first_date = query.run()['data'][0][0]

        end_date = iso8601.parse_date(first_date) + relativedelta(years=10)
        self.query.add_series(self.single_series, field, 'value')
        self.cmd.run(self.query, {'end_date': str(end_date)})

        # Me aseguro de traer suficientes resultados
        self.query.add_pagination(start=0, limit=1000)
        self.query.sort('asc')
        data = self.query.run()['data']

        last_date = iso8601.parse_date(data[-1][0])
        self.assertEqual(last_date.year, end_date.year)
        self.assertGreaterEqual(last_date.month, end_date.month)
 def setUp(self):
     self.query = Query(index=settings.TEST_INDEX)
     self.cmd = DateFilter()
Exemple #16
0
 def setUp(self):
     self.query = Query(index=settings.TEST_INDEX)
Exemple #17
0
 def setUp(self):
     self.query = Query()
     self.cmd = DecimalChar()
Exemple #18
0
 def setUp(self):
     self.query = Query(index=settings.TEST_INDEX)
     self.cmd = DecimalChar()
Exemple #19
0
 def setUp(self):
     self.query = Query(index=settings.TEST_INDEX)
     self.cmd = Collapse()
 def setUp(self):
     self.query = Query()
     self.cmd = Last()
 def setUp(self):
     self.query = Query()
     self.cmd = Sort()
 def setUp(self):
     self.query = Query()
     self.cmd = DateFilter()
 def setUp(self):
     self.field = Field.objects.get(identifier=self.single_series)
     self.query = Query()
Exemple #24
0
 def setUp(self):
     self.cmd = IdsField()
     self.query = Query(index=settings.TEST_INDEX)
Exemple #25
0
 def setUp(self):
     self.query = Query()
     self.cmd = Delimiter()
 def setUp(self):
     self.cmd = IdsField()
     self.query = Query()
Exemple #27
0
 def setUp(self):
     self.query = Query()
     self.cmd = Pagination()
Exemple #28
0
 def setUp(self):
     self.query = Query(index=settings.TEST_INDEX)
     self.cmd = Pagination()
 def setUp(self):
     self.query = Query()
     self.cmd = Collapse()
Exemple #30
0
 def setUp(self):
     self.field = Field.objects.get(identifier=self.single_series)
     self.query = Query(index=settings.TEST_INDEX)