/** * @group unit */ public function testAction() { $action = new Action(); $this->assertEquals('index', $action->getOpType()); $this->assertFalse($action->hasSource()); $expected = '{"index":{}}' . "\n"; $this->assertEquals($expected, $action->toString()); $action->setIndex('index'); $expected = '{"index":{"_index":"index"}}' . "\n"; $this->assertEquals($expected, $action->toString()); $action->setType('type'); $expected = '{"index":{"_index":"index","_type":"type"}}' . "\n"; $this->assertEquals($expected, $action->toString()); $action->setId(1); $expected = '{"index":{"_index":"index","_type":"type","_id":1}}' . "\n"; $this->assertEquals($expected, $action->toString()); $action->setRouting(1); $expected = '{"index":{"_index":"index","_type":"type","_id":1,"_routing":1}}' . "\n"; $this->assertEquals($expected, $action->toString()); $client = $this->_getClient(); $index = new Index($client, 'index2'); $type = new Type($index, 'type2'); $action->setIndex($index); $expected = '{"index":{"_index":"index2","_type":"type","_id":1,"_routing":1}}' . "\n"; $this->assertEquals($expected, $action->toString()); $action->setType($type); $expected = '{"index":{"_index":"index2","_type":"type2","_id":1,"_routing":1}}' . "\n"; $this->assertEquals($expected, $action->toString()); $action->setSource(array('user' => 'name')); $expected = '{"index":{"_index":"index2","_type":"type2","_id":1,"_routing":1}}' . "\n"; $expected .= '{"user":"******"}' . "\n"; $this->assertEquals($expected, $action->toString()); $this->assertTrue($action->hasSource()); $this->assertFalse(Action::isValidOpType('foo')); $this->assertTrue(Action::isValidOpType('delete')); }
/** * @param array $data * * @throws \Elastica\Exception\InvalidException * * @return $this */ public function addRawData(array $data) { foreach ($data as $row) { if (is_array($row)) { $opType = key($row); $metadata = reset($row); if (Action::isValidOpType($opType)) { // add previous action if (isset($action)) { $this->addAction($action); } $action = new Action($opType, $metadata); } elseif (isset($action)) { $action->setSource($row); $this->addAction($action); $action = null; } else { throw new InvalidException('Invalid bulk data, source must follow action metadata'); } } else { throw new InvalidException('Invalid bulk data, should be array of array, Document or Bulk/Action'); } } // add last action if available if (isset($action)) { $this->addAction($action); } return $this; }