2021-08-25 20:41:15 +00:00
|
|
|
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace tests\Integration;
|
|
|
|
|
|
|
|
use OCA\GPodderSync\Core\EpisodeAction\EpisodeActionSaver;
|
2023-02-24 18:37:50 +00:00
|
|
|
use OCA\GPodderSync\Db\EpisodeAction\EpisodeActionRepository;
|
2021-08-25 20:41:15 +00:00
|
|
|
use OCP\AppFramework\App;
|
|
|
|
use Test\TestCase;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @group DB
|
|
|
|
*/
|
2023-02-24 15:48:16 +00:00
|
|
|
class EpisodeActionSaverGuidBackwardCompatibilityTest extends TestCase
|
2021-08-25 20:41:15 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
private const USER_ID_0 = "testuser0";
|
|
|
|
|
|
|
|
private \OCP\AppFramework\IAppContainer $container;
|
|
|
|
|
|
|
|
public function setUp(): void {
|
|
|
|
parent::setUp();
|
|
|
|
$app = new App('gpoddersync');
|
|
|
|
$this->container = $app->getContainer();
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testUpdateWithoutGuidDoesNotNullGuid() : void
|
|
|
|
{
|
|
|
|
/** @var EpisodeActionSaver $episodeActionSaver */
|
|
|
|
$episodeActionSaver = $this->container->get(EpisodeActionSaver::class);
|
|
|
|
|
|
|
|
$episodeUrl = uniqid("test_https://dts.podtrac.com/redirect.mp3/chrt.fm/track");
|
|
|
|
$guid = uniqid("test_gid://art19-episode-locator/V0/Ktd");
|
|
|
|
|
|
|
|
$savedEpisodeActionEntity = $episodeActionSaver->saveEpisodeActions(
|
2021-10-06 17:11:50 +00:00
|
|
|
[["podcast" => 'https://rss.art19.com/dr-death-s3-miracle-man', "episode" => $episodeUrl, "guid" => $guid, "action" => "PLAY", "timestamp" => "2021-08-22T23:58:56", "started" => 47, "position" => 54, "total" => 2252]],
|
2021-08-25 20:41:15 +00:00
|
|
|
self::USER_ID_0
|
|
|
|
)[0];
|
|
|
|
|
|
|
|
$savedEpisodeActionEntityWithoutGuidFromOldDevice = $episodeActionSaver->saveEpisodeActions(
|
2021-10-06 17:11:50 +00:00
|
|
|
[["podcast" => 'https://rss.art19.com/dr-death-s3-miracle-man', "episode" => $episodeUrl, "action" => "PLAY", "timestamp" => "2021-08-22T23:58:56", "started" => 47, "position" => 54, "total" => 2252]],
|
2021-08-25 20:41:15 +00:00
|
|
|
self::USER_ID_0
|
|
|
|
)[0];
|
|
|
|
|
|
|
|
self::assertSame($savedEpisodeActionEntity->getId(), $savedEpisodeActionEntityWithoutGuidFromOldDevice->getId());
|
|
|
|
self::assertNotNull($savedEpisodeActionEntityWithoutGuidFromOldDevice->getGuid());
|
|
|
|
}
|
2021-10-05 10:30:52 +00:00
|
|
|
|
2023-02-24 18:37:50 +00:00
|
|
|
public function testDoNotFailToUpdateEpisodeActionByGuidIfThereIsAnotherWithTheSameValueForEpisodeUrl() : void
|
|
|
|
{
|
|
|
|
//arrange
|
|
|
|
/** @var EpisodeActionSaver $episodeActionSaver */
|
|
|
|
$episodeActionSaver = $this->container->get(EpisodeActionSaver::class);
|
|
|
|
|
|
|
|
$url = uniqid("https://podcast-mp3.dradio.de/");
|
|
|
|
$urlWithParameter = $url . "?ref=never_know_if_ill_be_removed";
|
|
|
|
|
|
|
|
$podcastUrl = uniqid("https://podcast");
|
|
|
|
|
|
|
|
$episodeActionSaver->saveEpisodeActions(
|
|
|
|
[["podcast" => $podcastUrl, "episode" => $url, "guid" => $urlWithParameter, "action" => "PLAY", "timestamp" => "2021-08-22T23:58:56", "started" => 35, "position" => 100, "total" => 2252]],
|
|
|
|
self::USER_ID_0
|
|
|
|
)[0];
|
|
|
|
|
|
|
|
$episodeActionSaver->saveEpisodeActions(
|
|
|
|
[["podcast" => $podcastUrl, "episode" => $urlWithParameter, "guid" => $url, "action" => "PLAY", "timestamp" => "2021-08-22T23:58:56", "started" => 35, "position" => 100, "total" => 2252]],
|
|
|
|
self::USER_ID_0
|
|
|
|
)[0];
|
|
|
|
|
|
|
|
//act
|
|
|
|
$episodeActionSaver->saveEpisodeActions(
|
|
|
|
[["podcast" => $podcastUrl, "episode" => $urlWithParameter, "guid" => $url, "action" => "PLAY", "timestamp" => "2021-08-22T23:58:56", "started" => 35, "position" => 100, "total" => 2252]],
|
|
|
|
self::USER_ID_0
|
|
|
|
)[0];
|
|
|
|
|
|
|
|
//assert
|
|
|
|
/** @var EpisodeActionRepository $episodeActionRepository */
|
|
|
|
$episodeActionRepository = $this->container->get(EpisodeActionRepository::class);
|
|
|
|
$this->assertSame(100, $episodeActionRepository->findByGuid($urlWithParameter, self::USER_ID_0)->getPosition());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2021-08-25 20:41:15 +00:00
|
|
|
}
|