summaryrefslogtreecommitdiffstats
path: root/python/tests/web_coverage.py
blob: c6fba42777908c62289c8bc1b30320c1e0b0114d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123

import json
import pytest

from fatcat_openapi_client.rest import ApiException
from fixtures import *


def test_container_coverage(app, mocker):

    elastic_resp1 = {
        'timed_out': False,
        'aggregations': {
            'container_stats': {'buckets': {
              'is_preserved': {'doc_count': 461939},
              'in_kbart': {'doc_count': 461939},
              'in_web': {'doc_count': 2797},
            }},
            'preservation': {
              'buckets': [
                {'key': 'bright', 'doc_count': 444},
                {'key': 'dark', 'doc_count': 111},
              ],
              'sum_other_doc_count': 0,
            },
            'release_type': {
              'buckets': [
                {'key': 'article-journal', 'doc_count': 456},
                {'key': 'book', 'doc_count': 123},
              ],
              'sum_other_doc_count': 0,
            },
        },
        'hits': {'total': 461939, 'hits': [], 'max_score': 0.0},
        '_shards': {'successful': 5, 'total': 5, 'skipped': 0, 'failed': 0},
        'took': 50
    }

    elastic_resp2 = {
        'took': 294,
        'timed_out': False,
        '_shards': {'total': 5, 'successful': 5, 'skipped': 0, 'failed': 0},
        'hits': {'total': 4327, 'max_score': 0.0, 'hits': []},
        'aggregations': {
            'year_in_ia': {
                'after_key': {'year': 2020.0, 'in_ia': True},
                'buckets': [
                    {'key': {'year': 2004.0, 'in_ia': False}, 'doc_count': 4},
                    {'key': {'year': 2004.0, 'in_ia': True}, 'doc_count': 68},
                    {'key': {'year': 2005.0, 'in_ia': False}, 'doc_count': 26},
                    {'key': {'year': 2005.0, 'in_ia': True}, 'doc_count': 428},
                    {'key': {'year': 2006.0, 'in_ia': False}, 'doc_count': 14},
                    {'key': {'year': 2006.0, 'in_ia': True}, 'doc_count': 487},
                    {'key': {'year': 2007.0, 'in_ia': False}, 'doc_count': 13},
                    {'key': {'year': 2007.0, 'in_ia': True}, 'doc_count': 345},
                ],
            },
        },
    }

    elastic_resp3 = {
        'took': 294,
        'timed_out': False,
        '_shards': {'total': 5, 'successful': 5, 'skipped': 0, 'failed': 0},
        'hits': {'total': 4327, 'max_score': 0.0, 'hits': []},
        'aggregations': {
            'type_preservation': {
              'buckets': [
                {'key': {'release_type': 'article-journal', 'preservation': 'bright'}, 'doc_count': 444},
                {'key': {'release_type': 'book', 'preservation': 'dark'}, 'doc_count': 111},
              ],
              'sum_other_doc_count': 0,
            },
        },
    }

    es_raw = mocker.patch('elasticsearch.connection.Urllib3HttpConnection.perform_request')
    es_raw.side_effect = [
        # status
        (200, {}, json.dumps(elastic_resp1)),
        # type preservation histogram
        (200, {}, json.dumps(elastic_resp3)),
    ]

    rv = app.get('/container/aaaaaaaaaaaaaeiraaaaaaaaam/coverage')
    assert rv.status_code == 200

    es_raw = mocker.patch('elasticsearch.connection.Urllib3HttpConnection.perform_request')
    es_raw.side_effect = [
        (200, {}, json.dumps(elastic_resp2)),
    ]

    rv = app.get('/container/aaaaaaaaaaaaaeiraaaaaaaaam/ia_coverage_years.json')
    assert rv.status_code == 200

    es_raw.side_effect = [
        (200, {}, json.dumps(elastic_resp2)),
    ]

    rv = app.get('/container/aaaaaaaaaaaaaeiraaaaaaaaam/ia_coverage_years.svg')
    assert rv.status_code == 200

def test_coverage_empty_years(app, mocker):

    elastic_resp = {
        'took': 294,
        'timed_out': False,
        '_shards': {'total': 5, 'successful': 5, 'skipped': 0, 'failed': 0},
        'hits': {'total': 4327, 'max_score': 0.0, 'hits': []},
        'aggregations': {'year_in_ia': {
            'after_key': {'year': 2020.0, 'in_ia': True},
            'buckets': [
            ],
        }},
    }

    es_raw = mocker.patch('elasticsearch.connection.Urllib3HttpConnection.perform_request')
    es_raw.side_effect = [
        (200, {}, json.dumps(elastic_resp)),
    ]

    rv = app.get('/container/aaaaaaaaaaaaaeiraaaaaaaaam/ia_coverage_years.svg')
    assert rv.status_code == 200