require "spec_helper" RSpec.describe CanvasSync::Processors::CourseCompletionReportProcessor do describe '#process' do it 'inserts course progresses' do expect { described_class.process('spec/support/fixtures/reports/course_progresses.csv', {}, 1) }.to change { CourseProgress.count }.by(2) cp = CourseProgress.first expect(cp).to have_attributes( canvas_user_id: 1, canvas_course_id: 1, requirement_count: 0, requirement_completed_count: 0, ) expect(cp.completion_date.strftime('%Y-%m-%d %H:%M:%S')).to eq('2024-05-01 09:00:00') expect(CourseProgress.last).to have_attributes( canvas_user_id: 2, canvas_course_id: 2, requirement_count: 1, requirement_completed_count: 1, completion_date: nil ) end context 'record already present in the database' do before do described_class.process('spec/support/fixtures/reports/course_progresses.csv', {}, 1) end it 'updates the course progress' do expect { described_class.process('spec/support/fixtures/reports/course_progresses_conflict.csv', {}, 1) }.to change { CourseProgress.count }.by(0) cp = CourseProgress.first expect(cp).to have_attributes( canvas_user_id: 1, canvas_course_id: 1, requirement_count: 10, requirement_completed_count: 10, ) expect(cp.completion_date.strftime('%Y-%m-%d %H:%M:%S')).to eq('2028-05-01 09:00:00') end end end end