Ejemplo n.º 1
0
    def test_ga_query_hook_is_called(self):
        service = Mock()
        ga_hook = Mock()
        client = QueryClient(service, ga_hook)

        self.mock_get('short-query', service)

        client.get('12345', date(2012, 1, 1), date(2012, 1, 2), 'metric')
        kwargs = {
            'ids': 'ga:12345', 'metrics': 'ga:metric',
            'start_date': '2012-01-01', 'end_date': '2012-01-02',
        }
        ga_hook.assert_called_once_with(kwargs)
Ejemplo n.º 2
0
    def test_ga_query_hook_is_called(self):
        service = Mock()
        ga_hook = Mock()
        client = QueryClient(service, ga_hook)

        self.mock_get('short-query', service)

        client.get('12345', date(2012, 1, 1), date(2012, 1, 2), 'metric')
        kwargs = {
            'ids': 'ga:12345',
            'metrics': 'ga:metric',
            'start_date': '2012-01-01',
            'end_date': '2012-01-02',
        }
        ga_hook.assert_called_once_with(kwargs)
Ejemplo n.º 3
0
 def setUp(self):
     self.service = Mock()
     self.client = QueryClient(self.service)
Ejemplo n.º 4
0
class QueryClientTest(unittest.TestCase):
    def setUp(self):
        self.service = Mock()
        self.client = QueryClient(self.service)

    def mock_get(self, name):
        data = fixture("%s.json" % name)
        self.service.data.return_value.ga.return_value.get.return_value. \
            execute.return_value = data

    def assert_get_called(self, **kwargs):
        self.service.data.return_value.ga.return_value.get. \
            assert_called_once_with(**kwargs)

    def get_call_args_list(self):
        return self.service.data.return_value.ga.return_value.get. \
            call_args_list

    def test_short_query(self):
        self.mock_get("short-query")

        results = self.client.get("12345",
                                  date(2012, 1, 1), date(2012, 1, 2),
                                  "metric", "dimension", "dimension2==value")

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric", dimensions="ga:dimension",
            filters="ga:dimension2==value"
        )
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 48)
        result = iter(results).next()
        self.assertEqual(result["metrics"], {"metric": "00"})
        self.assertEqual(result["dimensions"]["dimension"], u'20121110')

    def test_short_query_with_list_arguments(self):
        self.mock_get("short-query")

        results = self.client.get(
            ["12345", "123456"],
            date(2012, 11, 10), date(2012, 11, 11),
            ["metric", "metric2"], ["dimension", "dimension2"],
            ["dimension3==value", "dimension4==value"]
        )

        self.assert_get_called(
            ids="ga:12345,ga:123456",
            start_date="2012-11-10", end_date="2012-11-11",
            metrics="ga:metric,ga:metric2",
            dimensions="ga:dimension,ga:dimension2",
            filters="ga:dimension3==value,ga:dimension4==value"
        )
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 48)
        result = iter(results).next()
        self.assertEqual(result["metrics"],
                         {"metric": "8083", "metric2": "7643"})
        self.assertEqual(result["dimensions"],
                         {"dimension": "20121110", "dimension2": "00"})
        self.assertEqual(result["start_date"], date(2012, 11, 10))
        self.assertEqual(result["end_date"], date(2012, 11, 11))

    def test_short_query_with_no_dimension_or_filters(self):
        self.mock_get("short-query")

        results = self.client.get("12345",
                                  date(2012, 1, 1), date(2012, 1, 2),
                                  "metric")

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric"
        )
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 48)

    def test_short_query_with_no_rows(self):
        self.mock_get("no-rows")

        results = self.client.get("12345",
                                  date(2012, 1, 1), date(2012, 1, 2),
                                  "metric")

        self.assertEqual(len(results), 0)
        self.assertEqual(len([r for r in results]), 0)

    def test_long_query(self):
        self.mock_get("long-query")

        results = self.client.get("12345",
                                  date(2012, 1, 1), date(2012, 1, 2),
                                  ["metric", "metric2"],
                                  ["dimension", "dimension2"])

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric,ga:metric2",
            dimensions="ga:dimension,ga:dimension2")
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 2)
        i = iter(results)
        i.next()
        i.next()
        i.next()
        i.next()

        calls = self.get_call_args_list()
        self.assertEqual(len(calls), 2)
        self.assertEqual(calls[0], call(
            metrics='ga:metric,ga:metric2',
            dimensions='ga:dimension,ga:dimension2',
            ids='ga:12345', end_date='2012-01-02', start_date='2012-01-01'
        ))
        self.assertEqual(calls[1], call(
            metrics='ga:visits,ga:visitors', dimensions='ga:date,ga:hour',
            ids='ga:12345', end_date='2012-01-15', start_date='2012-01-10',
            start_index="1001", max_results="1000"
        ))
