|
86 | 86 | end |
87 | 87 | end |
88 | 88 |
|
| 89 | + describe 'validate inactivated_at for inactive dojos' do |
| 90 | + it 'ensures all inactive dojos in YAML have inactivated_at date' do |
| 91 | + yaml_data = Dojo.load_attributes_from_yaml |
| 92 | + inactive_dojos = yaml_data.select { |dojo| dojo['is_active'] == false } |
| 93 | + |
| 94 | + missing_dates = inactive_dojos.select { |dojo| dojo['inactivated_at'].nil? } |
| 95 | + |
| 96 | + if missing_dates.any? |
| 97 | + missing_info = missing_dates.map { |d| "ID: #{d['id']} (#{d['name']})" }.join(", ") |
| 98 | + fail "以下の非アクティブDojoにinactivated_atが設定されていません: #{missing_info}" |
| 99 | + end |
| 100 | + |
| 101 | + expect(inactive_dojos.all? { |dojo| dojo['inactivated_at'].present? }).to be true |
| 102 | + end |
| 103 | + |
| 104 | + it 'verifies inactivated_at dates are valid' do |
| 105 | + yaml_data = Dojo.load_attributes_from_yaml |
| 106 | + inactive_dojos = yaml_data.select { |dojo| dojo['is_active'] == false } |
| 107 | + |
| 108 | + inactive_dojos.each do |dojo| |
| 109 | + next if dojo['inactivated_at'].nil? |
| 110 | + |
| 111 | + # 日付が正しくパースできることを確認 |
| 112 | + expect { |
| 113 | + Time.zone.parse(dojo['inactivated_at']) |
| 114 | + }.not_to raise_error, "ID: #{dojo['id']} (#{dojo['name']}) のinactivated_atが不正な形式です: #{dojo['inactivated_at']}" |
| 115 | + |
| 116 | + # 未来の日付でないことを確認 |
| 117 | + date = Time.zone.parse(dojo['inactivated_at']) |
| 118 | + expect(date).to be <= Time.current, "ID: #{dojo['id']} (#{dojo['name']}) のinactivated_atが未来の日付です: #{dojo['inactivated_at']}" |
| 119 | + |
| 120 | + # created_atより後の日付であることを確認(もしcreated_atがある場合) |
| 121 | + if dojo['created_at'].present? |
| 122 | + created_date = Time.zone.parse(dojo['created_at']) |
| 123 | + expect(date).to be >= created_date, "ID: #{dojo['id']} (#{dojo['name']}) のinactivated_atがcreated_atより前です" |
| 124 | + end |
| 125 | + end |
| 126 | + end |
| 127 | + end |
| 128 | + |
89 | 129 | # inactivated_at カラムの基本的なテスト |
90 | 130 | describe 'inactivated_at functionality' do |
91 | 131 | before do |
|
0 commit comments