diff --git a/tests/test-relationship-metadatum-types.php b/tests/test-relationship-metadatum-types.php new file mode 100644 index 000000000..296a449e0 --- /dev/null +++ b/tests/test-relationship-metadatum-types.php @@ -0,0 +1,171 @@ +collection_book = $this->tainacan_entity_factory->create_entity('collection', ['name' => 'Book', 'status' => 'publish'], true); + $this->collection_author = $this->tainacan_entity_factory->create_entity('collection', ['name' => 'Author', 'status' => 'publish'], true); + $this->collection_article = $this->tainacan_entity_factory->create_entity('collection', ['name' => 'Article','status' => 'publish'], true); + + $this->metadatum_author_book = $this->tainacan_entity_factory->create_entity( + 'metadatum', + array( + 'name' => 'author', + 'description' => 'author', + 'collection' => $this->collection_book, + 'metadata_type' => 'Tainacan\Metadata_Types\Relationship', + 'status' => 'publish', + 'metadata_type_options' => [ + 'display_in_related_items' => 'yes', + 'collection_id' => $this->collection_author->get_id(), + 'search' => '' + ], + 'multiple' => 'yes' + ), + true + ); + + $this->metadatum_author_article = $this->tainacan_entity_factory->create_entity( + 'metadatum', + array( + 'name' => 'author', + 'description' => 'author', + 'collection' => $this->collection_article, + 'metadata_type' => 'Tainacan\Metadata_Types\Relationship', + 'status' => 'publish', + 'metadata_type_options' => [ + 'display_in_related_items' => 'yes', + 'collection_id' => $this->collection_author->get_id(), + 'search' => '' + ], + ), + true + ); + + $this->metadatum_second_author_article = $this->tainacan_entity_factory->create_entity( + 'metadatum', + array( + 'name' => 'secound author', + 'description' => 'secound author', + 'collection' => $this->collection_article, + 'metadata_type' => 'Tainacan\Metadata_Types\Relationship', + 'status' => 'publish', + 'metadata_type_options' => [ + 'display_in_related_items' => 'no', + 'collection_id' => $this->collection_author->get_id(), + 'search' => '' + ] + ), + true + ); + + } + + function test_related_items() { + + $a1 = $this->tainacan_entity_factory->create_entity( + 'item', + array( + 'title' => 'Lopes da silva', + 'description' => 'autor fisico', + 'collection' => $this->collection_author, + 'status' => 'publish' + ), + true + ); + + $a2 = $this->tainacan_entity_factory->create_entity( + 'item', + array( + 'title' => 'Siqueira da martins', + 'description' => 'autor simuante', + 'collection' => $this->collection_author, + 'status' => 'publish' + ), + true + ); + + $b1 = $this->tainacan_entity_factory->create_entity( + 'item', + array( + 'title' => 'O livro dos livros', + 'description' => 'livro broxura', + 'collection' => $this->collection_book, + 'status' => 'publish' + ), + true + ); + + $j1 = $this->tainacan_entity_factory->create_entity( + 'item', + array( + 'title' => 'O artigo da semana', + 'description' => 'artigo mais que cientifico', + 'collection' => $this->collection_article, + 'status' => 'publish' + ), + true + ); + + $j2 = $this->tainacan_entity_factory->create_entity( + 'item', + array( + 'title' => 'Não é magia é tecnologias', + 'description' => 'So digo que não digo nada', + 'collection' => $this->collection_article, + 'status' => 'publish' + ), + true + ); + + $this->tainacan_item_metadata_factory->create_item_metadata($j1, $this->metadatum_author_article, $a1->get_id()); + $this->tainacan_item_metadata_factory->create_item_metadata($j1, $this->metadatum_second_author_article, $a2->get_id()); + + $this->tainacan_item_metadata_factory->create_item_metadata($j2, $this->metadatum_author_article, $a1->get_id()); + $this->tainacan_item_metadata_factory->create_item_metadata($j2, $this->metadatum_second_author_article, $a2->get_id()); + + $this->tainacan_item_metadata_factory->create_item_metadata($b1, $this->metadatum_author_book, [$a1->get_id(), $a2->get_id()]); + + + $a1_related_items = $a1->get_related_items(); + $a2_related_items = $a1->get_related_items(); + + $this->assertTrue(isset($a1_related_items[$this->metadatum_author_article->get_id()])); + $this->assertEquals(2, count($a1_related_items[$this->metadatum_author_article->get_id()]['items'])); + $this->assertTrue(!isset($a2_related_items[$this->metadatum_second_author_article->get_id()])); //não existe esse + + $this->assertTrue(isset($a1_related_items[$this->metadatum_author_book->get_id()])); + $this->assertTrue(isset($a2_related_items[$this->metadatum_author_book->get_id()])); + + $order = array([ + 'id' => $this->metadatum_author_article->get_id(), + 'enabled' => false, + ]); + $this->collection_article->set_metadata_order($order); + $this->collection_article->validate(); + \tainacan_collections()->insert($this->collection_article); + \tainacan_items()->fetch($a1->get_id()); + $a1_related_items = $a1->get_related_items(); + $this->assertTrue(!isset($a1_related_items[$this->metadatum_author_article->get_id()])); + + } + +} \ No newline at end of file