<?php

namespace SilverStripe\FullTextSearch\Tests;

use SilverStripe\FullTextSearch\Tests\Solr4ServiceTest\Solr4ServiceTest_RecordingService;
use SilverStripe\Dev\SapphireTest;

/**
 * Test solr 4.0 compatibility
 */
class Solr4ServiceTest extends SapphireTest
{
    /**
     *
     * @return Solr4ServiceTest_RecordingService
     */
    protected function getMockService()
    {
        return new Solr4ServiceTest_RecordingService();
    }
    
    protected function getMockDocument($id)
    {
        $document = new \Apache_Solr_Document();
        $document->setField('id', $id);
        $document->setField('title', "Item $id");
        return $document;
    }
    
    public function testAddDocument()
    {
        $service = $this->getMockService();
        $sent = $service->addDocument($this->getMockDocument('A'), false);
        $this->assertEquals(
            '<add overwrite="true"><doc><field name="id">A</field><field name="title">Item A</field></doc></add>',
            $sent
        );
        $sent = $service->addDocument($this->getMockDocument('B'), true);
        $this->assertEquals(
            '<add overwrite="false"><doc><field name="id">B</field><field name="title">Item B</field></doc></add>',
            $sent
        );
    }
    
    public function testAddDocuments()
    {
        $service = $this->getMockService();
        $sent = $service->addDocuments(array(
            $this->getMockDocument('C'),
            $this->getMockDocument('D')
        ), false);
        $this->assertEquals(
            '<add overwrite="true"><doc><field name="id">C</field><field name="title">Item C</field></doc><doc><field name="id">D</field><field name="title">Item D</field></doc></add>',
            $sent
        );
        $sent = $service->addDocuments(array(
            $this->getMockDocument('E'),
            $this->getMockDocument('F')
        ), true);
        $this->assertEquals(
            '<add overwrite="false"><doc><field name="id">E</field><field name="title">Item E</field></doc><doc><field name="id">F</field><field name="title">Item F</field></doc></add>',
            $sent
        );
    }
}