def test_esdumper_without_model(testapp, db, example_data): """Test the Elasticsearch dumper.""" # Dump without a model. dump = Record(example_data).dumps(dumper=ElasticsearchDumper()) for k in ['uuid', 'version_id', 'created', 'updated']: assert dump[k] is None # keys is set to none without a model # Load without a model defined record = Record.loads(dump, loader=ElasticsearchDumper()) assert record.model is None # model will not be set assert record == example_data # data is equivalent to initial data
def test_esdumper_with_model(testapp, db, example_data): """Test the Elasticsearch dumper.""" # Create a record record = Record.create(example_data) db.session.commit() # Dump it dump = record.dumps(dumper=ElasticsearchDumper()) assert dump['uuid'] == str(record.id) assert dump['version_id'] == record.revision_id + 1 assert dump['created'][:19] == record.created.isoformat()[:19] assert dump['updated'][:19] == record.updated.isoformat()[:19] # Load it new_record = Record.loads(dump, loader=ElasticsearchDumper()) assert new_record == record assert new_record.id == record.id assert new_record.revision_id == record.revision_id assert new_record.created == record.created assert new_record.updated == record.updated assert new_record.model.json == record.model.json
def test_esdumper_with_extensions(testapp, db, example_data): """Test extensions implementation.""" # Create a simple extension that adds a computed field. class TestExt(ElasticsearchDumperExt): def dump(self, record, data): data['count'] = len(data['mylist']) def load(self, data, record_cls): data.pop('count') dumper = ElasticsearchDumper(extensions=[TestExt()]) # Create the record record = Record.create({'mylist': ['a', 'b']}) db.session.commit() # Dump it dump = record.dumps(dumper=dumper) assert dump['count'] == 2 # Load it new_record = Record.loads(dump, loader=dumper) assert 'count' not in new_record