test preserved schedule start

This commit is contained in:
Yisroel Baum 2026-08-22 21:58:59 +03:00
parent db6b41ee42
commit bcbc2e6ba3
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
3 changed files with 20 additions and 15 deletions

View file

@ -558,7 +558,7 @@ class ScheduleEndpointTest extends TestCase
->assertJsonCount(2, 'assignments'); ->assertJsonCount(2, 'assignments');
} }
public function test_it_reschedules_only_unfinished_assignments(): void public function test_it_reschedules_only_unfinished_assignments_without_changing_start_date(): void
{ {
$user = $this->createUser('reader@example.com'); $user = $this->createUser('reader@example.com');
$set = $this->createSet($user, 'Course'); $set = $this->createSet($user, 'Course');
@ -594,23 +594,24 @@ class ScheduleEndpointTest extends TestCase
]); ]);
$response->assertOk() $response->assertOk()
->assertJsonPath('schedule.startDate', '2026-08-20') ->assertJsonPath('schedule.startDate', '2026-08-10')
->assertJsonPath('schedule.targetDate', '2026-08-21') ->assertJsonPath('schedule.targetDate', '2026-08-21')
->assertJsonCount(12, 'schedule.days')
->assertJsonPath('schedule.days.0.date', '2026-08-10') ->assertJsonPath('schedule.days.0.date', '2026-08-10')
->assertJsonPath( ->assertJsonPath(
'schedule.days.0.assignments.0.completedAt', 'schedule.days.0.assignments.0.completedAt',
'2026-08-15T12:30:45+00:00', '2026-08-15T12:30:45+00:00',
) )
->assertJsonPath('schedule.days.1.date', '2026-08-20') ->assertJsonPath('schedule.days.10.date', '2026-08-20')
->assertJsonCount(1, 'schedule.days.1.assignments') ->assertJsonCount(1, 'schedule.days.10.assignments')
->assertJsonPath('schedule.days.1.assignments.0.id', 2) ->assertJsonPath('schedule.days.10.assignments.0.id', 2)
->assertJsonPath('schedule.days.2.date', '2026-08-21') ->assertJsonPath('schedule.days.11.date', '2026-08-21')
->assertJsonCount(2, 'schedule.days.2.assignments') ->assertJsonCount(2, 'schedule.days.11.assignments')
->assertJsonPath('schedule.days.2.assignments.0.id', 3) ->assertJsonPath('schedule.days.11.assignments.0.id', 3)
->assertJsonPath('schedule.days.2.assignments.1.id', 4); ->assertJsonPath('schedule.days.11.assignments.1.id', 4);
$this->assertDatabaseHas('schedules', [ $this->assertDatabaseHas('schedules', [
'id' => 1, 'id' => 1,
'start_date' => '2026-08-20', 'start_date' => '2026-08-10',
'target_date' => '2026-08-21', 'target_date' => '2026-08-21',
]); ]);
$this->assertDatabaseHas('schedule_assignments', [ $this->assertDatabaseHas('schedule_assignments', [

View file

@ -19,7 +19,7 @@ use Tests\Fakes\FakeScheduleRepository;
class RescheduleScheduleTest extends TestCase class RescheduleScheduleTest extends TestCase
{ {
public function test_it_redistributes_only_unfinished_assignments(): void public function test_it_redistributes_only_unfinished_assignments_without_changing_start_date(): void
{ {
$user = $this->user(1, 'reader@example.com'); $user = $this->user(1, 'reader@example.com');
$repository = new FakeScheduleRepository; $repository = new FakeScheduleRepository;
@ -42,7 +42,7 @@ class RescheduleScheduleTest extends TestCase
), ),
); );
$this->assertSame('2026-08-20', $rescheduled->getStartDate() $this->assertSame('2026-08-10', $rescheduled->getStartDate()
->format('Y-m-d')); ->format('Y-m-d'));
$this->assertSame('2026-08-21', $rescheduled->getTargetDate() $this->assertSame('2026-08-21', $rescheduled->getTargetDate()
->format('Y-m-d')); ->format('Y-m-d'));

View file

@ -249,10 +249,14 @@ const rescheduleSourceDetail = {
const rescheduledDetail = { const rescheduledDetail = {
schedule: { schedule: {
...rescheduleSourceDetail.schedule, ...rescheduleSourceDetail.schedule,
startDate: '2026-08-15', startDate: '2026-08-10',
targetDate: '2026-08-16', targetDate: '2026-08-16',
days: [ days: [
rescheduleSourceDetail.schedule.days[0], rescheduleSourceDetail.schedule.days[0],
{ date: '2026-08-11', assignments: [] },
{ date: '2026-08-12', assignments: [] },
{ date: '2026-08-13', assignments: [] },
{ date: '2026-08-14', assignments: [] },
{ {
date: '2026-08-15', date: '2026-08-15',
assignments: [rescheduleSourceDetail.schedule.days[1]?.assignments[0]], assignments: [rescheduleSourceDetail.schedule.days[1]?.assignments[0]],
@ -599,8 +603,8 @@ describe('set scheduling', () => {
'have.text', 'have.text',
'3 remaining assignments rescheduled.', '3 remaining assignments rescheduled.',
) )
cy.contains('4 Chapter_sections-v2 assignments across 2 days').should('be.visible') cy.contains('4 Chapter_sections-v2 assignments across 7 days').should('be.visible')
cy.get('.schedule-range').should('contain.text', 'Aug 15, 2026 to Aug 16, 2026') cy.get('.schedule-range').should('contain.text', 'Aug 10, 2026 to Aug 16, 2026')
cy.get('[data-assignment-section="remaining"] [data-schedule-day]').then(($days) => { cy.get('[data-assignment-section="remaining"] [data-schedule-day]').then(($days) => {
expect([...$days].map((day) => day.getAttribute('data-schedule-date'))).to.deep.equal([ expect([...$days].map((day) => day.getAttribute('data-schedule-date'))).to.deep.equal([
'2026-08-15', '2026-08-15',