Issues (71)

Security Analysis    no request data  

This project does not seem to handle request data directly as such no vulnerable execution paths were found.

  Cross-Site Scripting
Cross-Site Scripting enables an attacker to inject code into the response of a web-request that is viewed by other users. It can for example be used to bypass access controls, or even to take over other users' accounts.
  File Exposure
File Exposure allows an attacker to gain access to local files that he should not be able to access. These files can for example include database credentials, or other configuration files.
  File Manipulation
File Manipulation enables an attacker to write custom data to files. This potentially leads to injection of arbitrary code on the server.
  Object Injection
Object Injection enables an attacker to inject an object into PHP code, and can lead to arbitrary code execution, file exposure, or file manipulation attacks.
  Code Injection
Code Injection enables an attacker to execute arbitrary code on the server.
  Response Splitting
Response Splitting can be used to send arbitrary responses.
  File Inclusion
File Inclusion enables an attacker to inject custom files into PHP's file loading mechanism, either explicitly passed to include, or for example via PHP's auto-loading mechanism.
  Command Injection
Command Injection enables an attacker to inject a shell command that is execute with the privileges of the web-server. This can be used to expose sensitive data, or gain access of your server.
  SQL Injection
SQL Injection enables an attacker to execute arbitrary SQL code on your database server gaining access to user data, or manipulating user data.
  XPath Injection
XPath Injection enables an attacker to modify the parts of XML document that are read. If that XML document is for example used for authentication, this can lead to further vulnerabilities similar to SQL Injection.
  LDAP Injection
LDAP Injection enables an attacker to inject LDAP statements potentially granting permission to run unauthorized queries, or modify content inside the LDAP tree.
  Header Injection
  Other Vulnerability
This category comprises other attack vectors such as manipulating the PHP runtime, loading custom extensions, freezing the runtime, or similar.
  Regex Injection
Regex Injection enables an attacker to execute arbitrary code in your PHP process.
  XML Injection
XML Injection enables an attacker to read files on your local filesystem including configuration files, or can be abused to freeze your web-server process.
  Variable Injection
Variable Injection enables an attacker to overwrite program variables with custom data, and can lead to further vulnerabilities.
Unfortunately, the security analysis is currently not available for your project. If you are a non-commercial open-source project, please contact support to gain access.

