Completed
Push — master ( aa2dbb...5f8e8d )
by
unknown
02:19
created

testHandlerDoesNotTransformNonSearchTextFields()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 23
rs 9.0856
cc 1
eloc 16
nc 1
nop 0
1
<?php
2
namespace Netdudes\DataSourceryBundle\Tests\Query;
3
4
use Netdudes\DataSourceryBundle\DataSource\Configuration\Field;
5
use Netdudes\DataSourceryBundle\DataType\SearchTextDataType;
6
use Netdudes\DataSourceryBundle\DataType\StringDataType;
7
use Netdudes\DataSourceryBundle\Query\Filter;
8
use Netdudes\DataSourceryBundle\Query\FilterCondition;
9
use Netdudes\DataSourceryBundle\Query\SearchTextFieldHandler;
10
use Netdudes\DataSourceryBundle\Query\SearchTextFilterConditionTransformer;
11
use Prophecy\Argument;
12
13
class SearchTextFieldHandlerTest extends \PHPUnit_Framework_TestCase
14
{
15
    public function testHandlerDoesNotTransformNonSearchTextFields()
16
    {
17
        $fieldName = 'fieldName';
18
19
        $field = $this->prophesize(Field::class);
20
        $field->getUniqueName()->willReturn($fieldName);
21
        $field->getDataType()->willReturn(new StringDataType());
22
        $dataSourceFields = [$field->reveal()];
23
24
        $filterCondition = $this->prophesize(FilterCondition::class);
25
        $filterCondition->getFieldName()->willReturn($fieldName);
26
        $filter = new Filter([$filterCondition->reveal()]);
27
28
        $transformer = $this->prophesize(SearchTextFilterConditionTransformer::class);
29
        $transformer->transform(Argument::any(), Argument::any())->shouldNotBeCalled();
30
31
        $handler = new SearchTextFieldHandler($transformer->reveal());
32
        $handler->handle($filter, $dataSourceFields);
33
34
        $this->assertInstanceOf(Filter::class, $filter);
35
        $this->assertCount(1, $filter);
36
        $this->assertSame($filterCondition->reveal(), $filter[0]);
37
    }
38
39
    public function testHandlerTransformsSearchTextFields()
40
    {
41
        $fieldName = 'fieldName';
42
43
        $field = $this->prophesize(Field::class);
44
        $field->getUniqueName()->willReturn($fieldName);
45
        $field->getDataType()->willReturn(new SearchTextDataType());
46
        $dataSourceFields = [$field->reveal()];
47
48
        $filterCondition = $this->prophesize(FilterCondition::class);
49
        $filterCondition->getFieldName()->willReturn($fieldName);
50
        $filter = new Filter([$filterCondition->reveal()]);
51
52
        $transformedFilterCondition = $this->prophesize(FilterCondition::class);
53
54
        $transformer = $this->prophesize(SearchTextFilterConditionTransformer::class);
55
        $transformer->transform($filterCondition, $dataSourceFields)->shouldBeCalled()->willReturn($transformedFilterCondition);
56
57
        $handler = new SearchTextFieldHandler($transformer->reveal());
58
        $handler->handle($filter, $dataSourceFields);
59
60
        $this->assertInstanceOf(Filter::class, $filter);
61
        $this->assertCount(1, $filter);
62
        $this->assertSame($transformedFilterCondition->reveal(), $filter[0]);
63
    }
64
65
    public function testHandlerTransformsSearchTextFieldsForNestedFilterConditions()
66
    {
67
        $fieldName = 'fieldName';
68
69
        $field = $this->prophesize(Field::class);
70
        $field->getUniqueName()->willReturn($fieldName);
71
        $field->getDataType()->willReturn(new SearchTextDataType());
72
        $dataSourceFields = [$field->reveal()];
73
74
        $filterCondition = $this->prophesize(FilterCondition::class);
75
        $filterCondition->getFieldName()->willReturn($fieldName);
76
        $subFilter = new Filter([$filterCondition->reveal()]);
77
        $filter = new Filter([$subFilter]);
78
79
        $transformedFilterCondition = $this->prophesize(FilterCondition::class);
80
81
        $transformer = $this->prophesize(SearchTextFilterConditionTransformer::class);
82
        $transformer->transform($filterCondition, $dataSourceFields)->shouldBeCalled()->willReturn($transformedFilterCondition);
83
84
        $handler = new SearchTextFieldHandler($transformer->reveal());
85
        $handler->handle($filter, $dataSourceFields);
86
87
        $this->assertInstanceOf(Filter::class, $filter);
88
        $this->assertCount(1, $filter);
89
        $this->assertSame($subFilter, $filter[0]);
90
        $this->assertCount(1, $subFilter);
91
        $this->assertSame($transformedFilterCondition->reveal(), $subFilter[0]);
92
    }
93
}
94