"""Format response helper tests.""" from abacus_event.utils.format_response import ( prepare_dataload_response, prepare_dataload_with_data_as_list_response, ) def test_prepare_dataload_response_maps_one_record_per_id_in_order(): """One-to-one shaper returns one entry per id, in request order, None if absent.""" records = [{'id': 2, 'v': 'b'}, {'id': 1, 'v': 'a'}] result = prepare_dataload_response([1, 2, 3], records, 'id') assert result == [ {'data': {'id': 1, 'v': 'a'}}, {'data': {'id': 2, 'v': 'b'}}, {'data': None}, ] def test_prepare_dataload_with_data_as_list_groups_records_per_id_in_order(): """One-to-many shaper groups all records for an id, ordered per requested id.""" records = [ {'tid': 1, 'v': 'a'}, {'tid': 2, 'v': 'b'}, {'tid': 1, 'v': 'c'}, ] result = prepare_dataload_with_data_as_list_response([1, 2, 3], records, 'tid') # id 1 has two records (grouping order preserved), id 2 one, id 3 none -> None. assert result == [ {'data': [{'tid': 1, 'v': 'a'}, {'tid': 1, 'v': 'c'}]}, {'data': [{'tid': 2, 'v': 'b'}]}, {'data': None}, ] def test_prepare_dataload_with_data_as_list_empty_records(): """Every requested id maps to None when there are no records.""" result = prepare_dataload_with_data_as_list_response([1, 2], [], 'tid') assert result == [{'data': None}, {'data': None}]