|
63 | 63 | } |
64 | 64 | end |
65 | 65 |
|
66 | | - it 'does not filter by last_name' do |
67 | | - expect(Contact.apply_filter(invalid_params)).to include(anakin, harry) |
| 66 | + it 'raises an exception' do |
| 67 | + expect { Contact.apply_filter(invalid_params) }.to raise_exception(Jsonapi::InvalidAttributeError, 'last_name is not valid as filter attribute.') |
68 | 68 | end |
69 | 69 | end |
70 | 70 | end |
|
91 | 91 | expect(Contact.apply_sort(valid_params).pluck(:id)).to eq(expected_ids) |
92 | 92 | expect(Contact.apply_sort(valid_params).pluck(:id)).to_not eq(not_expected_ids) |
93 | 93 | end |
94 | | - |
95 | | - it 'sorts by allowed fields only' do |
96 | | - valid_params = { sort: 'last_name' } # must be ignored |
97 | | - expected_ids = Contact.order(last_name: :desc).pluck(:id) # default sort |
98 | | - not_expected_ids = Contact.order(:last_name).pluck(:id) # params sort |
99 | | - |
100 | | - expect(Contact.apply_sort(valid_params, allowed: [:first_name, :age]).pluck(:id)).to eq(expected_ids) |
101 | | - expect(Contact.apply_sort(valid_params, allowed: [:first_name, :age]).pluck(:id)).to_not eq(not_expected_ids) |
102 | | - end |
103 | 94 | end |
104 | 95 |
|
105 | 96 | context 'with invalid params' do |
106 | 97 | let(:anakin) { create(:contact, first_name: 'Anakin', last_name: 'Skywalker', age: 19) } |
107 | 98 | let(:harry) { create(:contact, first_name: 'Harry', last_name: 'Potter', age: 13) } |
108 | 99 |
|
109 | | - it 'does not sort by age' do |
| 100 | + it 'raises an exception' do |
110 | 101 | invalid_params = { sort: 'age' } |
111 | | - expected_ids = Contact.pluck(:id) |
112 | | - not_expected_ids = Contact.order(:age).pluck(:id) |
113 | 102 |
|
114 | | - expect(Contact.apply_sort(invalid_params).pluck(:id)).to eq(expected_ids) |
115 | | - expect(Contact.apply_sort(invalid_params).pluck(:id)).to_not eq(not_expected_ids) |
| 103 | + expect { Contact.apply_sort(invalid_params) }.to raise_exception(Jsonapi::InvalidAttributeError, 'age is not valid as sort attribute.') |
116 | 104 | end |
117 | 105 | end |
118 | 106 | end |
|
0 commit comments