Completed
Push — master ( 5f1b92...b77c46 )
by mw
17s
created

DispatchingResourceBuilderTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 108
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 108
rs 10
wmc 6
lcom 1
cbo 2

6 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 4 1
A testCanConstruct() 0 7 1
A testIsResourceBuilderForValidMatch() 0 20 1
A testIsResourceBuilderForInvalidMatch() 0 10 1
B testAddResourceValueOnValidMatchedResourceBuilder() 0 25 1
B testAddResourceValueOnDefaultResourceBuilderWhenOthersCannotMatch() 0 31 1
1
<?php
2
3
namespace SMW\Tests\Exporter\ResourceBuilders;
4
5
use SMW\Exporter\ResourceBuilders\DispatchingResourceBuilder;
6
use SMW\Exporter\ResourceBuilder;
7
use SMW\DataItemFactory;
8
9
/**
10
 * @covers \SMW\Exporter\ResourceBuilders\DispatchingResourceBuilder
11
 * @group semantic-mediawiki
12
 *
13
 * @license GNU GPL v2+
14
 * @since 2.5
15
 *
16
 * @author mwjames
17
 */
18
class DispatchingResourceBuilderTest extends \PHPUnit_Framework_TestCase {
19
20
	private $dataItemFactory;
21
22
	protected function setUp() {
23
		parent::setUp();
24
		$this->dataItemFactory = new DataItemFactory();
25
	}
26
27
	public function testCanConstruct() {
28
29
		$this->assertInstanceof(
30
			DispatchingResourceBuilder::class,
31
			new DispatchingResourceBuilder()
32
		);
33
	}
34
35
	public function testIsResourceBuilderForValidMatch() {
36
37
		$property = $this->dataItemFactory->newDIProperty( 'Foo' );
38
39
		$resourceBuilder = $this->getMockBuilder( ResourceBuilder::class )
40
			->disableOriginalConstructor()
41
			->getMock();
42
43
		$resourceBuilder->expects( $this->once() )
44
			->method( 'isResourceBuilderFor' )
45
			->with( $this->equalTo( $property ) )
46
			->will( $this->returnValue( true ) );
47
48
		$instance = new DispatchingResourceBuilder();
49
		$instance->addResourceBuilder( $resourceBuilder );
50
51
		$this->assertTrue(
52
			$instance->isResourceBuilderFor( $property )
53
		);
54
	}
55
56
	public function testIsResourceBuilderForInvalidMatch() {
57
58
		$property = $this->dataItemFactory->newDIProperty( 'Foo' );
59
60
		$instance = new DispatchingResourceBuilder();
61
62
		$this->assertFalse(
63
			$instance->isResourceBuilderFor( $property )
64
		);
65
	}
66
67
	public function testAddResourceValueOnValidMatchedResourceBuilder() {
68
69
		$expData = $this->getMockBuilder( '\SMWExpData' )
70
			->disableOriginalConstructor()
71
			->getMock();
72
73
		$property = $this->dataItemFactory->newDIProperty( 'Foo' );
74
		$dataItem = $this->dataItemFactory->newDIBlob( 'Bar' );
75
76
		$resourceBuilder = $this->getMockBuilder( ResourceBuilder::class )
77
			->disableOriginalConstructor()
78
			->getMock();
79
80
		$resourceBuilder->expects( $this->once() )
81
			->method( 'isResourceBuilderFor' )
82
			->will( $this->returnValue( true ) );
83
84
		$resourceBuilder->expects( $this->once() )
85
			->method( 'addResourceValue' );
86
87
		$instance = new DispatchingResourceBuilder();
88
		$instance->addResourceBuilder( $resourceBuilder );
89
90
		$instance->addResourceValue( $expData, $property, $dataItem );
91
	}
92
93
	public function testAddResourceValueOnDefaultResourceBuilderWhenOthersCannotMatch() {
94
95
		$expData = $this->getMockBuilder( '\SMWExpData' )
96
			->disableOriginalConstructor()
97
			->getMock();
98
99
		$property = $this->dataItemFactory->newDIProperty( 'Foo' );
100
		$dataItem = $this->dataItemFactory->newDIBlob( 'Bar' );
101
102
		$resourceBuilder = $this->getMockBuilder( ResourceBuilder::class )
103
			->disableOriginalConstructor()
104
			->getMock();
105
106
		$resourceBuilder->expects( $this->once() )
107
			->method( 'isResourceBuilderFor' )
108
			->will( $this->returnValue( false ) );
109
110
		$defaultResourceBuilder = $this->getMockBuilder( ResourceBuilder::class )
111
			->disableOriginalConstructor()
112
			->getMock();
113
114
		$defaultResourceBuilder->expects( $this->once() )
115
			->method( 'addResourceValue' );
116
117
		$instance = new DispatchingResourceBuilder();
118
119
		$instance->addResourceBuilder( $resourceBuilder );
120
		$instance->addDefaultResourceBuilder( $defaultResourceBuilder );
121
122
		$instance->addResourceValue( $expData, $property, $dataItem );
123
	}
124
125
}
126