prophesize(EntityManagerInterface::class); $em->remove(Argument::type(CalendarRange::class))->shouldNotBeCalled(); $machineHttpClient = new MockHttpClient([ new MockResponse(self::REMOTE_CALENDAR_RANGE, ['http_code' => 200]), ]); $calendarRangeSyncer = new CalendarRangeSyncer( $em->reveal(), new NullLogger(), $machineHttpClient ); $calendarRange = new CalendarRange(); $calendarRange ->setUser($user = new User()); $calendar = new Calendar(); $calendar->setCalendarRange($calendarRange); $notification = json_decode(self::NOTIF_DELETE, true); $calendarRangeSyncer->handleCalendarRangeSync( $calendarRange, $notification['value'][0], $user ); } public function testDeleteCalendarRangeWithoutAssociation(): void { $em = $this->prophesize(EntityManagerInterface::class); $em->remove(Argument::type(CalendarRange::class))->shouldBeCalled(); $machineHttpClient = new MockHttpClient([ new MockResponse(self::REMOTE_CALENDAR_RANGE, ['http_code' => 200]), ]); $calendarRangeSyncer = new CalendarRangeSyncer( $em->reveal(), new NullLogger(), $machineHttpClient ); $calendarRange = new CalendarRange(); $calendarRange ->setUser($user = new User()); $notification = json_decode(self::NOTIF_DELETE, true); $calendarRangeSyncer->handleCalendarRangeSync( $calendarRange, $notification['value'][0], $user ); $this->assertTrue($calendarRange->preventEnqueueChanges); } public function testUpdateCalendarRange(): void { $em = $this->prophesize(EntityManagerInterface::class); $machineHttpClient = new MockHttpClient([ new MockResponse(self::REMOTE_CALENDAR_RANGE, ['http_code' => 200]), ]); $calendarRangeSyncer = new CalendarRangeSyncer( $em->reveal(), new NullLogger(), $machineHttpClient ); $calendarRange = new CalendarRange(); $calendarRange ->setUser($user = new User()) ->setStartDate(new DateTimeImmutable('2020-01-01 15:00:00')) ->setEndDate(new DateTimeImmutable('2020-01-01 15:30:00')) ->addRemoteAttributes([ 'lastModifiedDateTime' => 0, 'changeKey' => 'abc', ]); $notification = json_decode(self::NOTIF_UPDATE, true); $calendarRangeSyncer->handleCalendarRangeSync( $calendarRange, $notification['value'][0], $user ); $this->assertStringContainsString( '2022-06-10T15:30:00', $calendarRange->getStartDate()->format(DateTimeImmutable::ATOM) ); $this->assertStringContainsString( '2022-06-10T17:30:00', $calendarRange->getEndDate()->format(DateTimeImmutable::ATOM) ); $this->assertTrue($calendarRange->preventEnqueueChanges); } }