From 35c0e3dcd560fc1f658746adbb029b3d5f1dc98c Mon Sep 17 00:00:00 2001 From: JonOfUs Date: Sun, 1 Dec 2024 18:46:46 +0100 Subject: [PATCH] Fix tests not using full ISO-8601 --- .../EpisodeActionControllerTest.php | 288 ++++++++++-------- .../EpisodeActionRepositoryTest.php | 6 +- 2 files changed, 160 insertions(+), 134 deletions(-) diff --git a/tests/Integration/Controller/EpisodeActionControllerTest.php b/tests/Integration/Controller/EpisodeActionControllerTest.php index dad7e14..53c51c9 100644 --- a/tests/Integration/Controller/EpisodeActionControllerTest.php +++ b/tests/Integration/Controller/EpisodeActionControllerTest.php @@ -20,117 +20,128 @@ use tests\Helper\DatabaseTransaction; */ class EpisodeActionControllerTest extends TestCase { + use DatabaseTransaction; - use DatabaseTransaction; + const TEST_GUID = "test_guid_123q45345"; + private IAppContainer $container; - const TEST_GUID = "test_guid_123q45345"; - private IAppContainer $container; + public function setUp(): void + { + parent::setUp(); + $app = new App("gpoddersync"); + $this->container = $app->getContainer(); + $this->db = \OC::$server->getDatabaseConnection(); + } - public function setUp(): void { - parent::setUp(); - $app = new App('gpoddersync'); - $this->container = $app->getContainer(); - $this->db = \OC::$server->getDatabaseConnection(); - } + /** + * @before + */ + public function before() + { + $this->startTransaction(); + } - /** - * @before - */ - public function before() - { - $this->startTransaction(); - } + public function testEpisodeActionListAction() + { + $userId = uniqid("test_user"); + $episodeActionController = new EpisodeActionController( + "gpoddersync", + $this->createMock(IRequest::class), + $userId, + $this->container->get(EpisodeActionRepository::class), + $this->container->get(EpisodeActionSaver::class) + ); + /** @var EpisodeActionWriter $episodeActionWriter */ + $episodeActionWriter = $this->container->get( + EpisodeActionWriter::class + ); - public function testEpisodeActionListAction() - { - $userId = uniqid("test_user"); - $episodeActionController = new EpisodeActionController( - "gpoddersync", - $this->createMock(IRequest::class), - $userId, - $this->container->get(EpisodeActionRepository::class), - $this->container->get(EpisodeActionSaver::class) - ); + $mark = 1633520363; + $episodeActionEntity = new EpisodeActionEntity(); + $expectedPodcast = uniqid("test"); + $episodeActionEntity->setPodcast($expectedPodcast); + $expectedEpisode = uniqid("test"); + $episodeActionEntity->setEpisode($expectedEpisode); + $episodeActionEntity->setAction("PLAY"); + $episodeActionEntity->setPosition(5); + $episodeActionEntity->setStarted(0); + $episodeActionEntity->setTotal(123); + $episodeActionEntity->setTimestampEpoch($mark + 600); + $episodeActionEntity->setUserId($userId); + $episodeActionEntity->setGuid(self::TEST_GUID); + $episodeActionWriter->save($episodeActionEntity); - /** @var EpisodeActionWriter $episodeActionWriter */ - $episodeActionWriter = $this->container->get(EpisodeActionWriter::class); + $response = $episodeActionController->list($mark); + self::assertCount(1, $response->getData()["actions"]); - $mark = 1633520363; - $episodeActionEntity = new EpisodeActionEntity(); - $expectedPodcast = uniqid("test"); - $episodeActionEntity->setPodcast($expectedPodcast); - $expectedEpisode = uniqid("test"); - $episodeActionEntity->setEpisode($expectedEpisode); - $episodeActionEntity->setAction("PLAY"); - $episodeActionEntity->setPosition(5); - $episodeActionEntity->setStarted(0); - $episodeActionEntity->setTotal(123); - $episodeActionEntity->setTimestampEpoch($mark+600); - $episodeActionEntity->setUserId($userId); - $episodeActionEntity->setGuid(self::TEST_GUID); - $episodeActionWriter->save($episodeActionEntity); + $episodeActionInResponse = $response->getData()["actions"][0]; + self::assertSame( + "2021-10-06T11:49:23+00:00", + $episodeActionInResponse["timestamp"] + ); + self::assertSame($expectedEpisode, $episodeActionInResponse["episode"]); + self::assertSame($expectedPodcast, $episodeActionInResponse["podcast"]); + self::assertSame(self::TEST_GUID, $episodeActionInResponse["guid"]); + self::assertSame(5, $episodeActionInResponse["position"]); + self::assertSame(0, $episodeActionInResponse["started"]); + self::assertSame(123, $episodeActionInResponse["total"]); + self::assertSame("PLAY", $episodeActionInResponse["action"]); + } - $response = $episodeActionController->list($mark); - self::assertCount(1, $response->getData()['actions']); + public function testEpisodeActionListWithoutSinceAction() + { + $userId = uniqid("test_user"); + $episodeActionController = new EpisodeActionController( + "gpoddersync", + $this->createMock(IRequest::class), + $userId, + $this->container->get(EpisodeActionRepository::class), + $this->container->get(EpisodeActionSaver::class) + ); - $episodeActionInResponse = $response->getData()['actions'][0]; - self::assertSame("2021-10-06T11:49:23", $episodeActionInResponse['timestamp']); - self::assertSame($expectedEpisode, $episodeActionInResponse['episode']); - self::assertSame($expectedPodcast, $episodeActionInResponse['podcast']); - self::assertSame(self::TEST_GUID, $episodeActionInResponse['guid']); - self::assertSame(5, $episodeActionInResponse['position']); - self::assertSame(0, $episodeActionInResponse['started']); - self::assertSame(123, $episodeActionInResponse['total']); - self::assertSame("PLAY", $episodeActionInResponse['action']); - } + /** @var EpisodeActionWriter $episodeActionWriter */ + $episodeActionWriter = $this->container->get( + EpisodeActionWriter::class + ); - public function testEpisodeActionListWithoutSinceAction() - { - $userId = uniqid("test_user"); - $episodeActionController = new EpisodeActionController( - "gpoddersync", - $this->createMock(IRequest::class), - $userId, - $this->container->get(EpisodeActionRepository::class), - $this->container->get(EpisodeActionSaver::class) - ); + $episodeActionEntity = new EpisodeActionEntity(); + $expectedPodcast = uniqid("test"); + $episodeActionEntity->setPodcast($expectedPodcast); + $expectedEpisode = uniqid("test"); + $episodeActionEntity->setEpisode($expectedEpisode); + $episodeActionEntity->setAction("PLAY"); + $episodeActionEntity->setPosition(5); + $episodeActionEntity->setStarted(0); + $episodeActionEntity->setTotal(123); + $episodeActionEntity->setTimestampEpoch(1633520363); + $episodeActionEntity->setUserId($userId); + $episodeActionEntity->setGuid(self::TEST_GUID); + $episodeActionWriter->save($episodeActionEntity); - /** @var EpisodeActionWriter $episodeActionWriter */ - $episodeActionWriter = $this->container->get(EpisodeActionWriter::class); + $response = $episodeActionController->list(); + self::assertCount(1, $response->getData()["actions"]); - $episodeActionEntity = new EpisodeActionEntity(); - $expectedPodcast = uniqid("test"); - $episodeActionEntity->setPodcast($expectedPodcast); - $expectedEpisode = uniqid("test"); - $episodeActionEntity->setEpisode($expectedEpisode); - $episodeActionEntity->setAction("PLAY"); - $episodeActionEntity->setPosition(5); - $episodeActionEntity->setStarted(0); - $episodeActionEntity->setTotal(123); - $episodeActionEntity->setTimestampEpoch(1633520363); - $episodeActionEntity->setUserId($userId); - $episodeActionEntity->setGuid(self::TEST_GUID); - $episodeActionWriter->save($episodeActionEntity); + $episodeActionInResponse = $response->getData()["actions"][0]; + self::assertSame( + "2021-10-06T11:39:23+00:00", + $episodeActionInResponse["timestamp"] + ); + self::assertSame($expectedEpisode, $episodeActionInResponse["episode"]); + self::assertSame($expectedPodcast, $episodeActionInResponse["podcast"]); + self::assertSame(self::TEST_GUID, $episodeActionInResponse["guid"]); + self::assertSame(5, $episodeActionInResponse["position"]); + self::assertSame(0, $episodeActionInResponse["started"]); + self::assertSame(123, $episodeActionInResponse["total"]); + self::assertSame("PLAY", $episodeActionInResponse["action"]); + } - $response = $episodeActionController->list(); - self::assertCount(1, $response->getData()['actions']); - - $episodeActionInResponse = $response->getData()['actions'][0]; - self::assertSame("2021-10-06T11:39:23", $episodeActionInResponse['timestamp']); - self::assertSame($expectedEpisode, $episodeActionInResponse['episode']); - self::assertSame($expectedPodcast, $episodeActionInResponse['podcast']); - self::assertSame(self::TEST_GUID, $episodeActionInResponse['guid']); - self::assertSame(5, $episodeActionInResponse['position']); - self::assertSame(0, $episodeActionInResponse['started']); - self::assertSame(123, $episodeActionInResponse['total']); - self::assertSame("PLAY", $episodeActionInResponse['action']); - } - - public function testEpisodeActionCreateAction(): void { - $time = time(); - $userId = uniqid('test_user', true); - $payload = json_decode('[ + public function testEpisodeActionCreateAction(): void + { + $time = time(); + $userId = uniqid("test_user", true); + $payload = json_decode( + '[ { "podcast": "https://example.com/feed.rss", "episode": "https://example.com/files/s01e20.mp3", @@ -141,40 +152,55 @@ class EpisodeActionControllerTest extends TestCase "position": 120, "total": 500 } -]', true, 512, JSON_THROW_ON_ERROR); - $request = $this->createMock(IRequest::class); - $request->expects($this->once()) - ->method('getParams') - ->will($this->returnValue($payload)); - $episodeActionController = new EpisodeActionController( - "gpoddersync", - $request, - $userId, - $this->container->get(EpisodeActionRepository::class), - $this->container->get(EpisodeActionSaver::class) - ); - $response = $episodeActionController->create(); +]', + true, + 512, + JSON_THROW_ON_ERROR + ); + $request = $this->createMock(IRequest::class); + $request + ->expects($this->once()) + ->method("getParams") + ->will($this->returnValue($payload)); + $episodeActionController = new EpisodeActionController( + "gpoddersync", + $request, + $userId, + $this->container->get(EpisodeActionRepository::class), + $this->container->get(EpisodeActionSaver::class) + ); + $response = $episodeActionController->create(); - $this->assertArrayHasKey('timestamp', $response->getData()); - $this->assertGreaterThanOrEqual($time, $response->getData()['timestamp']); - /** @var EpisodeActionMapper $mapper */ - $mapper = $this->container->query(EpisodeActionMapper::class); - $episodeActionEntities = $mapper->findAll(0, $userId); - /** @var EpisodeActionEntity $firstEntity */ - $firstEntity = $episodeActionEntities[0]; - $this->assertSame("https://example.com/feed.rss", $firstEntity->getPodcast()); - $this->assertSame("https://example.com/files/s01e20.mp3", $firstEntity->getEpisode()); - $this->assertSame("s01e20-example-org", $firstEntity->getGuid()); - $this->assertSame("PLAY", $firstEntity->getAction()); - $this->assertSame(120, $firstEntity->getPosition()); - $this->assertSame(15, $firstEntity->getStarted()); - $this->assertSame(1260608400, $firstEntity->getTimestampEpoch()); - } + $this->assertArrayHasKey("timestamp", $response->getData()); + $this->assertGreaterThanOrEqual( + $time, + $response->getData()["timestamp"] + ); + /** @var EpisodeActionMapper $mapper */ + $mapper = $this->container->query(EpisodeActionMapper::class); + $episodeActionEntities = $mapper->findAll(0, $userId); + /** @var EpisodeActionEntity $firstEntity */ + $firstEntity = $episodeActionEntities[0]; + $this->assertSame( + "https://example.com/feed.rss", + $firstEntity->getPodcast() + ); + $this->assertSame( + "https://example.com/files/s01e20.mp3", + $firstEntity->getEpisode() + ); + $this->assertSame("s01e20-example-org", $firstEntity->getGuid()); + $this->assertSame("PLAY", $firstEntity->getAction()); + $this->assertSame(120, $firstEntity->getPosition()); + $this->assertSame(15, $firstEntity->getStarted()); + $this->assertSame(1260608400, $firstEntity->getTimestampEpoch()); + } - /** - * @after - */ - public function after(): void { - $this->rollbackTransaction(); - } + /** + * @after + */ + public function after(): void + { + $this->rollbackTransaction(); + } } diff --git a/tests/Integration/EpisodeActionRepositoryTest.php b/tests/Integration/EpisodeActionRepositoryTest.php index 004edfe..bbe88e6 100644 --- a/tests/Integration/EpisodeActionRepositoryTest.php +++ b/tests/Integration/EpisodeActionRepositoryTest.php @@ -28,7 +28,7 @@ class EpisodeActionRepositoryTest extends \Test\TestCase $episodeUrl = uniqid("test_https://dts.podtrac.com/"); - $timestampHumanReadable = "2021-08-22T23:58:56"; + $timestampHumanReadable = "2021-08-22T23:58:56+00:00"; $guid = uniqid("test_gid://art19-episode-locator/V0/Ktd"); $savedEpisodeActionEntity = $episodeActionSaver->saveEpisodeActions( @@ -58,7 +58,7 @@ class EpisodeActionRepositoryTest extends \Test\TestCase (string) $savedEpisodeActionEntity->getTimestampEpoch() ) ->setTimezone(new \DateTimeZone("UTC")) - ->format("Y-m-d\TH:i:s"); + ->format("c"); self::assertSame($timestampHumanReadable, $timestampOutputFormatted); /** @var $episodeActionRepository EpisodeActionRepository */ @@ -71,7 +71,7 @@ class EpisodeActionRepositoryTest extends \Test\TestCase self::USER_ID_0 ); self::assertSame( - "2021-08-22T23:58:56", + "2021-08-22T23:58:56+00:00", $retrievedEpisodeActionEntity->getTimestamp() ); }