/** * @group functional */ public function testUpdateDocumentWithFieldsSource() { $this->_checkScriptInlineSetting(); $client = $this->_getClient(); $index = $client->getIndex('elastica_test'); $type = $index->getType('update_type'); $client->setConfigValue('document', array('autoPopulate' => true)); $newDocument = new Document(null, array('counter' => 5, 'name' => 'Batman')); $this->assertFalse($newDocument->hasVersion()); $response = $type->addDocument($newDocument); $responseData = $response->getData(); $this->assertTrue($newDocument->hasVersion()); $this->assertArrayHasKey('_version', $responseData, '_version is missing in response data it is weird'); $this->assertEquals(1, $responseData['_version']); $this->assertEquals($responseData['_version'], $newDocument->getVersion()); $this->assertTrue($newDocument->hasId()); $script = new Script('ctx._source.counter += count; ctx._source.realName = realName'); $script->setId($newDocument->getId()); $script->setParam('count', 7); $script->setParam('realName', 'Bruce Wayne'); $script->setUpsert($newDocument); $newDocument->setFieldsSource(); $response = $type->updateDocument($script); $responseData = $response->getData(); $data = $type->getDocument($newDocument->getId())->getData(); $this->assertEquals(12, $data['counter']); $this->assertEquals('Batman', $data['name']); $this->assertEquals('Bruce Wayne', $data['realName']); $this->assertTrue($newDocument->hasVersion()); $this->assertArrayHasKey('_version', $responseData, '_version is missing in response data it is weird'); $this->assertEquals(2, $responseData['_version']); $document = $type->getDocument($newDocument->getId()); }