diff --git a/src/Repositories/Contracts/H5PFrameworkInterface.php b/src/Repositories/Contracts/H5PFrameworkInterface.php new file mode 100644 index 00000000..f88faa22 --- /dev/null +++ b/src/Repositories/Contracts/H5PFrameworkInterface.php @@ -0,0 +1,10 @@ +hh5pService->validatePackage($file, false, false); if ($valid) { + $this->hh5pService->getRepository()->setMainData($this->hh5pService->getCore()->mainJsonData); $this->hh5pService->getStorage()->savePackage(); // $this->hh5pService->getRepository()->deleteLibraryUsage($content['id']); $id = $this->hh5pService->getStorage()->contentId; diff --git a/src/Repositories/H5PRepository.php b/src/Repositories/H5PRepository.php index dc71afbe..e36c706c 100644 --- a/src/Repositories/H5PRepository.php +++ b/src/Repositories/H5PRepository.php @@ -10,8 +10,8 @@ use EscolaLms\HeadlessH5P\Models\H5PLibraryDependency; use EscolaLms\HeadlessH5P\Models\H5PLibraryLanguage; use EscolaLms\HeadlessH5P\Models\H5pLibrariesHubCache; +use EscolaLms\HeadlessH5P\Repositories\Contracts\H5PFrameworkInterface; use H5PPermission; -use H5PFrameworkInterface; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; use Illuminate\Support\Facades\DB; @@ -25,6 +25,13 @@ class H5PRepository implements H5PFrameworkInterface private array $downloadFiles; + private array $mainData; + + public function setMainData(array $mainData): void + { + $this->mainData = $mainData; + } + /** * Returns info for the current platform. * @@ -519,7 +526,7 @@ public function insertContent($content, $contentMainId = null) private function fixContentParamsMetadataLibraryTitle($content) { - $defaultTitle = 'New Content (from file)'; + $defaultTitle = isset($this->mainData['title']) ? $this->mainData['title'] : 'New Content (from file)'; if (is_array($content['library'])) { $content['library_id'] = isset($content['library']['libraryId']) ? $content['library']['libraryId'] : $content['library']['id']; diff --git a/src/Services/Contracts/HeadlessH5PServiceContract.php b/src/Services/Contracts/HeadlessH5PServiceContract.php index 195fe08a..febb7066 100644 --- a/src/Services/Contracts/HeadlessH5PServiceContract.php +++ b/src/Services/Contracts/HeadlessH5PServiceContract.php @@ -2,10 +2,10 @@ namespace EscolaLms\HeadlessH5P\Services\Contracts; +use EscolaLms\HeadlessH5P\Repositories\Contracts\H5PFrameworkInterface; use Illuminate\Http\UploadedFile; use Illuminate\Support\Collection; -use H5PFrameworkInterface; use H5PFileStorage; use H5PStorage; use H5PCore; diff --git a/src/Services/HeadlessH5PService.php b/src/Services/HeadlessH5PService.php index 52053ea7..fc22831c 100644 --- a/src/Services/HeadlessH5PService.php +++ b/src/Services/HeadlessH5PService.php @@ -5,6 +5,7 @@ use EscolaLms\HeadlessH5P\Exceptions\H5PException; use EscolaLms\HeadlessH5P\Helpers\MargeFiles; use EscolaLms\HeadlessH5P\Models\H5PLibrary; +use EscolaLms\HeadlessH5P\Repositories\Contracts\H5PFrameworkInterface; use EscolaLms\HeadlessH5P\Services\Contracts\HeadlessH5PServiceContract; use H5PContentValidator; use H5PCore; @@ -13,7 +14,6 @@ use H5peditorFile; use H5peditorStorage; use H5PFileStorage; -use H5PFrameworkInterface; use H5PStorage; use H5PValidator; use H5PPermission; diff --git a/tests/Api/ContentApiTest.php b/tests/Api/ContentApiTest.php index ad1ab02e..39e6f567 100644 --- a/tests/Api/ContentApiTest.php +++ b/tests/Api/ContentApiTest.php @@ -210,6 +210,43 @@ public function testContentList(): void $this->assertContentListResponse($response); } + public function testContentUnpaginatedList(): void + { + H5PContent::factory() + ->count(50) + ->create(['library_id' => H5PLibrary::factory()->create(['runnable' => 1])->getKey()]); + + $this->authenticateAsAdmin(); + $response = $this->actingAs($this->user, 'api') + ->get('/api/admin/hh5p/content?per_page=0'); + + $response + ->assertOk() + ->assertJsonCount(50, 'data') + ->assertJsonStructure(['data' => [[ + 'id', + 'created_at', + 'updated_at', + 'user_id', + 'author', + 'title', + 'library_id', + 'library' => [ + 'id', + 'name', + 'title', + 'created_at', + 'updated_at', + 'machineName', + 'uberName', + 'libraryId', + ], + 'slug', + 'filtered', + 'disable', + ]]]); + } + public function testContentListFilterByAuthorId(): void { H5PContent::factory() @@ -489,11 +526,13 @@ public function testContentUploading(): void $response->assertStatus(200); $data = $response->getData()->data; - $this->assertTrue(is_integer($data->id)); $this->assertTrue(is_object($data->params)); + $this->assertEquals('Arithmetic Quiz', $data->title); + $this->assertNotEquals('New Content (from file)', $data->title); $this->assertDatabaseHas('hh5p_contents', [ - 'uuid' => $data->uuid + 'uuid' => $data->uuid, + 'title' => 'Arithmetic Quiz' ]); }