Ejemplo n.º 1
0
    def test_monthly_data(self):
        self.assertEqual(0, models.Article.objects.count())
        self.assertEqual(0, models.Metric.objects.count())
        month_to_import = datetime(year=2015, month=8, day=01)
        logic.import_ga_metrics('monthly', from_date=month_to_import, to_date=month_to_import)
        expected = 1649
        self.assertEqual(expected, models.Article.objects.count())
        self.assertEqual(expected, models.Metric.objects.count())

        doi = '10.7554/eLife.08007'

        metrics = models.Metric.objects.get(article__doi=doi)
        this_month = ymd(datetime.now() - timedelta(days=1))[:-3]
        metrics.date = this_month
        metrics.save()
        
        expected_data = {
            doi: {
                'daily': OrderedDict({}),
                'monthly': OrderedDict({
                    this_month: {
                        #'full': 525,
                        'full': 604, # introduction of POA as full text views
                        'abstract': 9,
                        'digest': 46,
                        'pdf': 129,
                    },
                }),
            },
        }
        url = reverse('api-article-metrics', kwargs={'doi': doi})
        resp = self.c.get(url)
        self.assertEqual(200, resp.status_code)
        data = resp.data
        self.assertEqual(expected_data, resp.data)
Ejemplo n.º 2
0
 def test_import_ga_daily_stats(self):
     "ensure that a basic import of a day's worth of metrics happens correctly"
     self.assertEqual(0, models.Article.objects.count())
     day_to_import = datetime(year=2015, month=9, day=11)
     logic.import_ga_metrics(from_date=day_to_import, to_date=day_to_import)
     # we know this day reveals this many articles
     #expected_article_count = 1090 # changed when we introduced POA articles
     expected_article_count = 1119 
     self.assertEqual(expected_article_count, models.Article.objects.count())
Ejemplo n.º 3
0
    def test_daily_data(self):
        "a very simple set of data returns the expected daily and monthly data in the expected structure"
        day_to_import = datetime(year=2015, month=9, day=11)
        logic.import_ga_metrics('daily', from_date=day_to_import, to_date=day_to_import)

        doi = '10.7554/eLife.09560'

        # hack.
        metric = models.Metric.objects.get(article__doi=doi)
        yesterday = ymd(datetime.now() - timedelta(days=1))
        metric.date = yesterday
        metric.save()
        
        expected_data = {
            doi: {
                'daily': OrderedDict({
                    yesterday: {
                        'full': 21922,
                        'abstract': 325,
                        'digest': 114,
                        'pdf': 1533,
                    },
                    #2015-09-12: {
                    #    ....
                    #
                    #}
                }),
                'monthly': OrderedDict({}),
                #'total': {
                #    '2015-09-11': {
                #        'full': ....,
                #        'abstract': ...,
                #        'digest': ...,
                #    },
                #},
            },
        }
        
            
        url = reverse('api-article-metrics', kwargs={'doi': doi})
        resp = self.c.get(url)
        self.assertEqual(200, resp.status_code)
        self.assertEqual(expected_data, resp.data)
Ejemplo n.º 4
0
    def test_multiple_daily_data(self):
        from_date = datetime(year=2015, month=9, day=11)
        to_date = from_date + timedelta(days=1)
        logic.import_ga_metrics('daily', from_date, to_date)
        doi = u'10.7554/eLife.09560'

        # hack. 
        yesterday = unicode(ymd(datetime.now() - timedelta(days=1)))
        day_before = unicode(ymd(datetime.now() - timedelta(days=2)))
        m1, m2 = models.Metric.objects.filter(article__doi=doi)
        m1.date = day_before
        m2.date = yesterday
        m1.save()
        m2.save()
        
        expected_data = {
            doi: {
                'daily': OrderedDict([
                    (day_before, {
                        'full': 21922,
                        'abstract': 325,
                        'digest': 114,
                        'pdf': 1533,
                    }),
                    (yesterday, { 
                        'full': 9528,
                        'abstract': 110,
                        'digest': 42,
                        'pdf': 489,
                    })
                ]),
                'monthly': OrderedDict({})
            },
        }
        url = reverse('api-article-metrics', kwargs={'doi': doi})
        resp = self.c.get(url)
        self.assertEqual(200, resp.status_code)
        self.assertEqual(expected_data, resp.data)
Ejemplo n.º 5
0
    def test_mixed_source_data(self):
        "data from multiple sources is served up correctly"        
        from_date = datetime(year=2015, month=9, day=11)
        to_date = from_date + timedelta(days=1)
        logic.import_ga_metrics('daily', from_date, to_date)
        logic.import_hw_metrics('daily', from_date, to_date)
        doi = '10.7554/eLife.09560'


        # hack. 
        yesterday = ymd(datetime.now() - timedelta(days=1))
        day_before = ymd(datetime.now() - timedelta(days=2))
        m1, m2 = models.Metric.objects.filter(article__doi=doi, source=models.GA)
        m1.date = day_before
        m2.date = yesterday
        m1.save()
        m2.save()

        m1, m2 = models.Metric.objects.filter(article__doi=doi, source=models.HW)
        m1.date = day_before
        m2.date = yesterday
        m1.save()
        m2.save()
        
        expected_data = {
            models.GA: {
                doi: {
                    'daily': OrderedDict([
                        (day_before, {
                            'full': 21922,
                            'abstract': 325,
                            'digest': 114,
                            'pdf': 1533,
                        }),
                        (yesterday, { 
                            'full': 9528,
                            'abstract': 110,
                            'digest': 42,
                            'pdf': 489,
                        })
                    ]),
                    'monthly': OrderedDict({}),
                },
            },
            models.HW: {
                doi: {
                    'daily': OrderedDict([
                        (day_before, {
                            'full': 39912,
                            'abstract': 540,
                            'digest': 0,
                            'pdf': 4226,
                        }),
                        (yesterday, {
                            'full': 15800,
                            'abstract': 144,
                            'digest': 0,
                            'pdf': 1132,
                        }),
                    ]),
                    'monthly': OrderedDict({}),
                },
            },
        }
        url = reverse('api-article-metrics-mixed-source', kwargs={'doi': doi})
        resp = self.c.get(url)
        self.assertEqual(200, resp.status_code)
        self.assertEqual(expected_data, resp.data)