Fix tests not using full ISO-8601

This commit is contained in:
JonOfUs 2024-12-01 18:46:46 +01:00 committed by Jonathan Flueren
parent d552205369
commit 35c0e3dcd5
2 changed files with 160 additions and 134 deletions

View File

@ -20,15 +20,15 @@ use tests\Helper\DatabaseTransaction;
*/ */
class EpisodeActionControllerTest extends TestCase class EpisodeActionControllerTest extends TestCase
{ {
use DatabaseTransaction; use DatabaseTransaction;
const TEST_GUID = "test_guid_123q45345"; const TEST_GUID = "test_guid_123q45345";
private IAppContainer $container; private IAppContainer $container;
public function setUp(): void { public function setUp(): void
{
parent::setUp(); parent::setUp();
$app = new App('gpoddersync'); $app = new App("gpoddersync");
$this->container = $app->getContainer(); $this->container = $app->getContainer();
$this->db = \OC::$server->getDatabaseConnection(); $this->db = \OC::$server->getDatabaseConnection();
} }
@ -41,7 +41,6 @@ class EpisodeActionControllerTest extends TestCase
$this->startTransaction(); $this->startTransaction();
} }
public function testEpisodeActionListAction() public function testEpisodeActionListAction()
{ {
$userId = uniqid("test_user"); $userId = uniqid("test_user");
@ -54,7 +53,9 @@ class EpisodeActionControllerTest extends TestCase
); );
/** @var EpisodeActionWriter $episodeActionWriter */ /** @var EpisodeActionWriter $episodeActionWriter */
$episodeActionWriter = $this->container->get(EpisodeActionWriter::class); $episodeActionWriter = $this->container->get(
EpisodeActionWriter::class
);
$mark = 1633520363; $mark = 1633520363;
$episodeActionEntity = new EpisodeActionEntity(); $episodeActionEntity = new EpisodeActionEntity();
@ -66,23 +67,26 @@ class EpisodeActionControllerTest extends TestCase
$episodeActionEntity->setPosition(5); $episodeActionEntity->setPosition(5);
$episodeActionEntity->setStarted(0); $episodeActionEntity->setStarted(0);
$episodeActionEntity->setTotal(123); $episodeActionEntity->setTotal(123);
$episodeActionEntity->setTimestampEpoch($mark+600); $episodeActionEntity->setTimestampEpoch($mark + 600);
$episodeActionEntity->setUserId($userId); $episodeActionEntity->setUserId($userId);
$episodeActionEntity->setGuid(self::TEST_GUID); $episodeActionEntity->setGuid(self::TEST_GUID);
$episodeActionWriter->save($episodeActionEntity); $episodeActionWriter->save($episodeActionEntity);
$response = $episodeActionController->list($mark); $response = $episodeActionController->list($mark);
self::assertCount(1, $response->getData()['actions']); self::assertCount(1, $response->getData()["actions"]);
$episodeActionInResponse = $response->getData()['actions'][0]; $episodeActionInResponse = $response->getData()["actions"][0];
self::assertSame("2021-10-06T11:49:23", $episodeActionInResponse['timestamp']); self::assertSame(
self::assertSame($expectedEpisode, $episodeActionInResponse['episode']); "2021-10-06T11:49:23+00:00",
self::assertSame($expectedPodcast, $episodeActionInResponse['podcast']); $episodeActionInResponse["timestamp"]
self::assertSame(self::TEST_GUID, $episodeActionInResponse['guid']); );
self::assertSame(5, $episodeActionInResponse['position']); self::assertSame($expectedEpisode, $episodeActionInResponse["episode"]);
self::assertSame(0, $episodeActionInResponse['started']); self::assertSame($expectedPodcast, $episodeActionInResponse["podcast"]);
self::assertSame(123, $episodeActionInResponse['total']); self::assertSame(self::TEST_GUID, $episodeActionInResponse["guid"]);
self::assertSame("PLAY", $episodeActionInResponse['action']); self::assertSame(5, $episodeActionInResponse["position"]);
self::assertSame(0, $episodeActionInResponse["started"]);
self::assertSame(123, $episodeActionInResponse["total"]);
self::assertSame("PLAY", $episodeActionInResponse["action"]);
} }
public function testEpisodeActionListWithoutSinceAction() public function testEpisodeActionListWithoutSinceAction()
@ -97,7 +101,9 @@ class EpisodeActionControllerTest extends TestCase
); );
/** @var EpisodeActionWriter $episodeActionWriter */ /** @var EpisodeActionWriter $episodeActionWriter */
$episodeActionWriter = $this->container->get(EpisodeActionWriter::class); $episodeActionWriter = $this->container->get(
EpisodeActionWriter::class
);
$episodeActionEntity = new EpisodeActionEntity(); $episodeActionEntity = new EpisodeActionEntity();
$expectedPodcast = uniqid("test"); $expectedPodcast = uniqid("test");
@ -114,23 +120,28 @@ class EpisodeActionControllerTest extends TestCase
$episodeActionWriter->save($episodeActionEntity); $episodeActionWriter->save($episodeActionEntity);
$response = $episodeActionController->list(); $response = $episodeActionController->list();
self::assertCount(1, $response->getData()['actions']); self::assertCount(1, $response->getData()["actions"]);
$episodeActionInResponse = $response->getData()['actions'][0]; $episodeActionInResponse = $response->getData()["actions"][0];
self::assertSame("2021-10-06T11:39:23", $episodeActionInResponse['timestamp']); self::assertSame(
self::assertSame($expectedEpisode, $episodeActionInResponse['episode']); "2021-10-06T11:39:23+00:00",
self::assertSame($expectedPodcast, $episodeActionInResponse['podcast']); $episodeActionInResponse["timestamp"]
self::assertSame(self::TEST_GUID, $episodeActionInResponse['guid']); );
self::assertSame(5, $episodeActionInResponse['position']); self::assertSame($expectedEpisode, $episodeActionInResponse["episode"]);
self::assertSame(0, $episodeActionInResponse['started']); self::assertSame($expectedPodcast, $episodeActionInResponse["podcast"]);
self::assertSame(123, $episodeActionInResponse['total']); self::assertSame(self::TEST_GUID, $episodeActionInResponse["guid"]);
self::assertSame("PLAY", $episodeActionInResponse['action']); self::assertSame(5, $episodeActionInResponse["position"]);
self::assertSame(0, $episodeActionInResponse["started"]);
self::assertSame(123, $episodeActionInResponse["total"]);
self::assertSame("PLAY", $episodeActionInResponse["action"]);
} }
public function testEpisodeActionCreateAction(): void { public function testEpisodeActionCreateAction(): void
{
$time = time(); $time = time();
$userId = uniqid('test_user', true); $userId = uniqid("test_user", true);
$payload = json_decode('[ $payload = json_decode(
'[
{ {
"podcast": "https://example.com/feed.rss", "podcast": "https://example.com/feed.rss",
"episode": "https://example.com/files/s01e20.mp3", "episode": "https://example.com/files/s01e20.mp3",
@ -141,10 +152,15 @@ class EpisodeActionControllerTest extends TestCase
"position": 120, "position": 120,
"total": 500 "total": 500
} }
]', true, 512, JSON_THROW_ON_ERROR); ]',
true,
512,
JSON_THROW_ON_ERROR
);
$request = $this->createMock(IRequest::class); $request = $this->createMock(IRequest::class);
$request->expects($this->once()) $request
->method('getParams') ->expects($this->once())
->method("getParams")
->will($this->returnValue($payload)); ->will($this->returnValue($payload));
$episodeActionController = new EpisodeActionController( $episodeActionController = new EpisodeActionController(
"gpoddersync", "gpoddersync",
@ -155,15 +171,24 @@ class EpisodeActionControllerTest extends TestCase
); );
$response = $episodeActionController->create(); $response = $episodeActionController->create();
$this->assertArrayHasKey('timestamp', $response->getData()); $this->assertArrayHasKey("timestamp", $response->getData());
$this->assertGreaterThanOrEqual($time, $response->getData()['timestamp']); $this->assertGreaterThanOrEqual(
$time,
$response->getData()["timestamp"]
);
/** @var EpisodeActionMapper $mapper */ /** @var EpisodeActionMapper $mapper */
$mapper = $this->container->query(EpisodeActionMapper::class); $mapper = $this->container->query(EpisodeActionMapper::class);
$episodeActionEntities = $mapper->findAll(0, $userId); $episodeActionEntities = $mapper->findAll(0, $userId);
/** @var EpisodeActionEntity $firstEntity */ /** @var EpisodeActionEntity $firstEntity */
$firstEntity = $episodeActionEntities[0]; $firstEntity = $episodeActionEntities[0];
$this->assertSame("https://example.com/feed.rss", $firstEntity->getPodcast()); $this->assertSame(
$this->assertSame("https://example.com/files/s01e20.mp3", $firstEntity->getEpisode()); "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("s01e20-example-org", $firstEntity->getGuid());
$this->assertSame("PLAY", $firstEntity->getAction()); $this->assertSame("PLAY", $firstEntity->getAction());
$this->assertSame(120, $firstEntity->getPosition()); $this->assertSame(120, $firstEntity->getPosition());
@ -174,7 +199,8 @@ class EpisodeActionControllerTest extends TestCase
/** /**
* @after * @after
*/ */
public function after(): void { public function after(): void
{
$this->rollbackTransaction(); $this->rollbackTransaction();
} }
} }

