Skip to content

Commit 51ef9c7

Browse files
committed
Remove solr_assemble_specific_record_data fixtures
While revisiting the tests for the `api` app (in order to add `shelflist` app tests for the `shelflistitems` API resources), I realized that the `solr_assemble_specific_record_data` fixture almost exactly duplicates the SolrTestDataAssembler.load_static_test_data method. I removed this fixture (and the parallel `shelflist` app fixture) from conftest.py and updated the applicable tests.
1 parent fa16ab0 commit 51ef9c7

4 files changed

Lines changed: 36 additions & 68 deletions

File tree

django/sierra/conftest.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -292,26 +292,6 @@ def global_basic_solr_assembler(global_solr_data_assembler,
292292
tp.GENS, solr_profile_definitions)
293293

294294

295-
@pytest.fixture
296-
def solr_assemble_specific_record_data(basic_solr_assembler):
297-
"""
298-
Pytest fixture. Uses the basic_solr_assembler fixture to generate and
299-
load records into Solr to simulate particular records having
300-
specific data.
301-
"""
302-
def _solr_assemble_specific_record_data(rdicts, rtypes, assembler=None):
303-
assembler = assembler or basic_solr_assembler
304-
gens = assembler.gen_factory
305-
for rdict in rdicts:
306-
for rtype in rtypes:
307-
assembler.make(rtype, 1,
308-
**{k: gens.static(v) for k, v in rdict.items()}
309-
)
310-
assembler.save_all()
311-
return assembler
312-
return _solr_assemble_specific_record_data
313-
314-
315295
@pytest.fixture
316296
def solr_search():
317297
"""

django/sierra/export/tests/test_exporters.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
# Fixtures used in the below tests can be found in
99
# django/sierra/base/tests/conftest.py:
1010
# sierra_records_by_recnum_range, sierra_full_object_set,
11-
# record_sets, new_exporter, redis_obj
12-
# solr_assemble_specific_record_data,
11+
# record_sets, new_exporter, redis_obj, basic_solr_assembler,
1312
# setattr_model_instance, derive_exporter_class,
1413
# assert_all_exported_records_are_indexed,
1514
# assert_deleted_records_are_not_indexed,
@@ -180,7 +179,7 @@ def test_allmdtosolr_export_get_deletions(batch_exporter_class, record_sets,
180179
def test_basic_tosolr_export_records(et_code, rset_code, rectypes, do_reindex,
181180
basic_exporter_class, record_sets,
182181
new_exporter, solr_conns, solr_search,
183-
solr_assemble_specific_record_data,
182+
basic_solr_assembler,
184183
assert_records_are_indexed,
185184
assert_records_are_not_indexed):
186185
"""
@@ -203,9 +202,11 @@ def test_basic_tosolr_export_records(et_code, rset_code, rectypes, do_reindex,
203202
overlap_recs = records[0:num_existing]
204203
only_new_recs = records[num_existing:]
205204
old_rec_pks = [unicode(pk) for pk in range(99991,99995)]
206-
only_old_rec_data = [{'django_id': pk} for pk in old_rec_pks]
207-
data = only_old_rec_data + [{'django_id': r.pk} for r in overlap_recs]
208-
assembler = solr_assemble_specific_record_data(data, rectypes)
205+
only_old_rec_data = [(pk, {}) for pk in old_rec_pks]
206+
data = only_old_rec_data + [(r.pk, {}) for r in overlap_recs]
207+
for rtype in rectypes:
208+
basic_solr_assembler.load_static_test_data(rtype, data,
209+
id_field='django_id')
209210

210211
# Check the setup to make sure existing records are indexed and new
211212
# records are not.
@@ -265,8 +266,7 @@ def test_allmdtosolr_export_records(batch_exporter_class, record_sets,
265266
])
266267
def test_basic_tosolr_delete_records(et_code, rset_code, rectypes,
267268
basic_exporter_class, record_sets,
268-
new_exporter,
269-
solr_assemble_specific_record_data,
269+
new_exporter, basic_solr_assembler,
270270
assert_records_are_indexed,
271271
assert_deleted_records_are_not_indexed):
272272
"""
@@ -275,8 +275,9 @@ def test_basic_tosolr_delete_records(et_code, rset_code, rectypes,
275275
appropriate index or indexes.
276276
"""
277277
records = record_sets[rset_code]
278-
data = ({'id': r.id, 'record_number': r.get_iii_recnum()} for r in records)
279-
assembler = solr_assemble_specific_record_data(data, rectypes)
278+
data = [(r.id, {'record_number': r.get_iii_recnum()}) for r in records]
279+
for rtype in rectypes:
280+
basic_solr_assembler.load_static_test_data(rtype, data)
280281

