|
16 | 16 | end |
17 | 17 |
|
18 | 18 | describe 'transitions' do |
| 19 | + it 'recalculates the parent lesson submitted projects count after each state change' do |
| 20 | + teacher = create(:teacher, school:) |
| 21 | + lesson = create(:lesson, school:, user_id: teacher.id) |
| 22 | + remix = create(:project, school:, user_id: student.id, remixed_from_id: lesson.project.id) |
| 23 | + state_machine = described_class.new(remix.school_project, transition_class: SchoolProjectTransition) |
| 24 | + |
| 25 | + expect do |
| 26 | + state_machine.transition_to!(:submitted) |
| 27 | + end.to change { lesson.reload.submitted_projects_count }.from(0).to(1) |
| 28 | + |
| 29 | + expect do |
| 30 | + state_machine.transition_to!(:returned) |
| 31 | + end.to change { lesson.reload.submitted_projects_count }.from(1).to(0) |
| 32 | + end |
| 33 | + |
| 34 | + it 'does not recalculate the parent lesson submitted projects count for transitions that do not enter or leave submitted' do |
| 35 | + teacher = create(:teacher, school:) |
| 36 | + lesson = create(:lesson, school:, user_id: teacher.id, submitted_projects_count: 7) |
| 37 | + remix = create(:project, school:, user_id: student.id, remixed_from_id: lesson.project.id) |
| 38 | + state_machine = described_class.new(remix.school_project, transition_class: SchoolProjectTransition) |
| 39 | + |
| 40 | + expect do |
| 41 | + state_machine.transition_to!(:complete) |
| 42 | + end.not_to change { lesson.reload.submitted_projects_count } |
| 43 | + end |
| 44 | + |
19 | 45 | context 'when in unsubmitted state' do |
20 | 46 | it 'can transition to submitted' do |
21 | 47 | expect(state_machine.can_transition_to?(:submitted)).to be true |
|
0 commit comments