/** * @group functional */ public function testUpdateDocumentByDocumentWithUpsert() { $index = $this->_createIndex(); $type = $index->getType('test'); $client = $index->getClient(); $newDocument = new Document(1, array('field1' => 'value1updated', 'field2' => 'value2updated')); $upsert = new Document(1, array('field1' => 'value1', 'field2' => 'value2')); $newDocument->setUpsert($upsert); $client->updateDocument(1, $newDocument, $index->getName(), $type->getName(), array('fields' => '_source')); $document = $type->getDocument(1); $this->assertInstanceOf('Elastica\\Document', $document); $data = $document->getData(); $this->assertArrayHasKey('field1', $data); $this->assertEquals('value1', $data['field1']); $this->assertArrayHasKey('field2', $data); $this->assertEquals('value2', $data['field2']); // should use update document because document exists, upsert document values are ignored $client->updateDocument(1, $newDocument, $index->getName(), $type->getName(), array('fields' => '_source')); $document = $type->getDocument(1); $this->assertInstanceOf('Elastica\\Document', $document); $data = $document->getData(); $this->assertArrayHasKey('field1', $data); $this->assertEquals('value1updated', $data['field1']); $this->assertArrayHasKey('field2', $data); $this->assertEquals('value2updated', $data['field2']); }
/** * @group unit */ public function testUpsert() { $document = new Document(); $upsert = new Document(); $upsert->setData(array('someproperty' => 'somevalue')); $this->assertFalse($document->hasUpsert()); $document->setUpsert($upsert); $this->assertTrue($document->hasUpsert()); $this->assertSame($upsert, $document->getUpsert()); }