1--TEST--
2SolrClient::addDocumnt() - Partial Update (integration)
3--SKIPIF--
4<?php require_once 'skip.if.server_not_configured.inc'; ?>
5--FILE--
6<?php
7
8require_once "bootstrap.inc";
9
10$options = array
11(
12    'hostname' => SOLR_SERVER_HOSTNAME,
13    'login'    => SOLR_SERVER_USERNAME,
14    'password' => SOLR_SERVER_PASSWORD,
15    'port'     => SOLR_SERVER_PORT,
16    'path'	   => SOLR_SERVER_PATH
17);
18
19$client = new SolrClient($options);
20
21$printDocument = function() use ($client) {
22	$response = $client->getById('testing_partials');
23	print_r($response->getResponse());
24};
25// clean up, before running the test
26$client->deleteById('testing_partials');
27$client->commit();
28
29$initialDoc = new SolrInputDocument();
30
31$initialDoc->addField('id', 'testing_partials');
32$initialDoc->addField('field1', 'existing value');
33$initialDoc->addField('field1', 'remove me please');
34$initialDoc->addField('field1', '15/01/2007');
35$initialDoc->addField('field2_s', 'initialField');
36$initialDoc->addField('field3_i', 0);
37$initialDoc->addField('field4', 'val1');
38$initialDoc->addField('field5_s', 'unmodified field');
39
40$client->addDocument($initialDoc);
41$client->commit();
42separator('INITIAL');
43$printDocument();
44
45$doc = new SolrInputDocument();
46$doc->addField('id', 'testing_partials');
47$doc->updateField('field1', SolrInputDocument::UPDATE_MODIFIER_ADD, 'newly added value');
48$doc->updateField('field1', SolrInputDocument::UPDATE_MODIFIER_REMOVE, 'remove me please');
49$doc->updateField('field3_i', SolrInputDocument::UPDATE_MODIFIER_INC, 5);
50$doc->updateField('field2_s', SolrInputDocument::UPDATE_MODIFIER_SET, 'updated string');
51$doc->updateField('field1', SolrInputDocument::UPDATE_MODIFIER_REMOVEREGEX, '[\d]{2}/[\d]{2}/[\d]{4}');
52
53$response = $client->addDocument($doc);
54$client->commit();
55separator('RAW REQUEST');
56print_r($response->getRawRequest());
57$client->commit();
58
59separator('RESULT AFTER UPDATE');
60$printDocument();
61?>
62--EXPECTF--
63=================================== INITIAL ====================================
64SolrObject Object
65(
66    [doc] => SolrObject Object
67        (
68            [id] => testing_partials
69            [field1] => Array
70                (
71                    [0] => existing value
72                    [1] => remove me please
73                    [2] => 15/01/2007
74                )
75
76            [field2_s] => initialField
77            [field3_i] => 0
78            [field4] => Array
79                (
80                    [0] => val1
81                )
82
83            [field5_s] => unmodified field
84            [_version_] => %d
85        )
86
87)
88================================= RAW REQUEST ==================================
89<?xml version="1.0" encoding="UTF-8"?>
90<add overwrite="true">
91  <doc>
92    <field name="id">testing_partials</field>
93    <field name="field1" update="add">newly added value</field>
94    <field name="field1" update="remove">remove me please</field>
95    <field name="field1" update="removeregex">[\d]{2}/[\d]{2}/[\d]{4}</field>
96    <field name="field3_i" update="inc">5</field>
97    <field name="field2_s" update="set">updated string</field>
98  </doc>
99</add>
100============================= RESULT AFTER UPDATE ==============================
101SolrObject Object
102(
103    [doc] => SolrObject Object
104        (
105            [id] => testing_partials
106            [field1] => Array
107                (
108                    [0] => existing value
109                    [1] => newly added value
110                )
111
112            [field2_s] => updated string
113            [field3_i] => 5
114            [field4] => Array
115                (
116                    [0] => val1
117                )
118
119            [field5_s] => unmodified field
120            [_version_] => %d
121        )
122
123)
124
125