Skip to content

Commit 62710ab

Browse files
committed
Refactor SchoolImportJob to use SchoolVerificationService directly instead of duplicating.
1 parent f182293 commit 62710ab

File tree

4 files changed

+22
-15
lines changed

4 files changed

+22
-15
lines changed

app/jobs/school_import_job.rb

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ class SchoolImportJob < ApplicationJob
88

99
queue_as :import_schools_job
1010

11-
def perform(schools_data:, user_id:)
11+
def perform(schools_data:, user_id:, token:)
12+
@token = token
1213
@results = {
1314
successful: [],
1415
failed: []
@@ -76,11 +77,8 @@ def import_school(school_data)
7677
if result.success?
7778
school = result[:school]
7879

79-
# Auto-verify the imported school
80-
school.verify!
81-
82-
# Create owner role
83-
Role.owner.create!(school_id: school.id, user_id: owner[:id])
80+
# Auto-verify the imported school using the verification service
81+
SchoolVerificationService.new(school).verify(token: @token)
8482

8583
@results[:successful] << {
8684
name: school.name,

lib/concepts/school/operations/import_batch.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def call(csv_file:, current_user:)
2424

2525
job = enqueue_import_job(
2626
schools_data: parsed_schools[:schools],
27-
user_id: current_user.id
27+
current_user: current_user
2828
)
2929

3030
response[:job_id] = job.job_id
@@ -151,10 +151,11 @@ def validate_email_format(data, errors)
151151
errors << { field: 'owner_email', message: 'invalid email format' }
152152
end
153153

154-
def enqueue_import_job(schools_data:, user_id:)
154+
def enqueue_import_job(schools_data:, current_user:)
155155
SchoolImportJob.perform_later(
156156
schools_data: schools_data,
157-
user_id: user_id
157+
user_id: current_user.id,
158+
token: current_user.token
158159
)
159160
end
160161
end

spec/concepts/school/import_batch_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
hash_including(name: 'Test School 1'),
3939
hash_including(name: 'Test School 2')
4040
),
41-
user_id: current_user.id
41+
user_id: current_user.id,
42+
token: current_user.token
4243
)
4344
)
4445
end

spec/jobs/school_import_job_spec.rb

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,16 @@
3838
allow(UserInfoApiClient).to receive(:find_user_by_email)
3939
.with('owner2@example.com')
4040
.and_return({ id: owner2_id, email: 'owner2@example.com' })
41+
42+
allow(ProfileApiClient).to receive(:create_school).and_return(true)
4143
end
4244

4345
context 'when all schools can be created successfully' do
4446
it 'creates schools and returns successful results' do
4547
results = described_class.new.perform(
4648
schools_data: schools_data,
47-
user_id: user_id
49+
user_id: user_id,
50+
token: token
4851
)
4952

5053
expect(results[:successful].count).to eq(2)
@@ -56,8 +59,9 @@
5659
expect(school_1.code).to be_present
5760
expect(school_1.user_origin).to eq('experience_cs')
5861

59-
# Check owner role was created
62+
# Check owner and teacher roles were created
6063
expect(Role.owner.exists?(school_id: school_1.id, user_id: owner1_id)).to be true
64+
expect(Role.teacher.exists?(school_id: school_1.id, user_id: owner1_id)).to be true
6165
end
6266
end
6367

@@ -71,7 +75,8 @@
7175
it 'adds failed result for that school' do
7276
results = described_class.new.perform(
7377
schools_data: [schools_data.first],
74-
user_id: user_id
78+
user_id: user_id,
79+
token: token
7580
)
7681

7782
expect(results[:successful].count).to eq(0)
@@ -91,7 +96,8 @@
9196
it 'adds failed result for that school' do
9297
results = described_class.new.perform(
9398
schools_data: [schools_data.first],
94-
user_id: user_id
99+
user_id: user_id,
100+
token: token
95101
)
96102

97103
expect(results[:successful].count).to eq(0)
@@ -125,7 +131,8 @@
125131
it 'handles string keys correctly' do
126132
results = described_class.new.perform(
127133
schools_data: schools_data_with_string_keys,
128-
user_id: user_id
134+
user_id: user_id,
135+
token: token
129136
)
130137

131138
expect(results[:successful].count).to eq(1)

0 commit comments

Comments
 (0)