Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Import metadata from external instance #2481

Merged
merged 37 commits into from
May 7, 2024
Merged
Changes from 1 commit
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
01f38a5
feature: add import metametadata validation
Karol-Stelmaczonek Apr 10, 2024
fd0f05e
feat: add ImporterTest
Karol-Stelmaczonek Apr 10, 2024
b88f465
feat: use ChecksumGenerator
Karol-Stelmaczonek Apr 10, 2024
fba9f78
feat: remove wrong item after import failure
Karol-Stelmaczonek Apr 11, 2024
f3dcf40
chore: refactor & rename
Karol-Stelmaczonek Apr 12, 2024
7167eab
chore: refactor & rename
Karol-Stelmaczonek Apr 12, 2024
c5f6d59
chore: phpcbf fixes
Karol-Stelmaczonek Apr 15, 2024
f0453d6
chore: phpcbf fixes
Karol-Stelmaczonek Apr 15, 2024
31a8dbc
feat: validate and inject metadata to item
bartlomiejmarszal Apr 16, 2024
cc6e64c
feat: refactor LabelBasedLomOntologyClassificationExtractor, unit test
bartlomiejmarszal Apr 17, 2024
dd31938
feat: replace metadata extractor for export
bartlomiejmarszal Apr 17, 2024
f3ed7f9
feat: fix ReplaceMetadataExtractor
bartlomiejmarszal Apr 17, 2024
a3211e5
fix: change error handling for metametadata
Karol-Stelmaczonek Apr 17, 2024
49979fb
Merge remote-tracking branch 'origin/feat/aut-3590-add-metadata-check…
Karol-Stelmaczonek Apr 17, 2024
0932705
feat: Remove MetaMetadataValidator. Move business logic into matcher
bartlomiejmarszal Apr 18, 2024
c544cc3
Merge branch 'feat/aut-3590-add-metadata-check-on-import' of https://…
bartlomiejmarszal Apr 18, 2024
f1d2fbe
feat: fix MetaMetadataImportMapper
bartlomiejmarszal Apr 18, 2024
d4305a4
feat: add MetaMetadataImportMapperTest
bartlomiejmarszal Apr 18, 2024
21fe147
feat: add MappedMetadataInjectorTest
bartlomiejmarszal Apr 18, 2024
770b019
fix: update uses and add types
Karol-Stelmaczonek Apr 18, 2024
5e39336
Merge remote-tracking branch 'origin/feat/aut-3590-add-metadata-check…
Karol-Stelmaczonek Apr 18, 2024
a331ac9
fix: update uses and add types
Karol-Stelmaczonek Apr 18, 2024
ecaf6ea
feat: move ChecksumGenerator to taoQtiItems
bartlomiejmarszal Apr 18, 2024
b45c9bb
Merge branch 'feat/aut-3590-add-metadata-check-on-import' of https://…
bartlomiejmarszal Apr 18, 2024
6dd776f
chore: phpcbf fixes
Karol-Stelmaczonek Apr 18, 2024
6158b2a
chore: phpcbf fixes
Karol-Stelmaczonek Apr 18, 2024
8f8f0f6
feat: enable export metadata on item level
bartlomiejmarszal Apr 26, 2024
dcd7be0
feat: add form fields
bartlomiejmarszal Apr 29, 2024
e6df6dd
Merge pull request #2489 from oat-sa/feat/AUT-3590/add-form-field-to-…
bartlomiejmarszal May 2, 2024
d7a0f6b
feat: add form checkbox in import test form
bartlomiejmarszal May 2, 2024
08a8a7a
feat: phpcbf automatic fix
bartlomiejmarszal May 2, 2024
7aa4981
Merge branch 'feat/aut-3590-add-metadata-check-on-import' of https://…
bartlomiejmarszal May 2, 2024
79e39ff
feat: Handle list with ListService
bartlomiejmarszal May 3, 2024
5b35d8a
fix: Fix item import
bartlomiejmarszal May 7, 2024
aab2d22
fix: Fix Checksum service test
bartlomiejmarszal May 7, 2024
af2e392
Merge branch 'master' into feat/aut-3590-add-metadata-check-on-import
bartlomiejmarszal May 7, 2024
72f093a
fix: Merge + Fix conflicts
bartlomiejmarszal May 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 120 additions & 0 deletions test/unit/model/qti/metadata/importer/MetaMetadataImportMapperTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
<?php

