|
6 | 6 | let(:student) { create(:student, school:) } |
7 | 7 | let(:teacher) { create(:teacher, school:) } |
8 | 8 | let(:school) { create(:school, creator_id: SecureRandom.uuid) } |
9 | | - let!(:us_school) { create(:school, country_code: 'US', district_name: 'Some District', district_nces_id: '010000000001', creator_id: SecureRandom.uuid) } |
| 9 | + let!(:us_school) { create(:school, country_code: 'US', district_name: 'Some District', district_nces_id: '0100000', creator_id: SecureRandom.uuid) } |
10 | 10 | let!(:ireland_school) { create(:school, country_code: 'IE', school_roll_number: '01572D', creator_id: SecureRandom.uuid) } |
11 | 11 |
|
12 | 12 | describe 'associations' do |
|
238 | 238 | end |
239 | 239 |
|
240 | 240 | it 'requires district_nces_id to be unique if provided' do |
241 | | - duplicate_school = build(:school, country_code: 'US', district_nces_id: '010000000001') |
| 241 | + duplicate_school = build(:school, country_code: 'US', district_nces_id: '0100000') |
242 | 242 | expect(duplicate_school).not_to be_valid |
243 | 243 | end |
244 | 244 |
|
245 | 245 | it 'returns error if district_nces_id is not unique' do |
246 | | - duplicate_school = build(:school, country_code: 'US', district_nces_id: '010000000001') |
| 246 | + duplicate_school = build(:school, country_code: 'US', district_nces_id: '0100000') |
247 | 247 | duplicate_school.valid? |
248 | 248 | expect(duplicate_school.errors.details[:district_nces_id]).to include(hash_including(error: :taken)) |
249 | 249 | end |
250 | 250 |
|
251 | | - it 'accepts a valid district_nces_id format (12 digits)' do |
252 | | - us_school.district_nces_id = '010000000001' |
| 251 | + it 'accepts a valid district_nces_id format (7 digits)' do |
| 252 | + us_school.district_nces_id = '0100000' |
253 | 253 | expect(us_school).to be_valid |
254 | 254 | end |
255 | 255 |
|
256 | 256 | it 'rejects a district_nces_id with non-digit characters' do |
257 | | - us_school.district_nces_id = '01000000000A' |
| 257 | + us_school.district_nces_id = '010000A' |
258 | 258 | expect(us_school).not_to be_valid |
259 | | - expect(us_school.errors[:district_nces_id]).to include('must be 12 digits (e.g., 010000000001)') |
| 259 | + expect(us_school.errors[:district_nces_id]).to include('must be 7 digits (e.g., 0100000)') |
260 | 260 | end |
261 | 261 |
|
262 | 262 | it 'rejects a district_nces_id with wrong length' do |
263 | | - us_school.district_nces_id = '12345678901' |
| 263 | + us_school.district_nces_id = '123456' |
264 | 264 | expect(us_school).not_to be_valid |
265 | | - expect(us_school.errors[:district_nces_id]).to include('must be 12 digits (e.g., 010000000001)') |
| 265 | + expect(us_school.errors[:district_nces_id]).to include('must be 7 digits (e.g., 0100000)') |
266 | 266 | end |
267 | 267 |
|
268 | 268 | it 'allows district_nces_id reuse when original school is rejected' do |
269 | | - us_school.district_nces_id = '010000000001' |
| 269 | + us_school.district_nces_id = '0100000' |
270 | 270 | us_school.reject |
271 | 271 |
|
272 | | - new_school = build(:school, country_code: 'US', district_name: 'Some District', district_nces_id: '010000000001') |
| 272 | + new_school = build(:school, country_code: 'US', district_name: 'Some District', district_nces_id: '0100000') |
273 | 273 | expect(new_school).to be_valid |
274 | 274 | expect { new_school.save! }.not_to raise_error |
275 | 275 | end |
|
0 commit comments