/** * @link https://familysearch.org/developers/docs/api/sources/Create_User-Uploaded_Source_usecase */ public function testCreateUserUploadedSource() { $this->collectionState(new FamilyTreeStateFactory()); /** @var FamilyTreePersonState $person */ $person = $this->createPerson(); $this->assertEquals(HttpStatus::CREATED, $person->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . '(create person)', $person)); $person = $person->get(); $this->assertEquals(HttpStatus::OK, $person->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . '(read person)', $person)); $ds = new DataSource(); $ds->setTitle("Sample Memory"); $ds->setFile(ArtifactBuilder::makeTextFile()); $a1 = $person->addArtifact($ds); $this->assertEquals(HttpStatus::CREATED, $a1->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . '(add artifact)', $a1)); $this->queueForDelete($a1); $this->assertEquals(HttpStatus::CREATED, $a1->getResponse()->getStatusCode()); $artifacts = $person->readArtifacts(); $this->assertEquals(HttpStatus::OK, $artifacts->getResponse()->getStatusCode()); /** @var \Gedcomx\Rs\Client\SourceDescriptionState $artifact */ $artifact = $person->readArtifacts(); $this->assertEquals(HttpStatus::OK, $artifact->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . '(read artifact)', $artifact)); $artifact = $artifact->getSourceDescription(); $memoryUri = $artifact->getLink("memory")->getHref(); $source = SourceBuilder::newSource(); $source->setAbout($memoryUri); $state = $this->collectionState()->addSourceDescription($source); $this->queueForDelete($state); $this->assertNotNull($state->ifSuccessful()); $this->assertEquals(HttpStatus::CREATED, $state->getResponse()->getStatusCode(), $this->buildFailMessage(__METHOD__ . '(source description)', $state)); }
/** * @link https://familysearch.org/developers/docs/api/memories/Upload_Story_usecase * SDK only supports uploading via multi-part form uploads. */ public function testUploadStory() { $filename = ArtifactBuilder::makeTextFile(); $artifact = new DataSource(); $artifact->setFile($filename); $description = SourceBuilder::newSource(); $factory = new FamilySearchStateFactory(); /** @var FamilySearchMemories $memories */ $memories = $factory->newMemoriesState(); $memories = $this->authorize($memories); $this->assertNotEmpty($memories->getAccessToken()); $upload = $memories->addArtifact($artifact, $description); $this->queueForDelete($upload); $this->assertEquals(HttpStatus::CREATED, $upload->getStatus(), $this->buildFailMessage(__METHOD__, $upload)); $upload = $upload->get(); $this->assertEquals(HttpStatus::OK, $upload->getStatus()); }
protected function createSource() { $source = SourceBuilder::newSource(); $link = $this->collectionState()->getLink(Rel::SOURCE_DESCRIPTIONS); if ($link === null || $link->getHref() === null) { return null; } $state = $this->collectionState()->addSourceDescription($source); $this->queueForDelete($state); return $state; }
/** * @vcr SourcesTests/testDeleteSourceDescription.json * @link https://familysearch.org/developers/docs/api/sources/Delete_Source_Description_usecase */ public function testDeleteSourceDescription() { $this->collectionState(new FamilyTreeStateFactory()); $sd = SourceBuilder::newSource(); /** @var SourceDescriptionState $description */ $description = $this->collectionState()->addSourceDescription($sd); $this->assertEquals(HttpStatus::CREATED, $description->getStatus()); $this->queueForDelete($description); $description = $description->get(); $this->assertEquals(HttpStatus::OK, $description->getStatus()); $state = $description->delete(); $this->assertNotNull($state->ifSuccessful()); $this->assertEquals(HttpStatus::NO_CONTENT, $state->getStatus()); }
/** * @vcr SourceBoxTests/testMoveSourcesToAUserDefinedCollection.json * @link https://familysearch.org/developers/docs/api/sources/Move_Sources_to_a_User-Defined_Collection_usecase */ public function testMoveSourcesToAUserDefinedCollection() { $factory = new FamilySearchStateFactory(); /** @var FamilySearchCollectionState $collection */ $collection = $this->collectionState($factory, "https://sandbox.familysearch.org/platform/collections/sources"); $sd = SourceBuilder::newSource(); /** @var FamilySearchSourceDescriptionState $description */ $description = $collection->addSourceDescription($sd); $this->queueForDelete($description); $this->assertEquals(HttpStatus::CREATED, $description->getStatus()); $description = $description->get(); $this->assertEquals(HttpStatus::OK, $description->getStatus()); /** @var CollectionState $subcollection */ $c = new Collection(); $c->setTitle(TestBuilder::faker()->sha1); $subcollection = $collection->addCollection($c)->get(); $this->queueForDelete($subcollection); /** @var FamilySearchSourceDescriptionState $state */ $state = $description->moveToCollection($subcollection); $this->assertNotNull($state->ifSuccessful()); $this->assertEquals(HttpStatus::NO_CONTENT, $state->getStatus()); // Ensure it doesn't exist in the old collection $rootCollection = $this->getRootCollection($collection); $found = $this->findInCollection($description->getSourceDescription(), $rootCollection->readSourceDescriptions()->getEntity()->getSourceDescriptions()); $this->assertFalse($found); // Ensure it exists in the new collection $found = $this->findInCollection($description->getSourceDescription(), $subcollection->readSourceDescriptions()->getEntity()->getSourceDescriptions()); $this->assertTrue($found); }