Fix tests not using full ISO-8601
This commit is contained in:
parent
d552205369
commit
35c0e3dcd5
@ -20,117 +20,128 @@ use tests\Helper\DatabaseTransaction;
|
|||||||
*/
|
*/
|
||||||
class EpisodeActionControllerTest extends TestCase
|
class EpisodeActionControllerTest extends TestCase
|
||||||
{
|
{
|
||||||
|
use DatabaseTransaction;
|
||||||
|
|
||||||
use DatabaseTransaction;
|
const TEST_GUID = "test_guid_123q45345";
|
||||||
|
private IAppContainer $container;
|
||||||
|
|
||||||
const TEST_GUID = "test_guid_123q45345";
|
public function setUp(): void
|
||||||
private IAppContainer $container;
|
{
|
||||||
|
parent::setUp();
|
||||||
|
$app = new App("gpoddersync");
|
||||||
|
$this->container = $app->getContainer();
|
||||||
|
$this->db = \OC::$server->getDatabaseConnection();
|
||||||
|
}
|
||||||
|
|
||||||
public function setUp(): void {
|
/**
|
||||||
parent::setUp();
|
* @before
|
||||||
$app = new App('gpoddersync');
|
*/
|
||||||
$this->container = $app->getContainer();
|
public function before()
|
||||||
$this->db = \OC::$server->getDatabaseConnection();
|
{
|
||||||
}
|
$this->startTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
public function testEpisodeActionListAction()
|
||||||
* @before
|
{
|
||||||
*/
|
$userId = uniqid("test_user");
|
||||||
public function before()
|
$episodeActionController = new EpisodeActionController(
|
||||||
{
|
"gpoddersync",
|
||||||
$this->startTransaction();
|
$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()
|
$mark = 1633520363;
|
||||||
{
|
$episodeActionEntity = new EpisodeActionEntity();
|
||||||
$userId = uniqid("test_user");
|
$expectedPodcast = uniqid("test");
|
||||||
$episodeActionController = new EpisodeActionController(
|
$episodeActionEntity->setPodcast($expectedPodcast);
|
||||||
"gpoddersync",
|
$expectedEpisode = uniqid("test");
|
||||||
$this->createMock(IRequest::class),
|
$episodeActionEntity->setEpisode($expectedEpisode);
|
||||||
$userId,
|
$episodeActionEntity->setAction("PLAY");
|
||||||
$this->container->get(EpisodeActionRepository::class),
|
$episodeActionEntity->setPosition(5);
|
||||||
$this->container->get(EpisodeActionSaver::class)
|
$episodeActionEntity->setStarted(0);
|
||||||
);
|
$episodeActionEntity->setTotal(123);
|
||||||
|
$episodeActionEntity->setTimestampEpoch($mark + 600);
|
||||||
|
$episodeActionEntity->setUserId($userId);
|
||||||
|
$episodeActionEntity->setGuid(self::TEST_GUID);
|
||||||
|
$episodeActionWriter->save($episodeActionEntity);
|
||||||
|
|
||||||
/** @var EpisodeActionWriter $episodeActionWriter */
|
$response = $episodeActionController->list($mark);
|
||||||
$episodeActionWriter = $this->container->get(EpisodeActionWriter::class);
|
self::assertCount(1, $response->getData()["actions"]);
|
||||||
|
|
||||||
$mark = 1633520363;
|
$episodeActionInResponse = $response->getData()["actions"][0];
|
||||||
$episodeActionEntity = new EpisodeActionEntity();
|
self::assertSame(
|
||||||
$expectedPodcast = uniqid("test");
|
"2021-10-06T11:49:23+00:00",
|
||||||
$episodeActionEntity->setPodcast($expectedPodcast);
|
$episodeActionInResponse["timestamp"]
|
||||||
$expectedEpisode = uniqid("test");
|
);
|
||||||
$episodeActionEntity->setEpisode($expectedEpisode);
|
self::assertSame($expectedEpisode, $episodeActionInResponse["episode"]);
|
||||||
$episodeActionEntity->setAction("PLAY");
|
self::assertSame($expectedPodcast, $episodeActionInResponse["podcast"]);
|
||||||
$episodeActionEntity->setPosition(5);
|
self::assertSame(self::TEST_GUID, $episodeActionInResponse["guid"]);
|
||||||
$episodeActionEntity->setStarted(0);
|
self::assertSame(5, $episodeActionInResponse["position"]);
|
||||||
$episodeActionEntity->setTotal(123);
|
self::assertSame(0, $episodeActionInResponse["started"]);
|
||||||
$episodeActionEntity->setTimestampEpoch($mark+600);
|
self::assertSame(123, $episodeActionInResponse["total"]);
|
||||||
$episodeActionEntity->setUserId($userId);
|
self::assertSame("PLAY", $episodeActionInResponse["action"]);
|
||||||
$episodeActionEntity->setGuid(self::TEST_GUID);
|
}
|
||||||
$episodeActionWriter->save($episodeActionEntity);
|
|
||||||
|
|
||||||
$response = $episodeActionController->list($mark);
|
public function testEpisodeActionListWithoutSinceAction()
|
||||||
self::assertCount(1, $response->getData()['actions']);
|
{
|
||||||
|
$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];
|
/** @var EpisodeActionWriter $episodeActionWriter */
|
||||||
self::assertSame("2021-10-06T11:49:23", $episodeActionInResponse['timestamp']);
|
$episodeActionWriter = $this->container->get(
|
||||||
self::assertSame($expectedEpisode, $episodeActionInResponse['episode']);
|
EpisodeActionWriter::class
|
||||||
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 testEpisodeActionListWithoutSinceAction()
|
$episodeActionEntity = new EpisodeActionEntity();
|
||||||
{
|
$expectedPodcast = uniqid("test");
|
||||||
$userId = uniqid("test_user");
|
$episodeActionEntity->setPodcast($expectedPodcast);
|
||||||
$episodeActionController = new EpisodeActionController(
|
$expectedEpisode = uniqid("test");
|
||||||
"gpoddersync",
|
$episodeActionEntity->setEpisode($expectedEpisode);
|
||||||
$this->createMock(IRequest::class),
|
$episodeActionEntity->setAction("PLAY");
|
||||||
$userId,
|
$episodeActionEntity->setPosition(5);
|
||||||
$this->container->get(EpisodeActionRepository::class),
|
$episodeActionEntity->setStarted(0);
|
||||||
$this->container->get(EpisodeActionSaver::class)
|
$episodeActionEntity->setTotal(123);
|
||||||
);
|
$episodeActionEntity->setTimestampEpoch(1633520363);
|
||||||
|
$episodeActionEntity->setUserId($userId);
|
||||||
|
$episodeActionEntity->setGuid(self::TEST_GUID);
|
||||||
|
$episodeActionWriter->save($episodeActionEntity);
|
||||||
|
|
||||||
/** @var EpisodeActionWriter $episodeActionWriter */
|
$response = $episodeActionController->list();
|
||||||
$episodeActionWriter = $this->container->get(EpisodeActionWriter::class);
|
self::assertCount(1, $response->getData()["actions"]);
|
||||||
|
|
||||||
$episodeActionEntity = new EpisodeActionEntity();
|
$episodeActionInResponse = $response->getData()["actions"][0];
|
||||||
$expectedPodcast = uniqid("test");
|
self::assertSame(
|
||||||
$episodeActionEntity->setPodcast($expectedPodcast);
|
"2021-10-06T11:39:23+00:00",
|
||||||
$expectedEpisode = uniqid("test");
|
$episodeActionInResponse["timestamp"]
|
||||||
$episodeActionEntity->setEpisode($expectedEpisode);
|
);
|
||||||
$episodeActionEntity->setAction("PLAY");
|
self::assertSame($expectedEpisode, $episodeActionInResponse["episode"]);
|
||||||
$episodeActionEntity->setPosition(5);
|
self::assertSame($expectedPodcast, $episodeActionInResponse["podcast"]);
|
||||||
$episodeActionEntity->setStarted(0);
|
self::assertSame(self::TEST_GUID, $episodeActionInResponse["guid"]);
|
||||||
$episodeActionEntity->setTotal(123);
|
self::assertSame(5, $episodeActionInResponse["position"]);
|
||||||
$episodeActionEntity->setTimestampEpoch(1633520363);
|
self::assertSame(0, $episodeActionInResponse["started"]);
|
||||||
$episodeActionEntity->setUserId($userId);
|
self::assertSame(123, $episodeActionInResponse["total"]);
|
||||||
$episodeActionEntity->setGuid(self::TEST_GUID);
|
self::assertSame("PLAY", $episodeActionInResponse["action"]);
|
||||||
$episodeActionWriter->save($episodeActionEntity);
|
}
|
||||||
|
|
||||||
$response = $episodeActionController->list();
|
public function testEpisodeActionCreateAction(): void
|
||||||
self::assertCount(1, $response->getData()['actions']);
|
{
|
||||||
|
$time = time();
|
||||||
$episodeActionInResponse = $response->getData()['actions'][0];
|
$userId = uniqid("test_user", true);
|
||||||
self::assertSame("2021-10-06T11:39:23", $episodeActionInResponse['timestamp']);
|
$payload = json_decode(
|
||||||
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('[
|
|
||||||
{
|
{
|
||||||
"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,40 +152,55 @@ class EpisodeActionControllerTest extends TestCase
|
|||||||
"position": 120,
|
"position": 120,
|
||||||
"total": 500
|
"total": 500
|
||||||
}
|
}
|
||||||
]', true, 512, JSON_THROW_ON_ERROR);
|
]',
|
||||||
$request = $this->createMock(IRequest::class);
|
true,
|
||||||
$request->expects($this->once())
|
512,
|
||||||
->method('getParams')
|
JSON_THROW_ON_ERROR
|
||||||
->will($this->returnValue($payload));
|
);
|
||||||
$episodeActionController = new EpisodeActionController(
|
$request = $this->createMock(IRequest::class);
|
||||||
"gpoddersync",
|
$request
|
||||||
$request,
|
->expects($this->once())
|
||||||
$userId,
|
->method("getParams")
|
||||||
$this->container->get(EpisodeActionRepository::class),
|
->will($this->returnValue($payload));
|
||||||
$this->container->get(EpisodeActionSaver::class)
|
$episodeActionController = new EpisodeActionController(
|
||||||
);
|
"gpoddersync",
|
||||||
$response = $episodeActionController->create();
|
$request,
|
||||||
|
$userId,
|
||||||
|
$this->container->get(EpisodeActionRepository::class),
|
||||||
|
$this->container->get(EpisodeActionSaver::class)
|
||||||
|
);
|
||||||
|
$response = $episodeActionController->create();
|
||||||
|
|
||||||
$this->assertArrayHasKey('timestamp', $response->getData());
|
$this->assertArrayHasKey("timestamp", $response->getData());
|
||||||
$this->assertGreaterThanOrEqual($time, $response->getData()['timestamp']);
|
$this->assertGreaterThanOrEqual(
|
||||||
/** @var EpisodeActionMapper $mapper */
|
$time,
|
||||||
$mapper = $this->container->query(EpisodeActionMapper::class);
|
$response->getData()["timestamp"]
|
||||||
$episodeActionEntities = $mapper->findAll(0, $userId);
|
);
|
||||||
/** @var EpisodeActionEntity $firstEntity */
|
/** @var EpisodeActionMapper $mapper */
|
||||||
$firstEntity = $episodeActionEntities[0];
|
$mapper = $this->container->query(EpisodeActionMapper::class);
|
||||||
$this->assertSame("https://example.com/feed.rss", $firstEntity->getPodcast());
|
$episodeActionEntities = $mapper->findAll(0, $userId);
|
||||||
$this->assertSame("https://example.com/files/s01e20.mp3", $firstEntity->getEpisode());
|
/** @var EpisodeActionEntity $firstEntity */
|
||||||
$this->assertSame("s01e20-example-org", $firstEntity->getGuid());
|
$firstEntity = $episodeActionEntities[0];
|
||||||
$this->assertSame("PLAY", $firstEntity->getAction());
|
$this->assertSame(
|
||||||
$this->assertSame(120, $firstEntity->getPosition());
|
"https://example.com/feed.rss",
|
||||||
$this->assertSame(15, $firstEntity->getStarted());
|
$firstEntity->getPodcast()
|
||||||
$this->assertSame(1260608400, $firstEntity->getTimestampEpoch());
|
);
|
||||||
}
|
$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
|
* @after
|
||||||
*/
|
*/
|
||||||
public function after(): void {
|
public function after(): void
|
||||||
$this->rollbackTransaction();
|
{
|
||||||
}
|
$this->rollbackTransaction();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user