281282
expclass = basic_exporter_class(et_code)
282283
exporter = new_exporter(expclass, 'full_export', 'waiting')
@@ -356,8 +357,7 @@ def test_attached_solr_export_records(et_code, rset_code, basic_exporter_class,
356357
])
357358
def test_attached_solr_delete_records(et_code, rset_code, rectypes,
358359
basic_exporter_class, record_sets,
359-
new_exporter,
360-
solr_assemble_specific_record_data,
360+
new_exporter, basic_solr_assembler,
361361
assert_records_are_indexed,
362362
assert_deleted_records_are_not_indexed):
363363
"""
@@ -366,8 +366,9 @@ def test_attached_solr_delete_records(et_code, rset_code, rectypes,
366366
index or indexes.
367367
"""
368368
records = record_sets[rset_code]
369-
data = ({'id': r.id, 'record_number': r.get_iii_recnum()} for r in records)
370-
assembler = solr_assemble_specific_record_data(data, rectypes)
369+
data = [(r.id, {'record_number': r.get_iii_recnum()}) for r in records]
370+
for rtype in rectypes:
371+
basic_solr_assembler.load_static_test_data(rtype, data)
371372

372373
expclass = basic_exporter_class(et_code)
373374
exporter = new_exporter(expclass, 'full_export', 'waiting')

django/sierra/shelflist/tests/conftest.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,3 @@ def shelflist_solr_assembler(solr_data_assembler, solr_profile_definitions):
2222
}
2323
return solr_data_assembler(tp.SOLR_TYPES, tp.GLOBAL_UNIQUE_FIELDS,
2424
tp.GENS, profile_def)
25-
26-
27-
@pytest.fixture(scope='function')
28-
def solr_assemble_shelflist_record_data(solr_assemble_specific_record_data,
29-
shelflist_solr_assembler):
30-
"""
31-
Pytest fixture. Assembles specific record data to load into Solr
32-
for the shelflistitem profile.
33-
"""
34-
def _solr_assemble_shelflist_record_data(rdicts):
35-
return solr_assemble_specific_record_data(rdicts, ('shelflistitem',),
36-
shelflist_solr_assembler)
37-
return _solr_assemble_shelflist_record_data
38-

django/sierra/shelflist/tests/test_exporters.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
# assert_deleted_records_are_not_indexed
1818
#
1919
# django/sierra/shelflist/tests/conftest.py:
20-
# solr_assemble_shelflist_record_data
20+
# shelflist_solr_assembler
2121

2222
pytestmark = pytest.mark.django_db
2323

