Completed
Push — master ( 94b58b...843436 )
by Aimeos
02:17
created

CustomerAddLaravelTestData   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
lcom 1
cbo 7
dl 0
loc 72
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getPreDependencies() 0 4 1
A migrate() 0 34 3
A cleanupCustomerData() 0 13 1
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2014-2017
6
 */
7
8
9
namespace Aimeos\MW\Setup\Task;
10
11
12
/**
13
 * Adds Laravel customer test data.
14
 */
15
class CustomerAddLaravelTestData extends \Aimeos\MW\Setup\Task\CustomerAddTestData
16
{
17
	/**
18
	 * Returns the list of task names which this task depends on.
19
	 *
20
	 * @return string[] List of task names
21
	 */
22
	public function getPreDependencies()
23
	{
24
		return array( 'TablesAddLaravelTestData' );
25
	}
26
27
28
	/**
29
	 * Adds attribute test data.
30
	 */
31
	public function migrate()
32
	{
33
		$iface = '\\Aimeos\\MShop\\Context\\Item\\Iface';
34
		if( !( $this->additional instanceof $iface ) ) {
35
			throw new \Aimeos\MW\Setup\Exception( sprintf( 'Additionally provided object is not of type "%1$s"', $iface ) );
36
		}
37
38
		$this->msg( 'Adding Laravel customer test data', 0 );
39
		$this->additional->setEditor( 'ai-laravel:unittest' );
40
41
		$parentIds = [];
42
		$ds = DIRECTORY_SEPARATOR;
43
		$path = __DIR__ . $ds . 'data' . $ds . 'customer.php';
44
45
		if( ( $testdata = include( $path ) ) == false ){
46
			throw new \Aimeos\MShop\Exception( sprintf( 'No file "%1$s" found for customer domain', $path ) );
47
		}
48
49
50
		$customerManager = \Aimeos\MShop\Customer\Manager\Factory::createManager( $this->additional, 'Laravel' );
51
		$customerAddressManager = $customerManager->getSubManager( 'address', 'Laravel' );
52
53
		$this->cleanupCustomerData( $customerManager, $customerAddressManager );
54
55
		$this->conn->begin();
0 ignored issues
show
Deprecated Code introduced by
The property Aimeos\MW\Setup\Task\Base::$conn has been deprecated with message: Use getConnection() instead

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
56
57
		$parentIds = $this->addCustomerData( $testdata, $customerManager, $customerAddressManager->createItem() );
58
		$this->addCustomerAddressData( $testdata, $customerAddressManager, $parentIds );
59
60
		$this->conn->commit();
0 ignored issues
show
Deprecated Code introduced by
The property Aimeos\MW\Setup\Task\Base::$conn has been deprecated with message: Use getConnection() instead

This property has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the property will be removed from the class and what other property to use instead.

Loading history...
61
62
63
		$this->status( 'done' );
64
	}
65
66
67
	/**
68
	 * Removes all customer unit test entries
69
	 *
70
	 * @param \Aimeos\MShop\Common\Manager\Iface $customerManager Customer manager
71
	 * @param \Aimeos\MShop\Common\Manager\Iface $customerAddressManager Customer address manager
72
	 */
73
	protected function cleanupCustomerData( \Aimeos\MShop\Common\Manager\Iface $customerManager, \Aimeos\MShop\Common\Manager\Iface $customerAddressManager )
74
	{
75
		$search = $customerManager->createSearch();
76
		$search->setConditions( $search->compare( '=~', 'customer.code', 'UTC00' ) );
77
		$customerItems = $customerManager->searchItems( $search );
78
79
		$search = $customerAddressManager->createSearch();
80
		$search->setConditions( $search->compare( '=~', 'customer.address.email', 'unitCustomer' ) );
81
		$addressItems = $customerAddressManager->searchItems( $search );
82
83
		$customerAddressManager->deleteItems( array_keys( $addressItems ) );
84
		$customerManager->deleteItems( array_keys( $customerItems ) );
85
	}
86
}
87