Skip to content

Commit 019f666

Browse files
committed
Finish basic Exporter tests
1 parent 70c11c4 commit 019f666

2 files changed

Lines changed: 95 additions & 28 deletions

File tree

django/sierra/conftest.py

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,19 @@
1616
# Base app-related fixtures
1717

1818
@pytest.fixture
19-
def records_by_recnum_range():
19+
def sierra_records_by_recnum_range():
2020
"""
21-
A pytest fixture that returns a set of objects based on the
21+
Return Sierra records by record number range.
22+
23+
This is a pytest fixture that returns a set of objects based on the
2224
provided start and (optional) end record number. Uses the
23-
appropriate model based on the type of record.
25+
appropriate model based on the type of record, derived from the
26+
first character of the record numbers (e.g., b is BibRecord).
27+
28+
Metadata about the filter used is added to an `info` attribute on
29+
the object queryset that is returned.
2430
"""
25-
def _records_by_recnum_range(start, end=None):
31+
def _sierra_records_by_recnum_range(start, end=None):
2632
rectype = start[0]
2733
filter_options = {'record_range_from': start,
2834
'record_range_to': end or start}
@@ -32,12 +38,36 @@ def _records_by_recnum_range(start, end=None):
3238
recset.info = {
3339
'filter_method': 'filter_by',
3440
'filter_args': ['record_range', filter_options],
35-
'filter_kwargs': None,
41+
'filter_kwargs': {},
3642
'export_filter_type': 'record_range',
3743
'export_filter_options': filter_options,
3844
}
3945
return recset
40-
return _records_by_recnum_range
46+
return _sierra_records_by_recnum_range
47+
48+
49+
@pytest.fixture
50+
def sierra_full_object_set():
51+
"""
52+
Return a full set of objects from a Sierra (base) model.
53+
54+
This is a pytest fixture that returns a full set of model objects
55+
based on the type of model provided.
56+
57+
Metadata about the filter used is added to an `info` attribute on
58+
the object queryset that is returned.
59+
"""
60+
def _sierra_full_object_set(model_name):
61+
recset = getattr(bm, model_name).objects.all()
62+
recset.info = {
63+
'filter_method': 'all',
64+
'filter_args': [],
65+
'filter_kwargs': {},
66+
'export_filter_type': 'full_export',
67+
'export_filter_options': {}
68+
}
69+
return recset
70+
return _sierra_full_object_set
4171

4272

4373
# Export app-related fixtures

django/sierra/export/tests/test_exporters.py

Lines changed: 59 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,51 +8,88 @@
88
# FIXTURES AND TEST DATA
99
# Fixtures used in the below tests can be found in
1010
# django/sierra/base/tests/conftest.py:
11-
# records_by_recnum_range, new_exporter, export_records,
12-
# delete_records, solr_conn, solr_search
11+
# sierra_records_by_recnum_range, sierra_full_object_set,
12+
# new_exporter, export_records, delete_records, solr_conn,
13+
# solr_search
1314

1415
pytestmark = pytest.mark.django_db
1516

1617

1718
@pytest.fixture
18-
def solr_exporter_test_params(records_by_recnum_range):
19-
bib_set = records_by_recnum_range('b4371446')
19+
def solr_exporter_test_params(sierra_records_by_recnum_range,
20+
sierra_full_object_set):
21+
bib_set = sierra_records_by_recnum_range('b4371446')
22+
eres_set = sierra_records_by_recnum_range('e1001249')
23+
item_set = sierra_records_by_recnum_range('i4264281')
24+
itype_set = sierra_full_object_set('ItypeProperty')
25+
istatus_set = sierra_full_object_set('ItemStatusProperty')
26+
location_set = sierra_full_object_set('Location')
27+
2028
return {
2129
'BibsToSolr': {
2230
'record_set': bib_set,
23-
'core_tests': {
24-
'bibdata': { 'query': '*', 'result': 1 },
25-
'marc': { 'query': '*', 'result': 1 }
26-
}
31+
'cores': ['bibdata', 'marc'],
32+
'try_delete': True
33+
},
34+
'EResourcesToSolr': {
35+
'record_set': eres_set,
36+
'cores': ['haystack'],
37+
'try_delete': True
38+
},
39+
'ItemsToSolr': {
40+
'record_set': item_set,
41+
'cores': ['haystack'],
42+
'try_delete': True
43+
},
44+
'ItemStatusesToSolr': {
45+
'record_set': istatus_set,
46+
'cores': ['haystack'],
47+
'try_delete': False
48+
},
49+
'ItypesToSolr': {
50+
'record_set': itype_set,
51+
'cores': ['haystack'],
52+
'try_delete': False
53+
},
54+
'LocationsToSolr': {
55+
'record_set': location_set,
56+
'cores': ['haystack'],
57+
'try_delete': False
2758
},
2859
}
2960

3061

3162
# TESTS
3263

33-
@pytest.mark.parametrize('etype_code', ['BibsToSolr'])
64+
@pytest.mark.parametrize('etype_code', [
65+
'BibsToSolr',
66+
'EResourcesToSolr',
67+
'ItemsToSolr',
68+
'ItemStatusesToSolr',
69+
'ItypesToSolr',
70+
'LocationsToSolr'])
3471
def test_exports_to_solr(etype_code, solr_exporter_test_params, new_exporter,
3572
export_records, delete_records, solr_conn,
3673
solr_search):
3774
"""
3875
For Exporter classes that load data into Solr, blah
3976
"""
4077
record_set = solr_exporter_test_params[etype_code]['record_set']
41-
core_tests = solr_exporter_test_params[etype_code]['core_tests']
42-
cores = core_tests.keys()
78+
cores = solr_exporter_test_params[etype_code]['cores']
79+
try_delete = solr_exporter_test_params[etype_code]['try_delete']
4380
load_exporter = new_exporter(etype_code, 'full_export', 'waiting')
4481
conns = {c: solr_conn(c) for c in cores}
45-
pre_results = {c: solr_search(conns[c], {'q': core_tests[c]['query']})
46-
for c in cores}
47-
export_records(load_exporter, record_set )
48-
load_results = {c: solr_search(conns[c], {'q': core_tests[c]['query']})
49-
for c in cores}
50-
del_exporter = new_exporter(etype_code, 'full_export', 'waiting')
51-
delete_records(del_exporter, record_set)
52-
del_results = {c: solr_search(conns[c], {'q': core_tests[c]['query']})
53-
for c in cores}
82+
pre_results = {c: solr_search(conns[c], {'q': '*'}) for c in cores}
83+
export_records(load_exporter, record_set)
84+
load_results = {c: solr_search(conns[c], {'q': '*'}) for c in cores}
85+
del_results = {}
86+
if try_delete:
87+
del_exporter = new_exporter(etype_code, 'full_export', 'waiting')
88+
delete_records(del_exporter, record_set)
89+
del_results = {c: solr_search(conns[c], {'q': '*'}) for c in cores}
5490

5591
for core in cores:
5692
assert len(pre_results[core]) == 0
57-
assert len(load_results[core]) == core_tests[core]['result']
58-
assert len(del_results[core]) == 0
93+
assert len(load_results[core]) > 0
94+
if try_delete:
95+
assert len(del_results[core]) == 0

0 commit comments

Comments
 (0)