Skip to content

Commit

Permalink
Test NewModuleMailJob.enqueue with empty ModuleRelease table
Browse files Browse the repository at this point in the history
  • Loading branch information
peterdavidhamilton committed Dec 1, 2023
1 parent 5e79f4c commit 56f42e6
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 19 deletions.
2 changes: 1 addition & 1 deletion app/jobs/new_module_mail_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def latest_module
def new_module_published?
return false unless ModuleRelease.exists?

ModuleRelease.ordered.last.module_position < latest_module.position
ModuleRelease.ordered.last&.module_position.to_i < latest_module.position
end

# @param mod [Training::Module]
Expand Down
41 changes: 23 additions & 18 deletions spec/models/data_analysis/user_overview_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,40 +57,45 @@
complete_registration_mail_recipients: 1,
start_training_mail_recipients: 1,
continue_training_mail_recipients: 0,
new_module_mail_recipients: 1,
new_module_mail_recipients: 5,
},
]
end

let(:user_1) do
create :user, :registered, module_time_to_completion: { alpha: 1, bravo: 1, charlie: 0 }
let(:user) do
create :user, :registered
end

let(:user_2) do
create :user, :registered, module_time_to_completion: { alpha: 2, bravo: 0, charlie: 1 }
create :user, :registered,
module_time_to_completion: { alpha: 1, bravo: 1, charlie: 0 }
end

let(:release_1) { create(:release) }
let(:user_3) do
create :user, :registered,
module_time_to_completion: { alpha: 2, bravo: 0, charlie: 1 }
end

let(:release) { create(:release) }

before do
# create records for the previously released modules completed by the `new_module_mail_recipients`
create(:module_release, release_id: release_1.id, module_position: 1, name: 'alpha')
create(:module_release, release_id: release_1.id, module_position: 2, name: 'bravo')
create(:module_release, release_id: release_1.id, module_position: 3, name: 'charlie')
create(:module_release, release_id: release.id, module_position: 1, name: 'alpha')
create(:module_release, release_id: release.id, module_position: 2, name: 'bravo')
create(:module_release, release_id: release.id, module_position: 3, name: 'charlie')

# user#1
complete_module(alpha, 1.minute)
complete_module(bravo, 1.minute)
complete_module(charlie, 1.minute)

# create notes for the `with_notes` and `without_notes` users
create(:note, user: user_1)
# user#2 user#3 with notes
create(:note, user: user_2)
create(:note, user: user_3)

# A user who confirmed their email 4 weeks ago will receive the complete registration mail
# user#4 complete registration notification
create(:user, :confirmed, confirmed_at: 4.weeks.ago)
# A registered user who will receive the start training mail
# user#5 start training notification
create(:user, :registered, confirmed_at: 4.weeks.ago)

# This will complete the alpha, bravo and charlie modules for `user`
complete_module(alpha, 1.minute)
complete_module(bravo, 1.minute)
complete_module(charlie, 1.minute)
end

it_behaves_like 'a data export model'
Expand Down

0 comments on commit 56f42e6

Please sign in to comment.