View File

@ -28,7 +28,7 @@ class EpisodeActionRepositoryTest extends \Test\TestCase
$episodeUrl = uniqid("test_https://dts.podtrac.com/"); $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"); $guid = uniqid("test_gid://art19-episode-locator/V0/Ktd");
$savedEpisodeActionEntity = $episodeActionSaver->saveEpisodeActions( $savedEpisodeActionEntity = $episodeActionSaver->saveEpisodeActions(
@ -58,7 +58,7 @@ class EpisodeActionRepositoryTest extends \Test\TestCase
(string) $savedEpisodeActionEntity->getTimestampEpoch() (string) $savedEpisodeActionEntity->getTimestampEpoch()
) )
->setTimezone(new \DateTimeZone("UTC")) ->setTimezone(new \DateTimeZone("UTC"))
->format("Y-m-d\TH:i:s"); ->format("c");
self::assertSame($timestampHumanReadable, $timestampOutputFormatted); self::assertSame($timestampHumanReadable, $timestampOutputFormatted);
/** @var $episodeActionRepository EpisodeActionRepository */ /** @var $episodeActionRepository EpisodeActionRepository */
@ -71,7 +71,7 @@ class EpisodeActionRepositoryTest extends \Test\TestCase
self::USER_ID_0 self::USER_ID_0
); );
self::assertSame( self::assertSame(
"2021-08-22T23:58:56", "2021-08-22T23:58:56+00:00",
$retrievedEpisodeActionEntity->getTimestamp() $retrievedEpisodeActionEntity->getTimestamp()
); );
} }