Ejemplo n.º 5
0
class QueryClientTest(unittest.TestCase):

    def setUp(self):
        self.service = Mock()
        self.client = QueryClient(self.service)

    def mock_get(self, name, service=None):
        if service is None:
            service = self.service
        data = fixture("%s.json" % name)
        service.data.return_value.ga.return_value.get.return_value. \
            execute.return_value = data

    def assert_get_called(self, **kwargs):
        self.service.data.return_value.ga.return_value.get. \
            assert_called_once_with(**kwargs)

    def get_call_args_list(self):
        return self.service.data.return_value.ga.return_value.get. \
            call_args_list

    def test_short_query(self):
        self.mock_get("short-query")

        results = self.client.get("12345",
                                  date(2012, 1, 1), date(2012, 1, 2),
                                  "metric", "dimension", "dimension2==value")

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric", dimensions="ga:dimension",
            filters="ga:dimension2==value"
        )
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 48)
        result = iter(results).next()
        self.assertEqual(result["metrics"], {"metric": "00"})
        self.assertEqual(result["dimensions"]["dimension"], u'20121110')

    def test_short_query_with_ga_prefixes(self):
        self.mock_get("short-query")

        self.client.get("ga:12345",
                        date(2012, 1, 1), date(2012, 1, 2),
                        "ga:metric", "ga:dimension", "ga:dimension2==value")

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric", dimensions="ga:dimension",
            filters="ga:dimension2==value"
        )

    def test_short_query_with_list_arguments(self):
        self.mock_get("short-query")

        results = self.client.get(
            ["12345", "123456"],
            date(2012, 11, 10), date(2012, 11, 11),
            ["metric", "metric2"], ["dimension", "dimension2"],
            ["dimension3==value", "dimension4==value"]
        )

        self.assert_get_called(
            ids="ga:12345,ga:123456",
            start_date="2012-11-10", end_date="2012-11-11",
            metrics="ga:metric,ga:metric2",
            dimensions="ga:dimension,ga:dimension2",
            filters="ga:dimension3==value,ga:dimension4==value"
        )
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 48)
        result = iter(results).next()
        self.assertEqual(result["metrics"],
                         {"metric": "8083", "metric2": "7643"})
        self.assertEqual(result["dimensions"],
                         {"dimension": "20121110", "dimension2": "00"})
        self.assertEqual(result["start_date"], date(2012, 11, 10))
        self.assertEqual(result["end_date"], date(2012, 11, 11))

    def test_short_query_with_no_dimension_or_filters(self):
        self.mock_get("short-query")

        results = self.client.get("12345",
                                  date(2012, 1, 1), date(2012, 1, 2),
                                  "metric")

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric"
        )
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 48)

    def test_short_query_call_with_max_results(self):
        self.mock_get("short-query")

        # Result is intentionally ignored: short-query doesn't mock length
        # since that wouldn't test any logic in gapy.
        self.client.get("12345", date(2012, 1, 1), date(2012, 1, 2),
                        "metric", max_results=10)

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric",
            max_results=10,
        )

    def test_short_query_call_with_sort(self):
        self.mock_get("short-query")

        # Result is intentionally ignored: short-query doesn't mock length
        # since that wouldn't test any logic in gapy.
        self.client.get("12345", date(2012, 1, 1), date(2012, 1, 2),
                        "metric", sort=["foo", "-bar"])

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric",
            sort="ga:foo,-ga:bar",
        )

    def test_short_query_with_no_rows(self):
        self.mock_get("no-rows")

        results = self.client.get("12345",
                                  date(2012, 1, 1), date(2012, 1, 2),
                                  "metric")

        self.assertEqual(len(results), 0)
        self.assertEqual(len([r for r in results]), 0)

    def test_short_query_call_with_segment(self):
        self.mock_get("short-query")

        # Result is intentionally ignored: short-query doesn't mock length
        # since that wouldn't test any logic in gapy.
        self.client.get("12345", date(2012, 1, 1), date(2012, 1, 2),
                "metric", sort=["foo", "-bar"], segment="gaid::5bSnKB8rR6iYZqYezSS1sQ")

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric",
            sort="ga:foo,-ga:bar",
            segment="gaid::5bSnKB8rR6iYZqYezSS1sQ"
        )

    def test_long_query(self):
        self.mock_get("long-query")

        results = self.client.get("12345",
                                  date(2012, 1, 1), date(2012, 1, 2),
                                  ["metric", "metric2"],
                                  ["dimension", "dimension2"])

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01", end_date="2012-01-02",
            metrics="ga:metric,ga:metric2",
            dimensions="ga:dimension,ga:dimension2")
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 2)
        i = iter(results)
        i.next()
        i.next()
        i.next()
        i.next()

        calls = self.get_call_args_list()
        self.assertEqual(len(calls), 2)
        self.assertEqual(calls[0], call(
            metrics='ga:metric,ga:metric2',
            dimensions='ga:dimension,ga:dimension2',
            ids='ga:12345', end_date='2012-01-02', start_date='2012-01-01',
        ))
        self.assertEqual(calls[1], call(
            metrics='ga:visits,ga:visitors', dimensions='ga:date,ga:hour',
            ids='ga:12345', end_date='2012-01-15', start_date='2012-01-10',
            start_index="1001",
            max_results="1000",  # Because the next-link instructs us to use
                                 # this as max_results.
        ))

    def test_long_query_max_results(self):

        # Check that when max_results is specified and sufficient results
        # are fetched already, nextLink is not followed and the API is called
        # with max_results = N_MAX

        self.mock_get("long-query")

        # This is the number of results
        N_MAX = 2

        results = self.client.get("12345",
                                  date(2012, 1, 1), date(2012, 1, 2),
                                  ["metric", "metric2"],
                                  ["dimension", "dimension2"],
                                  max_results=N_MAX)

        # Fetch a limited number of results
        r = list(islice(results, 0, 99))

        N_ROWS_IN_FIXTURE = 2
        self.assertEqual(len(r), N_ROWS_IN_FIXTURE)

        calls = self.get_call_args_list()

        self.assertEqual(len(calls), 1)
        self.assertEqual(calls[0], call(
            metrics='ga:metric,ga:metric2',
            dimensions='ga:dimension,ga:dimension2',
            ids='ga:12345', end_date='2012-01-02', start_date='2012-01-01',
            max_results=N_MAX,
        ))

    def test_ga_query_hook_is_called(self):
        service = Mock()
        ga_hook = Mock()
        client = QueryClient(service, ga_hook)

        self.mock_get('short-query', service)

        client.get('12345', date(2012, 1, 1), date(2012, 1, 2), 'metric')
        kwargs = {
            'ids': 'ga:12345', 'metrics': 'ga:metric',
            'start_date': '2012-01-01', 'end_date': '2012-01-02',
        }
        ga_hook.assert_called_once_with(kwargs)
