def test_metric_tag_without_tags(self):
        request = QueryMetricTagsRequest(100, 200, metrics=[{'name': 'metric.1'}])

        self.assertEqual(request.payload(), {'start_absolute': 100,
                                             'end_absolute': 200,
                                             'metrics': [
                                                 {'name': 'metric.1'}
                                             ]})
    def test_metric_tags_as_dict(self):
        request = QueryMetricTagsRequest(100, 200, metrics=[{'name': 'metric.1', 'tags': {'host': ['azure']}}])

        self.assertEqual(request.payload(), {'start_absolute': 100,
                                             'end_absolute': 200,
                                             'metrics': [
                                                 {'name': 'metric.1',
                                                  'tags': {
                                                      'host': ['azure']
                                                  }}
                                             ]})
    def test_metric_tags_request(self):
        request = QueryMetricTagsRequest(100, 200, metrics=[MetricTag('metric.1', host=['azure'])])

        self.assertEqual(request.payload(), {'start_absolute': 100,
                                             'end_absolute': 200,
                                             'metrics': [
                                                 {'name': 'metric.1',
                                                  'tags': {
                                                      'host': ['azure']
                                                  }}
                                             ]})
        self.assertEqual(request.resource, MetricTags)
        self.assertEqual(request.success_status_code, 200)
        self.assertEqual(request.uri, 'datapoints/query/tags')
    def test_metric_tag_without_tags(self):
        request = QueryMetricTagsRequest(100,
                                         200,
                                         metrics=[{
                                             'name': 'metric.1'
                                         }])

        self.assertEqual(
            request.payload(), {
                'start_absolute': 100,
                'end_absolute': 200,
                'metrics': [{
                    'name': 'metric.1'
                }]
            })
    def test_metric_tags_request(self):
        request = QueryMetricTagsRequest(
            100, 200, metrics=[MetricTag('metric.1', host=['azure'])])

        self.assertEqual(
            request.payload(), {
                'start_absolute': 100,
                'end_absolute': 200,
                'metrics': [{
                    'name': 'metric.1',
                    'tags': {
                        'host': ['azure']
                    }
                }]
            })
        self.assertEqual(request.resource, MetricTags)
        self.assertEqual(request.success_status_code, 200)
        self.assertEqual(request.uri, 'datapoints/query/tags')
 def test_should_fail_if_metric_tags_dict_is_missing_metric_name(self):
     with self.assertRaises(RequestException):
         QueryMetricTagsRequest(100,
                                200,
                                metrics=[{
                                    'tags': {
                                        'host': ['azure']
                                    }
                                }])
    def test_metric_tags_as_dict(self):
        request = QueryMetricTagsRequest(100,
                                         200,
                                         metrics=[{
                                             'name': 'metric.1',
                                             'tags': {
                                                 'host': ['azure']
                                             }
                                         }])

        self.assertEqual(
            request.payload(), {
                'start_absolute': 100,
                'end_absolute': 200,
                'metrics': [{
                    'name': 'metric.1',
                    'tags': {
                        'host': ['azure']
                    }
                }]
            })