Skip to content

Commit a447999

Browse files
committed
test: CSV合計行削除に対応したテストの修正
CSVから合計行を削除したことに伴い、関連するテストを更新 ## 変更内容 1. counter合計値のテストを個別道場のcounter値確認に変更 2. 合計行の存在確認テストをデータ一貫性確認テストに変更 3. 全期間CSVのヘッダーに閉鎖日カラムを追加 ## テスト結果 - 全25個のテストが成功 - CSVデータの一貫性が保証される
1 parent 9b66204 commit a447999

File tree

1 file changed

+28
-21
lines changed

1 file changed

+28
-21
lines changed

spec/requests/dojos_spec.rb

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -224,26 +224,28 @@
224224
expect(multi_branch_row["道場数"]).to eq("3")
225225
end
226226

227-
it "calculates counter_sum correctly for CSV" do
227+
it "includes counter field in CSV data rows" do
228228
get dojos_path(format: :csv)
229229

230-
expected_sum = [@dojo_2020_active, @dojo_2020_inactive, @dojo_2021_active,
231-
@dojo_2019_inactive, @dojo_multi_branch].sum(&:counter)
232-
# @counter_sum はCSVで使用されるので、CSVリクエスト時に検証
233-
csv = CSV.parse(response.body)
234-
last_line = csv.last
235-
expect(last_line[2]).to eq(expected_sum.to_s)
230+
csv = CSV.parse(response.body, headers: true)
231+
# 各道場のcounter値が正しく含まれることを確認
232+
multi_branch_row = csv.find { |row| row["ID"] == @dojo_multi_branch.id.to_s }
233+
expect(multi_branch_row["道場数"]).to eq("3")
234+
235+
normal_dojo_row = csv.find { |row| row["ID"] == @dojo_2020_active.id.to_s }
236+
expect(normal_dojo_row["道場数"]).to eq("1")
236237
end
237238

238-
it "calculates counter_sum for filtered year in CSV" do
239+
it "filters counter values correctly for specific year" do
239240
get dojos_path(year: 2020, format: :csv)
240241

241-
# 2020年末時点でアクティブな道場のcounter合計
242-
active_in_2020 = [@dojo_2020_active, @dojo_2020_inactive, @dojo_multi_branch]
243-
expected_sum = active_in_2020.sum(&:counter)
244-
csv = CSV.parse(response.body)
245-
last_line = csv.last
246-
expect(last_line[2]).to eq(expected_sum.to_s)
242+
csv = CSV.parse(response.body, headers: true)
243+
# 2020年末時点でアクティブな道場のみが含まれることを確認
244+
dojo_ids = csv.map { |row| row["ID"].to_i }
245+
expect(dojo_ids).to include(@dojo_2020_active.id)
246+
expect(dojo_ids).to include(@dojo_2020_inactive.id) # 2021年に非アクティブ化されたので2020年末時点ではアクティブ
247+
expect(dojo_ids).to include(@dojo_multi_branch.id)
248+
expect(dojo_ids).not_to include(@dojo_2021_active.id) # 2021年作成なので含まれない
247249
end
248250
end
249251

@@ -252,17 +254,22 @@
252254
get dojos_path(format: :csv)
253255
csv = CSV.parse(response.body, headers: true)
254256

255-
expect(csv.headers).to eq(['ID', '道場名', '道場数', '都道府県', 'URL', '設立日', '状態'])
257+
# 全期間の場合は閉鎖日カラムが追加される
258+
expect(csv.headers).to eq(['ID', '道場名', '道場数', '都道府県', 'URL', '設立日', '状態', '閉鎖日'])
256259
end
257260

258-
it "includes total row at the end" do
261+
it "does not include total row for better data consistency" do
259262
get dojos_path(format: :csv)
260-
lines = response.body.split("\n")
263+
csv = CSV.parse(response.body)
264+
265+
# 合計行が含まれないことを確認(データ一貫性のため)
266+
csv.each do |row|
267+
# IDカラムに「合計」という文字列が含まれないことを確認
268+
expect(row[0]).not_to eq("合計") if row[0]
269+
end
261270

262-
# 最後の行が合計行
263-
last_line = lines.last
264-
expect(last_line).to include("合計")
265-
expect(last_line).to include("道場")
271+
# 全ての行がデータ行またはヘッダー行であることを確認
272+
expect(csv.all? { |row| row.compact.any? }).to be true
266273
end
267274

268275
it "formats dates correctly" do

0 commit comments

Comments
 (0)