Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CustomersFixtureTest.php
Go to the documentation of this file.
1 <?php
8 
11 
12 class CustomersFixtureTest extends \PHPUnit\Framework\TestCase
13 {
17  private $fixtureModelMock;
18 
22  private $customerGeneratorMock;
23 
27  private $customerDataGeneratorFactoryMock;
28 
32  private $model;
33 
37  private $collectionFactoryMock;
38 
42  private $collectionMock;
43 
44  public function setUp()
45  {
46  $this->fixtureModelMock = $this->createMock(\Magento\Setup\Fixtures\FixtureModel::class);
47 
48  $this->customerGeneratorMock =
49  $this->createMock(\Magento\Setup\Model\FixtureGenerator\CustomerGenerator::class);
50 
51  $this->customerDataGeneratorFactoryMock =
52  $this->createMock(\Magento\Setup\Model\Customer\CustomerDataGeneratorFactory::class);
53 
54  $this->collectionFactoryMock =
55  $this->createPartialMock(
56  \Magento\Customer\Model\ResourceModel\Customer\CollectionFactory::class,
57  ['create']
58  );
59 
60  $this->collectionMock = $this->createMock(\Magento\Customer\Model\ResourceModel\Customer\Collection::class);
61 
62  $this->model = (new ObjectManager($this))->getObject(CustomersFixture::class, [
63  'fixtureModel' => $this->fixtureModelMock,
64  'customerGenerator' => $this->customerGeneratorMock,
65  'customerDataGeneratorFactory' => $this->customerDataGeneratorFactoryMock,
66  'collectionFactory' => $this->collectionFactoryMock
67  ]);
68  }
69 
70  public function testExecute()
71  {
72  $entitiesInDB = 20;
73  $this->collectionFactoryMock->expects($this->once())->method('create')->willReturn($this->collectionMock);
74  $this->collectionMock->expects($this->once())->method('getSize')->willReturn($entitiesInDB);
75 
76  $customersNumber = 100500;
77  $customerConfig = [
78  'some-key' => 'some value'
79  ];
80 
81  $this->fixtureModelMock
82  ->expects($this->exactly(2))
83  ->method('getValue')
84  ->will($this->onConsecutiveCalls($customersNumber, $customerConfig));
85 
86  $customerDataGeneratorMock = $this->createMock(\Magento\Setup\Model\Customer\CustomerDataGenerator::class);
87 
88  $this->customerDataGeneratorFactoryMock
89  ->expects($this->once())
90  ->method('create')
91  ->with($customerConfig)
92  ->willReturn($customerDataGeneratorMock);
93 
94  $this->customerGeneratorMock
95  ->expects($this->once())
96  ->method('generate')
97  ->with(
98  $customersNumber - $entitiesInDB,
99  $this->arrayHasKey('customer_data')
100  );
101 
102  $this->model->execute();
103  }
104 
106  {
107  $this->collectionFactoryMock->expects($this->once())->method('create')->willReturn($this->collectionMock);
108  $this->collectionMock->expects($this->once())->method('getSize')->willReturn(20);
109  $this->fixtureModelMock
110  ->expects($this->once())
111  ->method('getValue')
112  ->willReturn(20);
113  $this->customerDataGeneratorFactoryMock->expects($this->never())->method('create');
114 
115  $this->model->execute();
116  }
117 
118  public function testGetActionTitle()
119  {
120  $this->assertSame('Generating customers', $this->model->getActionTitle());
121  }
122 
123  public function testIntroduceParamLabels()
124  {
125  $this->assertSame(
126  [
127  'customers' => 'Customers'
128  ],
129  $this->model->introduceParamLabels()
130  );
131  }
132 }