19declare(strict_types=1);
23use PHPUnit\Framework\TestCase;
53 array $copyright_ids = [],
54 int $harvesting_target_ref_id = 0,
55 int $exposed_source_ref_id = 0
60 $harvesting_target_ref_id,
61 $exposed_source_ref_id
64 protected array $types,
65 protected array $copyright_ids,
66 protected
int $harvesting_target_ref_id,
67 protected
int $exposed_source_ref_id
71 public function getObjectTypesSelectedForHarvesting(): array
76 public function getCopyrightEntryIDsSelectedForHarvesting(): array
78 return $this->copyright_ids;
81 public function getContainerRefIDForHarvesting():
int
83 return $this->harvesting_target_ref_id;
86 public function getContainerRefIDForExposing():
int
88 return $this->exposed_source_ref_id;
98 array $deleted_obj_ids = [],
99 int $valid_source_container = 0,
100 array $obj_ids_referenced_in_container = [],
101 ?
int $throw_error_on_deletion_ref_id =
null,
102 ?
int $throw_error_on_ref_creation_obj_id =
null
106 $valid_source_container,
107 $obj_ids_referenced_in_container,
108 $throw_error_on_deletion_ref_id,
109 $throw_error_on_ref_creation_obj_id
110 ) extends NullObjectHandler {
111 public array $exposed_ref_creations = [];
112 public array $exposed_ref_deletions = [];
115 protected array $deleted_obj_ids,
116 protected int $valid_target_container,
117 protected array $obj_ids_referenced_in_container,
118 protected ?
int $throw_error_on_deletion_ref_id =
null,
119 protected ?
int $throw_error_on_ref_creation_obj_id =
null
123 public function referenceObjectInTargetContainer(
int $obj_id,
int $container_ref_id):
int
125 if ($obj_id === $this->throw_error_on_ref_creation_obj_id) {
126 throw new \ilMDOERHarvesterException(
'error');
128 $new_ref_id = (
int) ($container_ref_id . $obj_id);
129 $this->exposed_ref_creations[] = [
131 'container_ref_id' => $container_ref_id,
132 'new_ref_id' => $new_ref_id
137 public function getObjectReferenceIDInContainer(
int $obj_id,
int $container_ref_id): ?
int
139 if (in_array($obj_id, $this->obj_ids_referenced_in_container)) {
140 return (
int) ($container_ref_id . $obj_id);
145 public function isObjectDeleted(
int $obj_id): bool
147 return in_array($obj_id, $this->deleted_obj_ids);
150 public function deleteReference(
int $ref_id): void
152 if (
$ref_id === $this->throw_error_on_deletion_ref_id) {
153 throw new \ilMDOERHarvesterException(
'error');
155 $this->exposed_ref_deletions[] =
$ref_id;
158 public function getTypeOfReferencedObject(
int $ref_id): string
166 ?
int $throw_exception_for_id =
null,
167 int ...$already_have_export_obj_ids
169 return new class ($throw_exception_for_id, $already_have_export_obj_ids) extends NullExportHandler {
170 public array $exposed_created_exports_obj_ids = [];
173 protected ?
int $throw_exception_for_id,
174 protected array $already_have_export_obj_ids
178 public function hasPublicAccessExport(
int $obj_id): bool
180 if ($this->throw_exception_for_id === $obj_id) {
181 throw new \Exception(
'error');
183 return in_array($obj_id, $this->already_have_export_obj_ids);
186 public function createPublicAccessExport(
int $obj_id): void
188 if ($this->throw_exception_for_id === $obj_id) {
189 throw new \Exception(
'error');
191 $this->exposed_created_exports_obj_ids[] = $obj_id;
200 array $currently_harvested = [],
201 array $blocked_obj_ids = [],
202 bool $throw_error =
false
203 ): StatusRepository {
204 return new class ($currently_harvested, $blocked_obj_ids, $throw_error) extends NullStatusRepository {
205 public array $exposed_deletions = [];
206 public array $exposed_creations = [];
209 protected array $currently_harvested,
210 protected array $blocked_obj_ids,
211 protected bool $throw_error
215 public function getAllHarvestedObjIDs(): \Generator
217 if ($this->throw_error ===
true) {
218 throw new \ilMDOERHarvesterException(
'error');
220 yield
from array_keys($this->currently_harvested);
223 public function filterOutBlockedObjects(
int ...$obj_ids): \Generator
225 foreach ($obj_ids as $obj_id) {
226 if (!in_array($obj_id, $this->blocked_obj_ids)) {
232 public function getHarvestRefID(
int $obj_id):
int
234 return $this->currently_harvested[$obj_id];
237 public function deleteHarvestRefID(
int $obj_id): void
239 $this->exposed_deletions[] = $obj_id;
242 public function setHarvestRefID(
int $obj_id,
int $harvested_ref_id): void
244 $this->exposed_creations[] = [
246 'href_id' => $harvested_ref_id
257 return new class ($returned_records) extends NullExposedRecordRepository {
258 public array $exposed_deletions = [];
259 public array $exposed_updates = [];
260 public array $exposed_creations = [];
262 public function __construct(
protected array $returned_records)
266 public function getRecords(
267 ?\DateTimeImmutable $from =
null,
268 ?\DateTimeImmutable $until =
null,
272 foreach ($this->returned_records as $obj_id => $metadata) {
273 yield
new class ($obj_id, $metadata) extends
NullRecord {
275 protected int $obj_id,
276 protected string $metadata
287 public function objID():
int
289 return $this->obj_id;
294 public function metadata(): \DOMDocument
296 $xml = new \DOMDocument();
297 $xml->loadXML($this->metadata);
304 public function deleteRecord(
int $obj_id):
void
306 $this->exposed_deletions[] = [
'obj_id' => $obj_id];
309 public function updateRecord(
int $obj_id, \DOMDocument $metadata):
void
311 $this->exposed_updates[] = [
313 'metadata' => $metadata->saveXML()
317 public function createRecord(
int $obj_id,
string $identifier, \DOMDocument $metadata):
void
319 $this->exposed_creations[] = [
321 'identifier' => $identifier,
322 'metadata' => $metadata->saveXML()
330 return new class ($search_result_obj_ids) extends
NullFactory {
331 public array $exposed_search_params;
333 public function __construct(
public array $search_result_obj_ids)
340 protected array $types = [];
341 protected bool $restricted_to_repository =
false;
343 public function __construct(
protected SearchFactory $factory)
347 public function withRestrictionToRepositoryObjects(
bool $restricted):
SearcherInterface
349 $clone = clone $this;
350 $clone->restricted_to_repository = $restricted;
356 $clone = clone $this;
357 $clone->types[] = $type;
362 LOMRepository $lom_repository,
364 int ...$further_entry_ids
366 $this->
factory->exposed_search_params[] = [
367 'restricted' => $this->restricted_to_repository,
368 'types' => $this->types,
369 'entries' => [$first_entry_id, ...$further_entry_ids]
371 foreach ($this->
factory->search_result_obj_ids as $obj_id) {
377 public function objID():
int
379 return $this->obj_id;
392 protected function getXMLWriter(array $returned_md = []): SimpleDCXMLWriter
394 return new class ($returned_md) extends
NullWriter {
395 public array $exposed_params = [];
397 public function __construct(
protected array $returned_md)
401 public function writeSimpleDCMetaData(
int $obj_id,
int $ref_id,
string $type): \DOMDocument
403 $this->exposed_params[] = [
409 $xml = new \DOMDocument();
410 $xml->loadXML($this->returned_md[$obj_id]);
418 return $this->createMock(\ilLogger::class);
424 public int $exposed_status;
425 public string $exposed_message;
429 $clone = clone $this;
436 $clone = clone $this;
437 $clone->exposed_status = $status;
446 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
447 $object_handler = $this->getObjectHandler(),
448 $this->getExportHandler(),
449 $status_repo = $this->getStatusRepository([32 => 12332, 45 => 12345]),
450 $this->getExposedRecordRepository(),
451 $search_factory = $this->getSearchFactory(45),
452 new NullLOMRepository(),
453 $this->getXMLWriter(),
454 $this->getNullLogger()
457 $result = $harvester->run($this->getCronResultWrapper());
459 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
461 'Deleted 1 deprecated references.<br>' .
462 'Created 0 new references.<br>' .
463 'Created, updated, or deleted 0 exposed records.',
464 $result->exposed_message
467 [[
'restricted' =>
true,
'types' => [
'type',
'second type'],
'entries' => [12, 5]]],
468 $search_factory->exposed_search_params
470 $this->assertSame([32], $status_repo->exposed_deletions);
471 $this->assertSame([12332], $object_handler->exposed_ref_deletions);
477 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
478 $object_handler = $this->getObjectHandler(),
479 $this->getExportHandler(),
480 $status_repo = $this->getStatusRepository([32 => 12332, 45 => 12345], [32]),
481 $this->getExposedRecordRepository(),
482 $this->getSearchFactory(45, 32),
483 new NullLOMRepository(),
484 $this->getXMLWriter(),
485 $this->getNullLogger()
488 $result = $harvester->run($this->getCronResultWrapper());
490 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
492 'Deleted 1 deprecated references.<br>' .
493 'Created 0 new references.<br>' .
494 'Created, updated, or deleted 0 exposed records.',
495 $result->exposed_message
497 $this->assertSame([32], $status_repo->exposed_deletions);
498 $this->assertSame([12332], $object_handler->exposed_ref_deletions);
504 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
505 $object_handler = $this->getObjectHandler([32]),
506 $this->getExportHandler(),
507 $status_repo = $this->getStatusRepository([32 => 12332, 45 => 12345]),
508 $this->getExposedRecordRepository(),
509 $this->getSearchFactory(45, 32),
510 new NullLOMRepository(),
511 $this->getXMLWriter(),
512 $this->getNullLogger()
515 $result = $harvester->run($this->getCronResultWrapper());
517 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
519 'Deleted 1 deprecated references.<br>' .
520 'Created 0 new references.<br>' .
521 'Created, updated, or deleted 0 exposed records.',
522 $result->exposed_message
524 $this->assertSame([32], $status_repo->exposed_deletions);
525 $this->assertSame([12332], $object_handler->exposed_ref_deletions);
531 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
532 $object_handler = $this->getObjectHandler([], 0, [], 12345),
533 $this->getExportHandler(),
534 $status_repo = $this->getStatusRepository([32 => 12332, 45 => 12345, 67 => 12367]),
535 $this->getExposedRecordRepository(),
536 $this->getSearchFactory(),
537 new NullLOMRepository(),
538 $this->getXMLWriter(),
539 $this->getNullLogger()
542 $result = $harvester->run($this->getCronResultWrapper());
544 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
546 'Deleted 2 deprecated references.<br>' .
547 'Created 0 new references.<br>' .
548 'Created, updated, or deleted 0 exposed records.',
549 $result->exposed_message
551 $this->assertSame([32, 67], $status_repo->exposed_deletions);
552 $this->assertSame([12332, 12367], $object_handler->exposed_ref_deletions);
558 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
559 $object_handler = $this->getObjectHandler(),
560 $export_handler = $this->getExportHandler(),
561 $status_repo = $this->getStatusRepository([32 => 12332]),
562 $this->getExposedRecordRepository(),
563 $search_factory = $this->getSearchFactory(32, 45),
564 new NullLOMRepository(),
565 $this->getXMLWriter(),
566 $this->getNullLogger()
569 $result = $harvester->run($this->getCronResultWrapper());
571 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
573 'Deleted 0 deprecated references.<br>' .
574 'Created 1 new references.<br>' .
575 'Created, updated, or deleted 0 exposed records.',
576 $result->exposed_message
580 'restricted' =>
true,
581 'types' => [
'type',
'second type'],
584 $search_factory->exposed_search_params
587 [[
'obj_id' => 45,
'href_id' => 12345]],
588 $status_repo->exposed_creations
591 [[
'obj_id' => 45,
'container_ref_id' => 123,
'new_ref_id' => 12345]],
592 $object_handler->exposed_ref_creations
594 $this->assertSame([45], $export_handler->exposed_created_exports_obj_ids);
600 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
601 $object_handler = $this->getObjectHandler(),
602 $export_handler = $this->getExportHandler(),
603 $status_repo = $this->getStatusRepository([32 => 12332], [45]),
604 $this->getExposedRecordRepository(),
605 $this->getSearchFactory(32, 45),
606 new NullLOMRepository(),
607 $this->getXMLWriter(),
608 $this->getNullLogger()
611 $result = $harvester->run($this->getCronResultWrapper());
613 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_NO_ACTION, $result->exposed_status);
615 'Deleted 0 deprecated references.<br>' .
616 'Created 0 new references.<br>' .
617 'Created, updated, or deleted 0 exposed records.',
618 $result->exposed_message
620 $this->assertEmpty($status_repo->exposed_creations);
621 $this->assertEmpty($object_handler->exposed_ref_creations);
622 $this->assertEmpty($export_handler->exposed_created_exports_obj_ids);
628 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
629 $object_handler = $this->getObjectHandler([45]),
630 $export_handler = $this->getExportHandler(),
631 $status_repo = $this->getStatusRepository([32 => 12332]),
632 $this->getExposedRecordRepository(),
633 $this->getSearchFactory(32, 45),
634 new NullLOMRepository(),
635 $this->getXMLWriter(),
636 $this->getNullLogger()
639 $result = $harvester->run($this->getCronResultWrapper());
641 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_NO_ACTION, $result->exposed_status);
643 'Deleted 0 deprecated references.<br>' .
644 'Created 0 new references.<br>' .
645 'Created, updated, or deleted 0 exposed records.',
646 $result->exposed_message
648 $this->assertEmpty($status_repo->exposed_creations);
649 $this->assertEmpty($object_handler->exposed_ref_creations);
650 $this->assertEmpty($export_handler->exposed_created_exports_obj_ids);
656 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
657 $object_handler = $this->getObjectHandler(),
658 $export_handler = $this->getExportHandler(),
659 $status_repo = $this->getStatusRepository([32 => 12332, 45 => 12345]),
660 $this->getExposedRecordRepository(),
661 $this->getSearchFactory(32, 45),
662 new NullLOMRepository(),
663 $this->getXMLWriter(),
664 $this->getNullLogger()
667 $result = $harvester->run($this->getCronResultWrapper());
669 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_NO_ACTION, $result->exposed_status);
671 'Deleted 0 deprecated references.<br>' .
672 'Created 0 new references.<br>' .
673 'Created, updated, or deleted 0 exposed records.',
674 $result->exposed_message
676 $this->assertEmpty($status_repo->exposed_creations);
677 $this->assertEmpty($object_handler->exposed_ref_creations);
678 $this->assertEmpty($export_handler->exposed_created_exports_obj_ids);
684 $this->getSettings([
'type',
'second type'], [12, 5], 0, 456),
685 $object_handler = $this->getObjectHandler(),
686 $export_handler = $this->getExportHandler(),
687 $status_repo = $this->getStatusRepository([32 => 12332]),
688 $this->getExposedRecordRepository(),
689 $this->getSearchFactory(32, 45),
690 new NullLOMRepository(),
691 $this->getXMLWriter(),
692 $this->getNullLogger()
695 $result = $harvester->run($this->getCronResultWrapper());
697 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_NO_ACTION, $result->exposed_status);
699 'Deleted 0 deprecated references.<br>' .
700 'Created 0 new references.<br>' .
701 'Created, updated, or deleted 0 exposed records.',
702 $result->exposed_message
704 $this->assertEmpty($status_repo->exposed_creations);
705 $this->assertEmpty($object_handler->exposed_ref_creations);
706 $this->assertEmpty($export_handler->exposed_created_exports_obj_ids);
712 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
713 $object_handler = $this->getObjectHandler([], 0, [],
null, 45),
714 $export_handler = $this->getExportHandler(),
715 $status_repo = $this->getStatusRepository(),
716 $this->getExposedRecordRepository(),
717 $this->getSearchFactory(32, 45, 67),
718 new NullLOMRepository(),
719 $this->getXMLWriter(),
720 $this->getNullLogger()
723 $result = $harvester->run($this->getCronResultWrapper());
725 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
727 'Deleted 0 deprecated references.<br>' .
728 'Created 2 new references.<br>' .
729 'Created, updated, or deleted 0 exposed records.',
730 $result->exposed_message
734 [
'obj_id' => 32,
'href_id' => 12332],
735 [
'obj_id' => 67,
'href_id' => 12367]
737 $status_repo->exposed_creations
741 [
'obj_id' => 32,
'container_ref_id' => 123,
'new_ref_id' => 12332],
742 [
'obj_id' => 67,
'container_ref_id' => 123,
'new_ref_id' => 12367]
744 $object_handler->exposed_ref_creations
746 $this->assertSame([32, 67], $export_handler->exposed_created_exports_obj_ids);
752 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
753 $object_handler = $this->getObjectHandler(),
754 $export_handler = $this->getExportHandler(
null, 45),
755 $status_repo = $this->getStatusRepository([32 => 12332]),
756 $this->getExposedRecordRepository(),
757 $search_factory = $this->getSearchFactory(32, 45),
758 new NullLOMRepository(),
759 $this->getXMLWriter(),
760 $this->getNullLogger()
763 $result = $harvester->run($this->getCronResultWrapper());
765 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
767 'Deleted 0 deprecated references.<br>' .
768 'Created 1 new references.<br>' .
769 'Created, updated, or deleted 0 exposed records.',
770 $result->exposed_message
774 'restricted' =>
true,
775 'types' => [
'type',
'second type'],
778 $search_factory->exposed_search_params
781 [[
'obj_id' => 45,
'href_id' => 12345]],
782 $status_repo->exposed_creations
785 [[
'obj_id' => 45,
'container_ref_id' => 123,
'new_ref_id' => 12345]],
786 $object_handler->exposed_ref_creations
788 $this->assertEmpty($export_handler->exposed_created_exports_obj_ids);
794 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
795 $object_handler = $this->getObjectHandler(),
796 $export_handler = $this->getExportHandler(45),
797 $status_repo = $this->getStatusRepository(),
798 $this->getExposedRecordRepository(),
799 $this->getSearchFactory(32, 45, 67),
800 new NullLOMRepository(),
801 $this->getXMLWriter(),
802 $this->getNullLogger()
805 $result = $harvester->run($this->getCronResultWrapper());
807 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
809 'Deleted 0 deprecated references.<br>' .
810 'Created 3 new references.<br>' .
811 'Created, updated, or deleted 0 exposed records.',
812 $result->exposed_message
816 [
'obj_id' => 32,
'href_id' => 12332],
817 [
'obj_id' => 45,
'href_id' => 12345],
818 [
'obj_id' => 67,
'href_id' => 12367]
820 $status_repo->exposed_creations
824 [
'obj_id' => 32,
'container_ref_id' => 123,
'new_ref_id' => 12332],
825 [
'obj_id' => 45,
'container_ref_id' => 123,
'new_ref_id' => 12345],
826 [
'obj_id' => 67,
'container_ref_id' => 123,
'new_ref_id' => 12367]
828 $object_handler->exposed_ref_creations
830 $this->assertSame([32, 67], $export_handler->exposed_created_exports_obj_ids);
836 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
837 $this->getObjectHandler([], 456, [32, 45]),
838 $this->getExportHandler(),
839 $this->getStatusRepository([32 => 12332]),
840 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>', 45 =>
'<el>45</el>']),
841 $search_factory = $this->getSearchFactory(32),
842 new NullLOMRepository(),
843 $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45</el>']),
844 $this->getNullLogger()
847 $result = $harvester->run($this->getCronResultWrapper());
849 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
851 'Deleted 0 deprecated references.<br>' .
852 'Created 0 new references.<br>' .
853 'Created, updated, or deleted 1 exposed records.',
854 $result->exposed_message
858 'restricted' =>
true,
859 'types' => [
'type',
'second type'],
862 $search_factory->exposed_search_params
864 $this->assertEmpty($record_repo->exposed_creations);
865 $this->assertEmpty($record_repo->exposed_updates);
868 $record_repo->exposed_deletions
875 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
876 $this->getObjectHandler([], 456, [32, 45]),
877 $this->getExportHandler(),
878 $this->getStatusRepository([32 => 12332], [45]),
879 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>', 45 =>
'<el>45</el>']),
880 $this->getSearchFactory(32, 45),
881 new NullLOMRepository(),
882 $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45</el>']),
883 $this->getNullLogger()
886 $result = $harvester->run($this->getCronResultWrapper());
888 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
890 'Deleted 0 deprecated references.<br>' .
891 'Created 0 new references.<br>' .
892 'Created, updated, or deleted 1 exposed records.',
893 $result->exposed_message
895 $this->assertEmpty($record_repo->exposed_creations);
896 $this->assertEmpty($record_repo->exposed_updates);
899 $record_repo->exposed_deletions
906 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
907 $this->getObjectHandler([45], 456, [32, 45]),
908 $this->getExportHandler(),
909 $this->getStatusRepository([32 => 12332]),
910 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>', 45 =>
'<el>45</el>']),
911 $this->getSearchFactory(32, 45),
912 new NullLOMRepository(),
913 $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45</el>']),
914 $this->getNullLogger()
917 $result = $harvester->run($this->getCronResultWrapper());
919 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
921 'Deleted 0 deprecated references.<br>' .
922 'Created 0 new references.<br>' .
923 'Created, updated, or deleted 1 exposed records.',
924 $result->exposed_message
926 $this->assertEmpty($record_repo->exposed_creations);
927 $this->assertEmpty($record_repo->exposed_updates);
930 $record_repo->exposed_deletions
937 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
938 $this->getObjectHandler([], 456, [32]),
939 $this->getExportHandler(),
940 $this->getStatusRepository([32 => 12332, 45 => 12345]),
941 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>', 45 =>
'<el>45</el>']),
942 $this->getSearchFactory(32, 45),
943 new NullLOMRepository(),
944 $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45</el>']),
945 $this->getNullLogger()
948 $result = $harvester->run($this->getCronResultWrapper());
950 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
952 'Deleted 0 deprecated references.<br>' .
953 'Created 0 new references.<br>' .
954 'Created, updated, or deleted 1 exposed records.',
955 $result->exposed_message
957 $this->assertEmpty($record_repo->exposed_creations);
958 $this->assertEmpty($record_repo->exposed_updates);
961 $record_repo->exposed_deletions
968 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
969 $this->getObjectHandler([], 456, [32, 45]),
970 $this->getExportHandler(),
971 $this->getStatusRepository([32 => 12332, 45 => 12345]),
972 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>', 45 =>
'<el>45</el>']),
973 $this->getSearchFactory(32, 45),
974 new NullLOMRepository(),
975 $writer = $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45 changed</el>']),
976 $this->getNullLogger()
979 $result = $harvester->run($this->getCronResultWrapper());
981 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
983 'Deleted 0 deprecated references.<br>' .
984 'Created 0 new references.<br>' .
985 'Created, updated, or deleted 1 exposed records.',
986 $result->exposed_message
988 $this->assertEmpty($record_repo->exposed_creations);
989 $this->assertCount(1, $record_repo->exposed_updates);
990 $this->assertSame(45, $record_repo->exposed_updates[0][
'obj_id']);
991 $this->assertXmlStringEqualsXmlString(
992 '<el>45 changed</el>',
993 $record_repo->exposed_updates[0][
'metadata']
995 $this->assertEmpty($record_repo->exposed_deletions);
998 [
'obj_id' => 32,
'ref_id' => 45632,
'type' =>
'type_45632'],
999 [
'obj_id' => 45,
'ref_id' => 45645,
'type' =>
'type_45645']
1001 $writer->exposed_params
1008 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
1009 $this->getObjectHandler([], 456, [32, 45]),
1010 $this->getExportHandler(),
1011 $this->getStatusRepository([32 => 12332, 45 => 12345]),
1012 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>']),
1013 $this->getSearchFactory(32, 45),
1014 new NullLOMRepository(),
1015 $writer = $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45 new</el>']),
1016 $this->getNullLogger()
1019 $result = $harvester->run($this->getCronResultWrapper());
1021 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_OK, $result->exposed_status);
1023 'Deleted 0 deprecated references.<br>' .
1024 'Created 0 new references.<br>' .
1025 'Created, updated, or deleted 1 exposed records.',
1026 $result->exposed_message
1028 $this->assertEmpty($record_repo->exposed_updates);
1029 $this->assertCount(1, $record_repo->exposed_creations);
1030 $this->assertSame(45, $record_repo->exposed_creations[0][
'obj_id']);
1031 $this->assertSame(
'il__type_45645_45', $record_repo->exposed_creations[0][
'identifier']);
1032 $this->assertXmlStringEqualsXmlString(
1034 $record_repo->exposed_creations[0][
'metadata']
1036 $this->assertEmpty($record_repo->exposed_deletions);
1037 $this->assertEquals(
1039 [
'obj_id' => 32,
'ref_id' => 45632,
'type' =>
'type_45632'],
1040 [
'obj_id' => 45,
'ref_id' => 45645,
'type' =>
'type_45645']
1042 $writer->exposed_params
1049 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
1050 $this->getObjectHandler([], 456, [32, 45]),
1051 $this->getExportHandler(),
1052 $this->getStatusRepository([32 => 12332], [45]),
1053 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>']),
1054 $this->getSearchFactory(32, 45),
1055 new NullLOMRepository(),
1056 $writer = $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45 new</el>']),
1057 $this->getNullLogger()
1060 $result = $harvester->run($this->getCronResultWrapper());
1062 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_NO_ACTION, $result->exposed_status);
1064 'Deleted 0 deprecated references.<br>' .
1065 'Created 0 new references.<br>' .
1066 'Created, updated, or deleted 0 exposed records.',
1067 $result->exposed_message
1069 $this->assertEmpty($record_repo->exposed_updates);
1070 $this->assertEmpty($record_repo->exposed_creations);
1071 $this->assertEmpty($record_repo->exposed_deletions);
1077 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
1078 $this->getObjectHandler([45], 456, [32, 45]),
1079 $this->getExportHandler(),
1080 $this->getStatusRepository([32 => 12332]),
1081 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>']),
1082 $this->getSearchFactory(32, 45),
1083 new NullLOMRepository(),
1084 $writer = $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45 new</el>']),
1085 $this->getNullLogger()
1088 $result = $harvester->run($this->getCronResultWrapper());
1090 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_NO_ACTION, $result->exposed_status);
1092 'Deleted 0 deprecated references.<br>' .
1093 'Created 0 new references.<br>' .
1094 'Created, updated, or deleted 0 exposed records.',
1095 $result->exposed_message
1097 $this->assertEmpty($record_repo->exposed_updates);
1098 $this->assertEmpty($record_repo->exposed_creations);
1099 $this->assertEmpty($record_repo->exposed_deletions);
1105 $this->getSettings([
'type',
'second type'], [12, 5], 123, 456),
1106 $this->getObjectHandler([], 456, [32]),
1107 $this->getExportHandler(),
1108 $this->getStatusRepository([32 => 12332, 45 => 12345]),
1109 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>']),
1110 $this->getSearchFactory(32, 45),
1111 new NullLOMRepository(),
1112 $writer = $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45 new</el>']),
1113 $this->getNullLogger()
1116 $result = $harvester->run($this->getCronResultWrapper());
1118 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_NO_ACTION, $result->exposed_status);
1120 'Deleted 0 deprecated references.<br>' .
1121 'Created 0 new references.<br>' .
1122 'Created, updated, or deleted 0 exposed records.',
1123 $result->exposed_message
1125 $this->assertEmpty($record_repo->exposed_updates);
1126 $this->assertEmpty($record_repo->exposed_creations);
1127 $this->assertEmpty($record_repo->exposed_deletions);
1133 $this->getSettings([
'type',
'second type'], [12, 5], 123, 0),
1134 $this->getObjectHandler([], 456, [32, 45]),
1135 $this->getExportHandler(),
1136 $this->getStatusRepository([32 => 12332, 45 => 12345]),
1137 $record_repo = $this->getExposedRecordRepository([32 =>
'<el>32</el>']),
1138 $this->getSearchFactory(32, 45),
1139 new NullLOMRepository(),
1140 $writer = $this->getXMLWriter([32 =>
'<el>32</el>', 45 =>
'<el>45 new</el>']),
1141 $this->getNullLogger()
1144 $result = $harvester->run($this->getCronResultWrapper());
1146 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_NO_ACTION, $result->exposed_status);
1148 'Deleted 0 deprecated references.<br>' .
1149 'Created 0 new references.<br>' .
1150 'Created, updated, or deleted 0 exposed records.',
1151 $result->exposed_message
1153 $this->assertEmpty($record_repo->exposed_updates);
1154 $this->assertEmpty($record_repo->exposed_creations);
1155 $this->assertEmpty($record_repo->exposed_deletions);
1161 $this->getSettings([
'type',
'second type'], [12, 5]),
1162 $object_handler = $this->getObjectHandler(),
1163 $this->getExportHandler(),
1164 $status_repo = $this->getStatusRepository([], [],
true),
1165 $this->getExposedRecordRepository(),
1166 $search_factory = $this->getSearchFactory(),
1167 new NullLOMRepository(),
1168 $this->getXMLWriter(),
1169 $this->getNullLogger()
1172 $result = $harvester->run($this->getCronResultWrapper());
1174 $this->assertSame(\
ILIAS\
Cron\Job\JobResult::STATUS_FAIL, $result->exposed_status);
1177 $result->exposed_message
__construct()
Constructor setup ILIAS global object @access public.
Component logger with individual log levels by component id.
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.