@@ -113,16 +113,17 @@ def test_itemstosolr_records_to_solr(exporter_class, record_sets, new_exporter,
113113
@pytest.mark.deletions
114114
@pytest.mark.do_export
115115
def test_itemstosolr_delete_records(exporter_class, record_sets, new_exporter,
116-
solr_assemble_shelflist_record_data,
116+
shelflist_solr_assembler,
117117
assert_records_are_indexed,
118118
assert_deleted_records_are_not_indexed):
119119
"""
120120
The shelflist app ItemsToSolr `delete_records` method should delete
121121
records from the appropriate index or indexes.
122122
"""
123123
records = record_sets['item_del_set']
124-
data = ({'id': r.id, 'record_number': r.get_iii_recnum()} for r in records)
125-
assembler = solr_assemble_shelflist_record_data(data)
124+
data = [(r.id, {'record_number': r.get_iii_recnum()}) for r in records]
125+
shelflist_solr_assembler.load_static_test_data('shelflistitem', data,
126+
id_field='id')
126127

127128
expclass = exporter_class('ItemsToSolr')
128129
exporter = new_exporter(expclass, 'full_export', 'waiting')
@@ -137,7 +138,7 @@ def test_itemstosolr_delete_records(exporter_class, record_sets, new_exporter,
137138
@pytest.mark.exports
138139
@pytest.mark.do_export
139140
def test_itemstosolr_exps_keep_user_fields(exporter_class, new_exporter,
140-
solr_assemble_shelflist_record_data,
141+
shelflist_solr_assembler,
141142
sierra_full_object_set,
142143
get_records_from_index):
143144
"""
@@ -149,9 +150,9 @@ def test_itemstosolr_exps_keep_user_fields(exporter_class, new_exporter,
149150
"""
150151
ufields = ['inventory_date', 'shelf_status', 'flags', 'inventory_notes']
151152
records = sierra_full_object_set('ItemRecord').order_by('pk')[0:6]
152-
data = [{'id': r.pk, 'record_number': None} for r in records]
153-
assembler = solr_assemble_shelflist_record_data(data)
154-
153+
data = [(r.pk, {'record_number': i}) for i, r in enumerate(records)]
154+
shelflist_solr_assembler.load_static_test_data('shelflistitem', data,
155+
id_field='id')
155156
expclass = exporter_class('ItemsToSolr')
156157
exporter = new_exporter(expclass, 'full_export', 'waiting')
157158

@@ -170,7 +171,7 @@ def test_itemstosolr_exps_keep_user_fields(exporter_class, new_exporter,
170171
pre_result = pre_results[record.pk]
171172
post_result = post_results[record.pk]
172173
recnum = record.record_metadata.get_iii_recnum(True)
173-
assert 'record_number' not in pre_result
174+
assert pre_result['record_number'] != post_result['record_number']
174175
assert post_result['record_number'] == recnum
175176
for uf in ufields:
176177
assert pre_result.get(uf, None) == post_result.get(uf, None)
@@ -205,10 +206,9 @@ def test_itemstosolr_export_returns_lcodes(exporter_class,
205206
@pytest.mark.shelflist
206207
@pytest.mark.deletions
207208
@pytest.mark.return_vals
208-
def test_itemstosolr_del_returns_lcodes(exporter_class,
209-
sierra_full_object_set,
209+
def test_itemstosolr_del_returns_lcodes(exporter_class, sierra_full_object_set,
210210
new_exporter,
211-
solr_assemble_shelflist_record_data):
211+
shelflist_solr_assembler):
212212
"""
213213
The shelflist app ItemsToSolr `delete_records` method should return
214214
a vals structure containing a `seen_lcodes` list, or list of unique
@@ -222,9 +222,10 @@ def test_itemstosolr_del_returns_lcodes(exporter_class,
222222
for rec in records:
223223
lcode = random.choice(lcode_opts)
224224
expected_lcodes.add(lcode)
225-
data.append({'id': rec.id, 'record_number': rec.get_iii_recnum(),
226-
'location_code': lcode})
227-
assembler = solr_assemble_shelflist_record_data(data)
225+
data.append((rec.id, {'record_number': rec.get_iii_recnum(),
226+
'location_code': lcode}))
227+
shelflist_solr_assembler.load_static_test_data('shelflistitem', data,
228+
id_field='id')
228229

229230
expclass = exporter_class('ItemsToSolr')
230231
exporter = new_exporter(expclass, 'full_export', 'waiting')
@@ -259,8 +260,7 @@ def test_itemstosolr_compile_vals(results, expected, exporter_class,
259260
@pytest.mark.shelflist
260261
@pytest.mark.callback
261262
def test_itemstosolr_shelflist_manifests(exporter_class, new_exporter,
262-
solr_assemble_shelflist_record_data,
263-
redis_obj):
263+
shelflist_solr_assembler, redis_obj):
264264
"""
265265
The shelflist app ItemsToSolr `final_callback` method should build
266266
or rebuild the shelflist manifest for each location provided in the
@@ -313,10 +313,11 @@ def test_itemstosolr_shelflist_manifests(exporter_class, new_exporter,
313313
solr_data = []
314314
for lcode, slist in updated_shelflists.items():
315315
for pk, cn, vol, copy in slist:
316-
solr_data.append({'id': pk, 'location_code': lcode,
316+
solr_data.append((pk, {'location_code': lcode,
317317
'call_number_sort': cn, 'volume_sort': vol,
318-
'copy_number': copy, 'call_number_type': 'lc'})
319-
assembler = solr_assemble_shelflist_record_data(solr_data)
318+
'copy_number': copy, 'call_number_type': 'lc'}))
319+
shelflist_solr_assembler.load_static_test_data('shelflistitem', solr_data,
320+
id_field='id')
320321

321322
# Run `final_callback`, passing the appropriate location codes to
322323
# update shelflistitem manifests for via vals['seen_lcodes'].

0 commit comments

Comments
 (0)