diff --git a/spec/jobs/import_job_spec.rb b/spec/jobs/import_job_spec.rb index 97acb372..926400c8 100644 --- a/spec/jobs/import_job_spec.rb +++ b/spec/jobs/import_job_spec.rb @@ -12,5 +12,11 @@ RSpec.describe ImportJob, type: :job do it 'creates points' do expect { perform }.to change { Point.count }.by(8) end + + it 'calls StatCreatingJob' do + expect(StatCreatingJob).to receive(:perform_later).with(user.id) + + perform + end end end diff --git a/spec/services/create_stats_spec.rb b/spec/services/create_stats_spec.rb new file mode 100644 index 00000000..271116b5 --- /dev/null +++ b/spec/services/create_stats_spec.rb @@ -0,0 +1,34 @@ +require 'rails_helper' + +RSpec.describe CreateStats do + describe '#call' do + subject(:create_stats) { described_class.new(user_ids).call } + + let(:user_ids) { [user.id] } + let(:user) { create(:user) } + + context 'when there are no points' do + it 'does not create stats' do + expect { create_stats }.not_to change { Stat.count } + end + end + + context 'when there are points' do + let!(:import) { create(:import, user: user) } + let!(:point_1) { create(:point, import: import, latitude: 0, longitude: 0) } + let!(:point_2) { create(:point, import: import, latitude: 1, longitude: 2) } + let!(:point_3) { create(:point, import: import, latitude: 3, longitude: 4) } + + + it 'creates stats' do + expect { create_stats }.to change { Stat.count }.by(1) + end + + it 'calculates distance' do + create_stats + + expect(Stat.last.distance).to eq(563) + end + end + end +end