Skip to content

Commit 288df07

Browse files
committed
Same refactor for JobPreferecnes Work.Pat. migration
1 parent f5746f4 commit 288df07

File tree

5 files changed

+43
-41
lines changed

5 files changed

+43
-41
lines changed

app/models/job_preferences.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,16 @@ def to_multistep
2929
def key_stages_for_phases
3030
phases.map { |phase| Vacancy::PHASES_TO_KEY_STAGES_MAPPINGS[phase.to_sym] }.flatten.uniq.sort
3131
end
32+
33+
def self.migrate_legacy_working_patterns
34+
where.not(working_patterns: nil).find_each do |jp|
35+
if jp.working_patterns.include?("term_time")
36+
jp.assign_attributes(working_patterns: (jp.working_patterns - %w[term_time] + %w[full_time]).uniq)
37+
end
38+
if jp.working_patterns.include?("flexible")
39+
jp.assign_attributes(working_patterns: (jp.working_patterns - %w[flexible] + %w[part_time]).uniq)
40+
end
41+
jp.save!(validate: false, touch: false)
42+
end
43+
end
3244
end

lib/tasks/data.rake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ namespace :backfills do
7878
end
7979
end
8080

81+
namespace :job_preferences do
82+
desc "Migrate legacy working patterns"
83+
task migrate_legacy_working_patterns: :environment do
84+
JobPreferences.migrate_legacy_working_patterns
85+
end
86+
end
87+
8188
namespace :subscriptions do
8289
desc "Discard subscriptions that fail validation (probably due to invalid email address)"
8390
task discard_invalid: :environment do

lib/tasks/migrate_legacy_job_preferences.rake

Lines changed: 0 additions & 12 deletions
This file was deleted.

spec/lib/tasks/migrate_legacy_job_preferences_task_spec.rb

Lines changed: 0 additions & 29 deletions
This file was deleted.

spec/models/job_preferences_spec.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,28 @@
4040
end
4141
end
4242
end
43+
44+
describe ".migrate_legacy_working_patterns" do
45+
let!(:pref_a) { create(:job_preferences, working_patterns: %w[term_time flexible part_time]) }
46+
let!(:pref_b) { create(:job_preferences, working_patterns: %w[flexible full_time]) }
47+
let!(:pref_c) { create(:job_preferences, working_patterns: %w[term_time]) }
48+
49+
before do
50+
create(:job_preferences)
51+
create(:job_preferences, working_patterns: nil)
52+
described_class.migrate_legacy_working_patterns
53+
end
54+
55+
it "fixes up term time flexible" do
56+
expect(pref_a.reload.working_patterns).to match_array(%w[full_time part_time])
57+
end
58+
59+
it "fixes up flexible full_time" do
60+
expect(pref_b.reload.working_patterns).to match_array(%w[part_time full_time])
61+
end
62+
63+
it "fixes up term_time" do
64+
expect(pref_c.reload.working_patterns).to match_array(%w[full_time])
65+
end
66+
end
4367
end

0 commit comments

Comments
 (0)