Ejemplo n.º 6
0
 def setUp(self):
     self.service = Mock()
     self.client = QueryClient(self.service)
Ejemplo n.º 7
0
class QueryClientTest(unittest.TestCase):
    def setUp(self):
        self.service = Mock()
        self.client = QueryClient(self.service)

    def mock_get(self, name, service=None):
        if service is None:
            service = self.service
        data = fixture("%s.json" % name)
        service.data.return_value.ga.return_value.get.return_value. \
            execute.return_value = data

    def assert_get_called(self, **kwargs):
        self.service.data.return_value.ga.return_value.get. \
            assert_called_once_with(**kwargs)

    def get_call_args_list(self):
        return self.service.data.return_value.ga.return_value.get. \
            call_args_list

    def test_short_query(self):
        self.mock_get("short-query")

        results = self.client.get("12345", date(2012, 1, 1), date(2012, 1, 2),
                                  "metric", "dimension", "dimension2==value")

        self.assert_get_called(ids="ga:12345",
                               start_date="2012-01-01",
                               end_date="2012-01-02",
                               metrics="ga:metric",
                               dimensions="ga:dimension",
                               filters="ga:dimension2==value")
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 48)
        result = iter(results).next()
        self.assertEqual(result["metrics"], {"metric": "00"})
        self.assertEqual(result["dimensions"]["dimension"], u'20121110')

    def test_short_query_with_ga_prefixes(self):
        self.mock_get("short-query")

        self.client.get("ga:12345", date(2012, 1, 1), date(2012, 1, 2),
                        "ga:metric", "ga:dimension", "ga:dimension2==value")

        self.assert_get_called(ids="ga:12345",
                               start_date="2012-01-01",
                               end_date="2012-01-02",
                               metrics="ga:metric",
                               dimensions="ga:dimension",
                               filters="ga:dimension2==value")

    def test_short_query_with_list_arguments(self):
        self.mock_get("short-query")

        results = self.client.get(["12345", "123456"], date(2012, 11, 10),
                                  date(2012, 11, 11), ["metric", "metric2"],
                                  ["dimension", "dimension2"],
                                  ["dimension3==value", "dimension4==value"])

        self.assert_get_called(
            ids="ga:12345,ga:123456",
            start_date="2012-11-10",
            end_date="2012-11-11",
            metrics="ga:metric,ga:metric2",
            dimensions="ga:dimension,ga:dimension2",
            filters="ga:dimension3==value,ga:dimension4==value")
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 48)
        result = iter(results).next()
        self.assertEqual(result["metrics"], {
            "metric": "8083",
            "metric2": "7643"
        })
        self.assertEqual(result["dimensions"], {
            "dimension": "20121110",
            "dimension2": "00"
        })
        self.assertEqual(result["start_date"], date(2012, 11, 10))
        self.assertEqual(result["end_date"], date(2012, 11, 11))

    def test_short_query_with_no_dimension_or_filters(self):
        self.mock_get("short-query")

        results = self.client.get("12345", date(2012, 1, 1), date(2012, 1, 2),
                                  "metric")

        self.assert_get_called(ids="ga:12345",
                               start_date="2012-01-01",
                               end_date="2012-01-02",
                               metrics="ga:metric")
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 48)

    def test_short_query_call_with_max_results(self):
        self.mock_get("short-query")

        # Result is intentionally ignored: short-query doesn't mock length
        # since that wouldn't test any logic in gapy.
        self.client.get("12345",
                        date(2012, 1, 1),
                        date(2012, 1, 2),
                        "metric",
                        max_results=10)

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01",
            end_date="2012-01-02",
            metrics="ga:metric",
            max_results=10,
        )

    def test_short_query_call_with_sort(self):
        self.mock_get("short-query")

        # Result is intentionally ignored: short-query doesn't mock length
        # since that wouldn't test any logic in gapy.
        self.client.get("12345",
                        date(2012, 1, 1),
                        date(2012, 1, 2),
                        "metric",
                        sort=["foo", "-bar"])

        self.assert_get_called(
            ids="ga:12345",
            start_date="2012-01-01",
            end_date="2012-01-02",
            metrics="ga:metric",
            sort="ga:foo,-ga:bar",
        )

    def test_short_query_with_no_rows(self):
        self.mock_get("no-rows")

        results = self.client.get("12345", date(2012, 1, 1), date(2012, 1, 2),
                                  "metric")

        self.assertEqual(len(results), 0)
        self.assertEqual(len([r for r in results]), 0)

    def test_short_query_call_with_segment(self):
        self.mock_get("short-query")

        # Result is intentionally ignored: short-query doesn't mock length
        # since that wouldn't test any logic in gapy.
        self.client.get("12345",
                        date(2012, 1, 1),
                        date(2012, 1, 2),
                        "metric",
                        sort=["foo", "-bar"],
                        segment="gaid::5bSnKB8rR6iYZqYezSS1sQ")

        self.assert_get_called(ids="ga:12345",
                               start_date="2012-01-01",
                               end_date="2012-01-02",
                               metrics="ga:metric",
                               sort="ga:foo,-ga:bar",
                               segment="gaid::5bSnKB8rR6iYZqYezSS1sQ")

    def test_long_query(self):
        self.mock_get("long-query")

        results = self.client.get("12345", date(2012, 1, 1), date(2012, 1, 2),
                                  ["metric", "metric2"],
                                  ["dimension", "dimension2"])

        self.assert_get_called(ids="ga:12345",
                               start_date="2012-01-01",
                               end_date="2012-01-02",
                               metrics="ga:metric,ga:metric2",
                               dimensions="ga:dimension,ga:dimension2")
        self.assertEqual(results.kind, "analytics#gaData")
        self.assertEqual(len(results), 2)
        i = iter(results)
        i.next()
        i.next()
        i.next()
        i.next()

        calls = self.get_call_args_list()
        self.assertEqual(len(calls), 2)
        self.assertEqual(
            calls[0],
            call(
                metrics='ga:metric,ga:metric2',
                dimensions='ga:dimension,ga:dimension2',
                ids='ga:12345',
                end_date='2012-01-02',
                start_date='2012-01-01',
            ))
        self.assertEqual(
            calls[1],
            call(
                metrics='ga:visits,ga:visitors',
                dimensions='ga:date,ga:hour',
                ids='ga:12345',
                end_date='2012-01-15',
                start_date='2012-01-10',
                start_index="1001",
                max_results="1000",  # Because the next-link instructs us to use
                # this as max_results.
            ))

    def test_long_query_max_results(self):

        # Check that when max_results is specified and sufficient results
        # are fetched already, nextLink is not followed and the API is called
        # with max_results = N_MAX

        self.mock_get("long-query")

        # This is the number of results
        N_MAX = 2

        results = self.client.get("12345",
                                  date(2012, 1, 1),
                                  date(2012, 1, 2), ["metric", "metric2"],
                                  ["dimension", "dimension2"],
                                  max_results=N_MAX)

        # Fetch a limited number of results
        r = list(islice(results, 0, 99))

        N_ROWS_IN_FIXTURE = 2
        self.assertEqual(len(r), N_ROWS_IN_FIXTURE)

        calls = self.get_call_args_list()

        self.assertEqual(len(calls), 1)
        self.assertEqual(
            calls[0],
            call(
                metrics='ga:metric,ga:metric2',
                dimensions='ga:dimension,ga:dimension2',
                ids='ga:12345',
                end_date='2012-01-02',
                start_date='2012-01-01',
                max_results=N_MAX,
            ))

    def test_ga_query_hook_is_called(self):
        service = Mock()
        ga_hook = Mock()
        client = QueryClient(service, ga_hook)

        self.mock_get('short-query', service)

        client.get('12345', date(2012, 1, 1), date(2012, 1, 2), 'metric')
        kwargs = {
            'ids': 'ga:12345',
            'metrics': 'ga:metric',
            'start_date': '2012-01-01',
            'end_date': '2012-01-02',
        }
        ga_hook.assert_called_once_with(kwargs)