@@ -381,6 +381,30 @@ RSpec.describe DojosController, type: :controller do
381
381
csv = CSV .parse(response.body)
382
382
expect(csv[0 ]).to eq([' 年' , ' 年末アクティブ道場数' , ' 新規開設数' , ' 非アクティブ化数' , ' 累積合計' , ' 純増減' ])
383
383
end
384
+
385
+ it ' yearパラメータなしの場合は非アクティブな道場も含む(CSV/JSON)' do
386
+ active_dojo = create(:dojo , is_active: true )
387
+ inactive_dojo = create(:dojo , is_active: false , inactivated_at: ' 2021-03-01' )
388
+
389
+ # JSON形式: 全道場を含む
390
+ get :index , format: :json
391
+ json_response = JSON .parse(response.body)
392
+ json_ids = json_response.map { |d | d[' id' ] }
393
+ expect(json_ids).to include (active_dojo.id)
394
+ expect(json_ids).to include (inactive_dojo.id)
395
+
396
+ # CSV形式: 全道場を含む
397
+ get :index , format: :csv
398
+ csv = CSV .parse(response.body, headers: true )
399
+ csv_ids = csv.map { |row | row[' ID' ].to_i }
400
+ expect(csv_ids).to include (active_dojo.id)
401
+ expect(csv_ids).to include (inactive_dojo.id)
402
+
403
+ # HTML形式: アクティブな道場のみ(既存の動作を維持)
404
+ get :index , format: :html
405
+ expect(assigns(:dojos ).map { |d | d[:id ] }).to include (active_dojo.id)
406
+ expect(assigns(:dojos ).map { |d | d[:id ] }).not_to include (inactive_dojo.id)
407
+ end
384
408
end
385
409
386
410
context ' 特定年のデータ(year=2020)' do
@@ -396,6 +420,30 @@ RSpec.describe DojosController, type: :controller do
396
420
expect(csv[0 ]).to eq([' ID' , ' 道場名' , ' 都道府県' , ' URL' , ' 設立日' , ' 状態' ])
397
421
expect(csv.size - 1 ).to eq(2 ) # ヘッダーを除いて2道場
398
422
end
423
+
424
+ it ' yearパラメータ指定時は非アクティブな道場を含まない(全形式)' do
425
+ # テストデータ: 2020年にアクティブ、2021年に非アクティブ化した道場
426
+ inactive_dojo = create(:dojo ,
427
+ created_at: ' 2019-01-01' ,
428
+ is_active: false ,
429
+ inactivated_at: ' 2021-03-01'
430
+ )
431
+
432
+ # HTML形式
433
+ get :index , params: { year: ' 2020' }, format: :html
434
+ expect(assigns(:dojos ).map { |d | d[:id ] }).not_to include (inactive_dojo.id)
435
+
436
+ # JSON形式
437
+ get :index , params: { year: ' 2020' }, format: :json
438
+ json_response = JSON .parse(response.body)
439
+ expect(json_response.map { |d | d[' id' ] }).not_to include (inactive_dojo.id)
440
+
441
+ # CSV形式
442
+ get :index , params: { year: ' 2020' }, format: :csv
443
+ csv = CSV .parse(response.body, headers: true )
444
+ csv_ids = csv.map { |row | row[' ID' ].to_i }
445
+ expect(csv_ids).not_to include (inactive_dojo.id)
446
+ end
399
447
end
400
448
401
449
context ' 無効な年が指定された場合' do
0 commit comments