getUserToken([]); $response = $this->createClientWithCredentials($token)->request('GET', '/api/c_calendar_events'); $this->assertResponseIsSuccessful(); // Asserts that the returned content type is JSON-LD (the default) $this->assertResponseHeaderSame('content-type', 'application/ld+json; charset=utf-8'); // Asserts that the returned JSON is a superset of this one $this->assertJsonContains([ '@context' => '/api/contexts/CCalendarEvent', '@id' => '/api/c_calendar_events', '@type' => 'hydra:Collection', 'hydra:totalItems' => 0, ]); $this->assertCount(0, $response->toArray()['hydra:member']); $this->assertMatchesResourceCollectionJsonSchema(CCalendarEvent::class); } public function testCreatePersonalEvent(): void { $user = $this->createUser('test'); $token = $this->getUserToken( [ 'username' => 'test', 'password' => 'test', ] ); $resourceNodeId = $user->getResourceNode()->getId(); // Current server local time (check your php.ini). $start = new \Datetime('2040-06-30 11:00'); $end = new \Datetime('2040-06-30 15:00'); $this->createClientWithCredentials($token)->request( 'POST', '/api/c_calendar_events', [ 'json' => [ 'allDay' => true, 'collective' => false, 'title' => 'hello', 'content' => '
test event
', 'startDate' => $start->format('Y-m-d H:i:s'), 'endDate' => $end->format('Y-m-d H:i:s'), 'parentResourceNodeId' => $resourceNodeId, ], ] ); $this->assertResponseIsSuccessful(); $this->assertResponseStatusCodeSame(201); $this->assertResponseHeaderSame('content-type', 'application/ld+json; charset=utf-8'); $this->assertJsonContains([ '@context' => '/api/contexts/CCalendarEvent', '@type' => 'CCalendarEvent', 'title' => 'hello', 'startDate' => $this->convertToUTCAndFormat($start), 'endDate' => $this->convertToUTCAndFormat($end), 'content' => 'test event
', 'parentResourceNode' => $resourceNodeId, ]); // Get ALL events. $response = $this->createClientWithCredentials($token)->request('GET', '/api/c_calendar_events'); $this->assertResponseIsSuccessful(); $this->assertJsonContains([ '@context' => '/api/contexts/CCalendarEvent', '@id' => '/api/c_calendar_events', '@type' => 'hydra:Collection', 'hydra:totalItems' => 1, ]); $this->assertCount(1, $response->toArray()['hydra:member']); // Get events filter by date search for a very old date. $response = $this->createClientWithCredentials($token)->request('GET', '/api/c_calendar_events', [ 'query' => [ 'startDate[after]' => '2009-02-14T18:00:00+02:00', 'endDate[before]' => '2009-02-14T19:00:00+02:00', ], ]); $this->assertCount(0, $response->toArray()['hydra:member']); // Search for valid date. $response = $this->createClientWithCredentials($token)->request('GET', '/api/c_calendar_events', [ 'query' => [ 'startDate[after]' => '2040-06-01T09:00:00+02:00', 'endDate[before]' => '2040-06-30T23:00:00+02:00', ], ]); $this->assertCount(1, $response->toArray()['hydra:member']); // Create another user and check if he has some events. $this->createUser('another'); $anotherToken = $this->getUserToken( [ 'username' => 'another', 'password' => 'another', ], true ); $this->createClientWithCredentials($anotherToken)->request('GET', '/api/c_calendar_events'); $this->assertResponseIsSuccessful(); $this->assertJsonContains([ '@context' => '/api/contexts/CCalendarEvent', '@id' => '/api/c_calendar_events', '@type' => 'hydra:Collection', 'hydra:totalItems' => 0, ]); } public function testCreateCourseEvent(): void { $course = $this->createCourse('Test'); $resourceLinkList = [[ 'cid' => $course->getId(), 'visibility' => ResourceLink::VISIBILITY_PUBLISHED, ]]; $user = $this->createUser('test'); $token = $this->getUserToken( [ 'username' => 'test', 'password' => 'test', ] ); $resourceNodeId = $course->getResourceNode()->getId(); // Current server local time (check your php.ini). $start = new \Datetime('2040-06-30 11:00'); $end = new \Datetime('2040-06-30 15:00'); $this->createClientWithCredentials($token)->request( 'POST', '/api/c_calendar_events', [ 'json' => [ 'allDay' => true, 'collective' => false, 'title' => 'hello', 'content' => 'test event
', 'startDate' => $start->format('Y-m-d H:i:s'), 'endDate' => $end->format('Y-m-d H:i:s'), 'parentResourceNodeId' => $resourceNodeId, 'resourceLinkListFromEntity' => $resourceLinkList, ], ] ); $this->assertResponseIsSuccessful(); $this->assertResponseStatusCodeSame(201); $this->assertResponseHeaderSame('content-type', 'application/ld+json; charset=utf-8'); $this->assertJsonContains([ '@context' => '/api/contexts/CCalendarEvent', '@type' => 'CCalendarEvent', 'title' => 'hello', 'startDate' => $this->convertToUTCAndFormat($start), 'endDate' => $this->convertToUTCAndFormat($end), 'content' => 'test event
', 'parentResourceNode' => $resourceNodeId, ]); // Get ALL events. $this->createClientWithCredentials($token)->request('GET', '/api/c_calendar_events'); $this->assertResponseIsSuccessful(); $this->assertJsonContains([ '@context' => '/api/contexts/CCalendarEvent', '@id' => '/api/c_calendar_events', '@type' => 'hydra:Collection', 'hydra:totalItems' => 1, ]); } }