/**
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; under version 2
* of the License (non-upgradable).
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Copyright (c) 2024 (original work) Open Assessment Technologies SA;
*/

declare(strict_types=1);

namespace oat\taoQtiItem\test\unit\model\qti\metadata\importer;

use core_kernel_classes_Class;
use core_kernel_classes_Property;
use core_kernel_classes_Resource;
use oat\taoQtiItem\model\qti\metadata\importer\MetaMetadataImportMapper;
use oat\taoQtiItem\model\qti\metadata\importer\PropertyDoesNotExistException;
use oat\taoQtiTest\models\classes\metadata\ChecksumGenerator;
use PHPUnit\Framework\TestCase;

class MetaMetadataImportMapperTest extends TestCase
{
protected function setUp(): void
{
$this->checksumGeneratorMock = $this->createMock(ChecksumGenerator::class);
$this->subject = new MetaMetadataImportMapper($this->checksumGeneratorMock);
}

public function testMapMetaMetadataToProperties(): void
{
$metaMetadataProperties = [
[
'uri' => 'http://example.com/uri1',
'label' => 'label1',
'alias' => 'alias1',
'checksum' => 'qwerty1234',
'multiple' => 'http://resource.uri/false'
],
[
'uri' => 'http://example.com/uri2',
'label' => 'label2',
'alias' => 'alias2',
'checksum' => '4321qwerty',
'multiple' => 'http://resource.uri/false'
],
[
'uri' => 'http://example.com/uri3',
'label' => 'label3',
'alias' => 'alias3',
'checksum' => '4321qwerty',
'multiple' => 'http://resource.uri/false'
],
];

$itemClass = $this->createMock(core_kernel_classes_Class::class);
$testClass = $this->createMock(core_kernel_classes_Class::class);
$propertyMock = $this->createMock(core_kernel_classes_Property::class);
$resourceMock = $this->createMock(core_kernel_classes_Resource::class);

$itemClass->method('getProperties')
->willReturn([$propertyMock, $propertyMock, $propertyMock]);
$testClass->method('getProperties')
->willReturn([$propertyMock, $propertyMock, $propertyMock]);
$propertyMock->method('getUri')
->willReturn('http://example.com/uri1', 'http://some-other-uri', 'http://some-other-uri', 'http://some-other-uri');
$propertyMock->method('getLabel')
->willReturn('label2', 'some-other-label', 'some-other-other-label');
$propertyMock->method('getAlias')
->willReturn('alias2', 'alias3', 'some-other-other-alias');
$propertyMock->method('getOnePropertyValue')
->willReturn($resourceMock);
$this->checksumGeneratorMock->method('getRangeChecksum')
->willReturn('4321qwerty');

$resourceMock->method('getUri')
->willReturn('http://resource.uri/false', 'http://resource.uri/false');


$result = $this->subject->mapMetaMetadataToProperties($metaMetadataProperties, $itemClass, $testClass);
self::assertNotNull($result);
self::assertEquals(3, count($result['itemProperties']));
}

public function testMapMetaMetadataToPropertiesThrowErrorWhenCannotMapProperty(): void
{
$this->expectException(PropertyDoesNotExistException::class);
$metaMetadataProperties = [
[
'uri' => 'http://example.com/uri1',
'label' => 'label1',
'alias' => 'alias1',
'checksum' => 'qwerty1234',
'multiple' => 'http://resource.uri/false'
]
];

$itemClass = $this->createMock(core_kernel_classes_Class::class);
$testClass = $this->createMock(core_kernel_classes_Class::class);
$propertyMock = $this->createMock(core_kernel_classes_Property::class);

$itemClass->method('getProperties')
->willReturn([$propertyMock, $propertyMock, $propertyMock]);
$testClass->method('getProperties')
->willReturn([$propertyMock, $propertyMock, $propertyMock]);
$result = $this->subject->mapMetaMetadataToProperties($metaMetadataProperties, $itemClass, $testClass);
self::assertNotNull($result);
}
}