source: sandbox/expresso-solr/expressoMail1_2/solrclient/tests/Solarium/Query/Update/Command/AddTest.php @ 7588

Revision 7588, 5.8 KB checked in by adir, 11 years ago (diff)

Ticket #000 - Adicionando a integracao de buscas com Solr na base a ser isnerida na comunidade

Line 
1<?php
2/**
3 * Copyright 2011 Bas de Nooijer. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 *    this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 *    this listof conditions and the following disclaimer in the documentation
13 *    and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE.
26 *
27 * The views and conclusions contained in the software and documentation are
28 * those of the authors and should not be interpreted as representing official
29 * policies, either expressed or implied, of the copyright holder.
30 */
31
32class Solarium_Query_Update_Command_AddTest extends PHPUnit_Framework_TestCase
33{
34    protected $_command;
35
36    public function setUp()
37    {
38        $this->_command = new Solarium_Query_Update_Command_Add;
39    }
40
41    public function testGetType()
42    {
43        $this->assertEquals(
44            Solarium_Query_Update::COMMAND_ADD,
45            $this->_command->getType()
46        );
47    }
48
49    public function testAddDocument()
50    {
51        $doc = new Solarium_Document_ReadWrite(array('id' => 1));
52        $this->_command->addDocument($doc);
53        $this->assertEquals(
54            array($doc),
55            $this->_command->getDocuments()
56        );
57    }
58
59    public function testAddDocuments()
60    {
61        $doc1 = new Solarium_Document_ReadWrite(array('id' => 1));
62        $doc2 = new Solarium_Document_ReadWrite(array('id' => 2));
63        $this->_command->addDocuments(array($doc1, $doc2));
64        $this->assertEquals(
65            array($doc1, $doc2),
66            $this->_command->getDocuments()
67        );
68    }
69
70    public function testAddDocumentsMultipleTimes()
71    {
72        $doc1 = new Solarium_Document_ReadWrite(array('id' => 1));
73        $doc2 = new Solarium_Document_ReadWrite(array('id' => 2));
74        $this->_command->addDocuments(array($doc1, $doc2));
75
76        $doc3 = new Solarium_Document_ReadWrite(array('id' => 3));
77        $doc4 = new Solarium_Document_ReadWrite(array('id' => 4));
78        $this->_command->addDocuments(array($doc3, $doc4));
79
80        $this->assertEquals(
81            array($doc1, $doc2, $doc3, $doc4),
82            $this->_command->getDocuments()
83        );
84    }
85
86    public function testAddDocumentsIteration()
87    {
88        $doc1 = new Solarium_Document_ReadWrite(array('id' => 1));
89        $doc2 = new Solarium_Document_ReadWrite(array('id' => 2));
90
91        $it = new ArrayIterator(array($doc1, $doc2));
92
93        $this->_command->addDocuments($it);
94
95        if ($this->_command->getDocuments() instanceof Traversable) {
96            $command_documents = iterator_to_array($this->_command->getDocuments());
97        } else {
98            $command_documents = $this->_command->getDocuments();
99        }
100
101        $this->assertEquals(
102            array($doc1, $doc2),
103            $command_documents,
104            'checking first two documents are added correctly'
105        );
106
107        $doc3 = new Solarium_Document_ReadWrite(array('id' => 3));
108        $doc4 = new Solarium_Document_ReadWrite(array('id' => 4));
109        $doc5 = new Solarium_Document_ReadWrite(array('id' => 5));
110
111        $it2 = new ArrayIterator(array($doc3, $doc4, $doc5));
112
113        $this->_command->addDocuments($it2);
114
115        if ($this->_command->getDocuments() instanceof Traversable) {
116            $command_documents = iterator_to_array($this->_command->getDocuments());
117        } else {
118            $command_documents = $this->_command->getDocuments();
119        }
120
121        $this->assertEquals(
122            array($doc1, $doc2, $doc3, $doc4, $doc5),
123            $command_documents,
124            'checking second three documents are added correctly to first two'
125        );
126    }
127
128    /**
129     * @depends testAddDocumentsIteration
130     */
131    public function testAddDocumentToIteration()
132    {
133        $doc1 = new Solarium_Document_ReadWrite(array('id' => 1));
134        $doc2 = new Solarium_Document_ReadWrite(array('id' => 2));
135
136        $this->_command->addDocuments(new ArrayIterator(array($doc1, $doc2)));
137
138        $doc3 = new Solarium_Document_ReadWrite(array('id' => 3));
139
140        $this->_command->addDocument($doc3);
141
142        if ($this->_command->getDocuments() instanceof Traversable) {
143            $command_documents = iterator_to_array($this->_command->getDocuments());
144        } else {
145            $command_documents = $this->_command->getDocuments();
146        }
147
148        $this->assertEquals(
149            array($doc1, $doc2, $doc3),
150            $command_documents
151        );
152    }
153
154    public function testGetAndSetOverwrite()
155    {
156        $this->_command->setOverwrite(false);
157        $this->assertEquals(
158            false,
159            $this->_command->getOverwrite()
160        );
161    }
162
163    public function testGetAndSetCommitWithin()
164    {
165        $this->_command->setCommitWithin(100);
166        $this->assertEquals(
167            100,
168            $this->_command->getCommitWithin()
169        );
170    }
171}
Note: See TracBrowser for help on using the repository browser.