Test/Case/Lib/ShellSeedProcessorTest.php (28 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
App::uses('ShellDispatcher', 'Console');
4
App::uses('ConsoleOutput', 'Console');
5
App::uses('ConsoleInput', 'Console');
6
App::uses('SeederTaskBase', 'FakeSeeder.Console');
7
App::uses('ShellSeedProcessor', 'FakeSeeder.Lib');
8
App::uses('ColumnTypeGuesser', 'FakeSeeder.Lib');
9
10
/**
11
 * ShellSeedProcessor Test
12
 *
13
 * @coversDefaultClass ShellSeedProcessor
14
 */
15
class ShellSeedProcessorTest extends CakeTestCase {
16
17
	/**
18
	 * The fixtures
19
	 *
20
	 * @var array
21
	 */
22
	public $fixtures = array(
23
		'plugin.fake_seeder.apple',
24
	);
25
26
	/**
27
	 * Disable auto loading the fixtures as we rarely need them
28
	 *
29
	 * @var bool
30
	 */
31
	public $autoFixtures = false;
32
33
	/**
34
	 * The shell object
35
	 *
36
	 * @var null|Shell
37
	 */
38
	protected $_seeder = null;
39
40
	/**
41
	 * The object under test
42
	 *
43
	 * @var null|ShellSeedProcessor
44
	 */
45
	protected $_processor = null;
46
47
	/**
48
	 * Setup the object under test
49
	 *
50
	 * @return void
51
	 */
52
	public function setUp() {
53
		parent::setUp();
54
55
		$out = $this->getMock('ConsoleOutput', array(), array(), '', false);
56
		$in = $this->getMock('ConsoleInput', array(), array(), '', false);
57
		$this->_seeder = $this->getMock('SeederTaskBase',
58
			array(),
59
			array($out, $out, $in)
60
		);
61
	}
62
63
	/**
64
	 * Create a ShellSeedProcessor mock
65
	 *
66
	 * @param array $methods The methods to mock.
67
	 * @return void
68
	 */
69
	protected function _createProcessorMock($methods) {
70
		$this->_processor = $this->getMock(
71
			'ShellSeedProcessor',
72
			$methods,
73
			array($this->_seeder)
74
		);
75
	}
76
77
	/**
78
	 * Test the constructor
79
	 *
80
	 * @return void
81
	 * @covers ::__construct
82
	 */
83
	public function testConstruct() {
84
		$processor = new ShellSeedProcessor($this->_seeder);
0 ignored issues
show
It seems like $this->_seeder can be null; however, __construct() does not accept null, maybe add an additional type check?

Unless you are absolutely sure that the expression can never be null because of other conditions, we strongly recommend to add an additional type check to your code:

/** @return stdClass|null */
function mayReturnNull() { }

function doesNotAcceptNull(stdClass $x) { }

// With potential error.
function withoutCheck() {
    $x = mayReturnNull();
    doesNotAcceptNull($x); // Potential error here.
}

// Safe - Alternative 1
function withCheck1() {
    $x = mayReturnNull();
    if ( ! $x instanceof stdClass) {
        throw new \LogicException('$x must be defined.');
    }
    doesNotAcceptNull($x);
}

// Safe - Alternative 2
function withCheck2() {
    $x = mayReturnNull();
    if ($x instanceof stdClass) {
        doesNotAcceptNull($x);
    }
}
Loading history...
85
		$this->assertAttributeInstanceOf('SeederTaskBase', '_seeder', $processor);
86
	}
87
88
	/**
89
	 * Tests the processFixtures method
90
	 *
91
	 * @return void
92
	 * @covers ::processFixtures
93
	 */
94
	public function testProcessFixtures() {
95
		$this->_createProcessorMock(array('saveSeeds'));
96
		$fixtures = array(array('Model' => array('foo' => 'bar')));
97
98
		$this->_seeder->expects($this->at(0))->method('fixtureRecords')->will($this->returnValue($fixtures));
99
		$this->_processor->expects($this->at(0))->method('saveSeeds');
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
100
101
		$this->_processor->processFixtures();
102
	}
103
104
	/**
105
	 * Tests the processFixtures method with no fixtures set
106
	 *
107
	 * @return void
108
	 * @covers ::processFixtures
109
	 */
110
	public function testProcessFixturesNoFixturesSet() {
111
		$this->_createProcessorMock(array('saveSeeds'));
112
113
		$fixtures = array();
114
115
		$this->_seeder->expects($this->at(0))->method('fixtureRecords')->will($this->returnValue($fixtures));
116
		$this->_processor->expects($this->never())->method('saveSeeds');
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
117
118
		$this->_processor->processFixtures();
119
	}
120
121
	/**
122
	 * Tests the sowSeeds method when there are no field formatters
123
	 *
124
	 * @return void
125
	 * @covers ::sowSeeds
126
	 */
127
	public function testSowSeedsNoFieldFormatters() {
128
		$this->_createProcessorMock(array('getFieldFormatters', 'createSeed', 'saveSeeds'));
129
130
		$this->_seeder->expects($this->at(0))->method('getModelName')->will($this->returnValue('Apple'));
131
		$this->_seeder->expects($this->at(1))->method('getRecordsCount')->will($this->returnValue(5));
132
		$this->_seeder->expects($this->at(2))->method('out')->with($this->equalTo('Sowing 5 seeds for model Apple'));
133
		$this->_seeder->expects($this->at(3))->method('out')->with($this->equalTo('No field formatters configured, aborting.'));
134
135
		$this->_processor->expects($this->at(0))->method('getFieldFormatters')->will($this->returnValue(array()));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
136
		$this->_processor->expects($this->never())->method('createSeed');
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
137
		$this->_processor->expects($this->never())->method('saveSeeds');
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
138
139
		$this->_processor->sowSeeds();
140
	}
141
142
	/**
143
	 * Tests the sowSeeds method when empty seeds get created
144
	 *
145
	 * @return void
146
	 * @covers ::sowSeeds
147
	 */
148
	public function testSowSeedsCreatedSeedEmpty() {
149
		$this->_createProcessorMock(array('getFieldFormatters', 'createSeed', 'saveSeeds'));
150
151
		$this->_seeder->expects($this->at(0))->method('getModelName')->will($this->returnValue('Apple'));
152
		$this->_seeder->expects($this->at(1))->method('getRecordsCount')->will($this->returnValue(5));
153
		$this->_seeder->expects($this->at(2))->method('out')->with($this->equalTo('Sowing 5 seeds for model Apple'));
154
		$this->_seeder->expects($this->at(3))->method('out')->with($this->equalTo('Created seed is empty! Check the field formatters.'));
155
		$this->_seeder->expects($this->at(4))->method('out')->with($this->equalTo('Finished sowing 5 seeds for model Apple'));
156
157
		$this->_processor->expects($this->at(0))->method('getFieldFormatters')->will($this->returnValue(array('NotEmpty')));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
158
		$this->_processor->expects($this->at(1))->method('createSeed')->will($this->returnValue(array()));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
159
		$this->_processor->expects($this->at(2))->method('saveSeeds');
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
160
161
		$this->_processor->sowSeeds();
162
	}
163
164
	/**
165
	 * Tests the sowSeeds method
166
	 *
167
	 * @return void
168
	 * @covers ::sowSeeds
169
	 */
170
	public function testSowSeeds() {
171
		$this->_createProcessorMock(array('getFieldFormatters', 'createSeed', 'saveSeeds'));
172
173
		$this->_seeder->expects($this->at(0))->method('getModelName')->will($this->returnValue('Apple'));
174
		$this->_seeder->expects($this->at(1))->method('getRecordsCount')->will($this->returnValue(5));
175
		$this->_seeder->expects($this->at(2))->method('out')->with($this->equalTo('Sowing 5 seeds for model Apple'));
176
		$this->_seeder->expects($this->at(4))->method('out')->with($this->equalTo('.'), $this->equalTo(0));
177
		$this->_seeder->expects($this->at(5))->method('out')->with($this->equalTo('.'), $this->equalTo(0));
178
		$this->_seeder->expects($this->at(6))->method('out')->with($this->equalTo('.'), $this->equalTo(0));
179
		$this->_seeder->expects($this->at(7))->method('out')->with($this->equalTo('.'), $this->equalTo(0));
180
		$this->_seeder->expects($this->at(8))->method('out')->with($this->equalTo(' 5 / 5'), $this->equalTo(1));
181
		$this->_seeder->expects($this->at(9))->method('out')->with($this->equalTo('Finished sowing 5 seeds for model Apple'));
182
183
		$this->_processor->expects($this->at(0))->method('getFieldFormatters')->will($this->returnValue(array('NotEmpty')));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
184
		$this->_processor->expects($this->exactly(5))->method('createSeed')->will($this->returnValue(array('NotEmpty')));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
185
		$this->_processor->expects($this->at(2))->method('saveSeeds');
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
186
187
		$this->_processor->sowSeeds();
188
	}
189
190
	/**
191
	 * Tests the sowSeeds method when sowing more than 50 seeds
192
	 *
193
	 * @return void
194
	 * @covers ::sowSeeds
195
	 */
196
	public function testSowSeedsFithyPlus() {
197
		$this->_createProcessorMock(array('getFieldFormatters', 'createSeed', 'saveSeeds'));
198
199
		$this->_seeder->expects($this->at(0))->method('getModelName')->will($this->returnValue('Apple'));
200
		$this->_seeder->expects($this->at(1))->method('getRecordsCount')->will($this->returnValue(55));
201
		$this->_seeder->expects($this->at(3))->method('out')->with($this->equalTo('.'), $this->equalTo(0));
202
		$this->_seeder->expects($this->at(53))->method('out')->with($this->equalTo(' 50 / 55'), $this->equalTo(1));
203
		$this->_seeder->expects($this->at(58))->method('out')->with($this->equalTo('.'), $this->equalTo(0));
204
		$this->_seeder->expects($this->at(59))->method('out')->with(
205
			$this->equalTo(str_repeat(' ', 46) . '55 / 55', 1)
206
		);
207
208
		$this->_processor->expects($this->at(0))->method('getFieldFormatters')->will($this->returnValue(array('NotEmpty')));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
209
		$this->_processor->expects($this->any())->method('createSeed')->will($this->returnValue(array('NotEmpty')));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
210
		$this->_processor->expects($this->at(2))->method('saveSeeds');
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
211
212
		$this->_processor->sowSeeds();
213
	}
214
215
	/**
216
	 * Tests the getFieldFormatters method for 'manual' mode
217
	 *
218
	 * @return void
219
	 * @covers ::getFieldFormatters
220
	 */
221 View Code Duplication
	public function testGetFieldFormattersManualMode() {
0 ignored issues
show
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
222
		$this->_createProcessorMock(array('_guessFieldFormatters'));
223
224
		$expected = array('field formatters from manual mode');
225
226
		$this->_seeder->expects($this->at(0))->method('getSeedingMode')->will($this->returnValue('manual'));
227
		$this->_seeder->expects($this->at(1))->method('fieldFormatters')->will($this->returnValue($expected));
228
		$this->_processor->expects($this->never())->method('_guessFieldFormatters');
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
229
230
		$result = $this->_processor->getFieldFormatters();
231
		$this->assertEquals($expected, $result);
232
	}
233
234
	/**
235
	 * Tests the getFieldFormatters method for 'auto' mode
236
	 *
237
	 * @return void
238
	 * @covers ::getFieldFormatters
239
	 */
240 View Code Duplication
	public function testGetFieldFormattersAutolMode() {
0 ignored issues
show
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
241
		$this->_createProcessorMock(array('_guessFieldFormatters'));
242
243
		$expected = array('field formatters from auto mode');
244
245
		$this->_seeder->expects($this->at(0))->method('getSeedingMode')->will($this->returnValue('auto'));
246
		$this->_seeder->expects($this->never())->method('fieldFormatters');
247
		$this->_processor->expects($this->at(0))->method('_guessFieldFormatters')->will($this->returnValue($expected));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
248
249
		$result = $this->_processor->getFieldFormatters();
250
		$this->assertEquals($expected, $result);
251
	}
252
253
	/**
254
	 * Tests the getFieldFormatters method for 'mixed' mode
255
	 *
256
	 * @return void
257
	 * @covers ::getFieldFormatters
258
	 */
259
	public function testGetFieldFormattersMixedMode() {
260
		$this->_createProcessorMock(array('_guessFieldFormatters'));
261
262
		$manualMode = array('field formatters from manual mode');
263
		$autoMode = array('field formatters from auto mode');
264
		$expected = array_merge(
265
			$autoMode,
266
			$manualMode
267
		);
268
269
		$this->_seeder->expects($this->at(0))->method('getSeedingMode')->will($this->returnValue('mixed'));
270
		$this->_seeder->expects($this->once())->method('fieldFormatters')->will($this->returnValue($manualMode));
271
		$this->_processor->expects($this->once())->method('_guessFieldFormatters')->will($this->returnValue($autoMode));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
272
273
		$result = $this->_processor->getFieldFormatters();
274
		$this->assertEquals($expected, $result);
275
	}
276
277
	/**
278
	 * Tests the getFieldFormatters method for an invalid mode
279
	 *
280
	 * @return void
281
	 * @covers ::getFieldFormatters
282
	 */
283
	public function testGetFieldFormattersInvalidMode() {
284
		$this->_createProcessorMock(array('_guessFieldFormatters'));
285
286
		$this->_seeder->expects($this->at(0))->method('getSeedingMode')->will($this->returnValue('foo'));
287
		$this->_seeder->expects($this->never())->method('fieldFormatters');
288
		$this->_processor->expects($this->never())->method('_guessFieldFormatters');
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
289
290
		$result = $this->_processor->getFieldFormatters();
291
		$this->assertEmpty($result);
292
	}
293
294
	/**
295
	 * Tests the _guessFieldFormatters method
296
	 *
297
	 * @return void
298
	 * @covers ::_guessFieldFormatters
299
	 * @covers ::_getColumns
300
	 */
301
	public function testGuessFieldFormatters() {
302
		$this->_createProcessorMock(array('_getModel', '_getColumnTypeGuesser'));
303
304
		$model = $this->getMock('Apple', array('schema'));
305
		$model->primaryKey = 'id';
306
307
		$schema = array(
308
			'id' => array(
309
				'type' => 'integer',
310
				'null' => false,
311
				'default' => NULL,
312
				'length' => 11,
313
				'unsigned' => false,
314
				'key' => 'primary',
315
			),
316
			'field1' => array(
317
				'type' => 'string',
318
				'null' => false,
319
				'default' => NULL,
320
				'length' => 255,
321
				'collate' => 'latin1_swedish_ci',
322
				'charset' => 'latin1',
323
			),
324
			'field2' =>	array(
325
				'type' => 'datetime',
326
				'null' => true,
327
				'default' => NULL,
328
				'length' => NULL,
329
			),
330
		);
331
332
		$guesser = $this->getMock(
333
			'ColumnTypeGuesser',
334
			array(),
335
			array(),
336
			'',
337
			false
338
		);
339
340
		$guessedFormats = 'guessed formatter';
341
342
		$this->_seeder->expects($this->at(0))->method('getSeedingMode')->will($this->returnValue('auto'));
343
		$this->_processor->expects($this->at(0))->method('_getModel')->will($this->returnValue($model));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
344
		$model->expects($this->at(0))->method('schema')->will($this->returnValue($schema));
345
		$this->_processor->expects($this->at(1))->method('_getColumnTypeGuesser')->will($this->returnValue($guesser));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
346
		$guesser->expects($this->at(0))->method('guessFormat')
347
			->with($this->equalTo($schema['field1']))
348
			->will($this->returnValue($guessedFormats));
349
		$guesser->expects($this->at(1))->method('guessFormat')
350
			->with($this->equalTo($schema['field2']))
351
			->will($this->returnValue($guessedFormats));
352
353
		$result = $this->_processor->getFieldFormatters();
354
		$expected = array(
355
			'field1' => $guessedFormats,
356
			'field2' =>	$guessedFormats,
357
		);
358
		$this->assertEquals($expected, $result);
359
	}
360
361
	/**
362
	 * Tests the createSeed method
363
	 *
364
	 * @return void
365
	 * @covers ::createSeed
366
	 */
367
	public function testCreateSeed() {
368
		$this->_createProcessorMock(array('_getModel'));
369
370
		$this->_seeder->expects($this->at(0))->method('getModelName')->will($this->returnValue('ModelName'));
371
		$this->_seeder->expects($this->at(1))->method('recordState')->will($this->returnValue('state1'));
372
373
		$callable = function ($state) {
374
			return $state;
375
		};
376
377
		$fieldFormatters = array(
378
			'field1' => $callable,
379
			'field2' => $callable,
380
		);
381
		$result = $this->_processor->createSeed($fieldFormatters);
382
		$expected = array(
383
			'ModelName' => array(
384
				'field1' => 'state1',
385
				'field2' => 'state1',
386
			),
387
		);
388
		$this->assertEquals($expected, $result);
389
	}
390
391
	/**
392
	 * Tests the saveSeeds method when validate is 'false'
393
	 *
394
	 * @return void
395
	 * @covers ::saveSeeds
396
	 */
397 View Code Duplication
	public function testSaveSeedsValidateFalse() {
0 ignored issues
show
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
398
		$this->_createProcessorMock(array('_getModel'));
399
		$seeds = array('seeds');
400
		$model = $this->getMock('Apple', array('saveAll'));
401
		$options = array(
402
			'validate' => false
403
		);
404
405
		$this->_seeder->expects($this->at(0))->method('getValidateSeeding')->will($this->returnValue('false'));
406
		$this->_processor->expects($this->at(0))->method('_getModel')->will($this->returnValue($model));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
407
		$model->expects($this->at(0))->method('saveAll')->with(
408
			$this->equalTo($seeds),
409
			$this->equalTo($options)
410
		)->will($this->returnValue(true));
411
412
		$this->_seeder->expects($this->never())->method('out');
413
414
		$this->_processor->saveSeeds($seeds);
415
	}
416
417
	/**
418
	 * Tests the saveSeeds method when validate casts to true
419
	 *
420
	 * @return void
421
	 * @covers ::saveSeeds
422
	 */
423 View Code Duplication
	public function testSaveSeedsValidateTrue() {
0 ignored issues
show
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
424
		$this->_createProcessorMock(array('_getModel'));
425
		$seeds = array('seeds');
426
		$model = $this->getMock('Apple', array('saveAll'));
427
		$options = array(
428
			'validate' => true
429
		);
430
431
		$this->_seeder->expects($this->at(0))->method('getValidateSeeding')->will($this->returnValue('true'));
432
		$this->_processor->expects($this->at(0))->method('_getModel')->will($this->returnValue($model));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
433
		$model->expects($this->at(0))->method('saveAll')->with(
434
			$this->equalTo($seeds),
435
			$this->equalTo($options)
436
		)->will($this->returnValue(true));
437
438
		$this->_seeder->expects($this->never())->method('out');
439
440
		$this->_processor->saveSeeds($seeds);
441
	}
442
443
	/**
444
	 * Tests the saveSeeds method when saving fails
445
	 *
446
	 * @return void
447
	 * @covers ::saveSeeds
448
	 */
449
	public function testSaveSeedsNotSaved() {
450
		$this->_createProcessorMock(array('_getModel'));
451
		$seeds = array('seeds');
452
		$model = $this->getMock('Apple', array('saveAll'));
453
		$options = array(
454
			'validate' => 'first'
455
		);
456
457
		$model->validationErrors = 'test123';
458
459
		$this->_seeder->expects($this->at(0))->method('getValidateSeeding')->will($this->returnValue('first'));
460
		$this->_processor->expects($this->at(0))->method('_getModel')->will($this->returnValue($model));
0 ignored issues
show
The method expects() does not seem to exist on object<ShellSeedProcessor>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
461
462
		$model->expects($this->at(0))->method('saveAll')->with(
463
			$this->equalTo($seeds),
464
			$this->equalTo($options)
465
		)->will($this->returnValue(false));
466
467
		$this->_seeder->expects($this->at(1))->method('out')->with($this->equalTo('Seeds could not be saved successfully!'));
468
		$this->_seeder->expects($this->at(2))->method('out')->with($this->equalTo("Data validation errors: 'test123'"));
469
470
		$this->_processor->saveSeeds($seeds);
471
	}
472
}
473