Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
JoinDirectivesTest.php
Go to the documentation of this file.
1 <?php
7 namespace Magento\Webapi;
8 
14 
16 {
20  private $searchBuilder;
21 
25  private $sortOrderBuilder;
26 
30  private $filterBuilder;
31 
35  private $user;
36 
37  protected function setUp()
38  {
40  $this->searchBuilder = $objectManager->create(\Magento\Framework\Api\SearchCriteriaBuilder::class);
41  $this->sortOrderBuilder = $objectManager->create(\Magento\Framework\Api\SortOrderBuilder::class);
42  $this->filterBuilder = $objectManager->create(\Magento\Framework\Api\FilterBuilder::class);
43  $this->user = $objectManager->create(\Magento\User\Model\User::class);
44  }
45 
51  public function testGetList()
52  {
54  $sortOrder = $this->sortOrderBuilder->setField('store_id')->setDirection(SortOrder::SORT_ASC)->create();
55  $this->searchBuilder->setSortOrders([$sortOrder]);
56  $searchCriteria = $this->searchBuilder->create()->__toArray();
57  $requestData = ['searchCriteria' => $searchCriteria];
58 
59  $restResourcePath = '/V1/TestModuleJoinDirectives/';
60  $soapService = 'testModuleJoinDirectivesTestRepositoryV1';
61  $expectedExtensionAttributes = $this->getExpectedExtensionAttributes();
62 
63  $serviceInfo = [
64  'rest' => [
65  'resourcePath' => $restResourcePath . '?' . http_build_query($requestData),
67  ],
68  'soap' => [
69  'service' => $soapService,
70  'operation' => $soapService . 'GetList',
71  ],
72  ];
73  $searchResult = $this->_webApiCall($serviceInfo, $requestData);
74 
75  $this->assertArrayHasKey('items', $searchResult);
76  $itemData = array_pop($searchResult['items']);
77  $this->assertArrayHasKey('extension_attributes', $itemData);
78  $this->assertArrayHasKey('quote_api_test_attribute', $itemData['extension_attributes']);
79  $testAttribute = $itemData['extension_attributes']['quote_api_test_attribute'];
80  $this->assertEquals($expectedExtensionAttributes['firstname'], $testAttribute['first_name']);
81  $this->assertEquals($expectedExtensionAttributes['lastname'], $testAttribute['last_name']);
82  $this->assertEquals($expectedExtensionAttributes['email'], $testAttribute['email']);
83  }
84 
88  public function testAutoGeneratedGetList()
89  {
90  $this->markTestSkipped(
91  'Invoice repository is not autogenerated anymore and does not have joined extension attributes'
92  );
93  $this->getExpectedExtensionAttributes();
95  $sortOrder = $this->sortOrderBuilder->setField('store_id')->setDirection(SortOrder::SORT_ASC)->create();
96  $this->searchBuilder->setSortOrders([$sortOrder]);
97  $this->searchBuilder->addFilters([$this->filterBuilder->setField('state')->setValue(2)->create()]);
98  $searchCriteria = $this->searchBuilder->create()->__toArray();
99  $requestData = ['criteria' => $searchCriteria];
100 
101  $restResourcePath = '/V1/invoices/';
102  $soapService = 'salesInvoiceRepositoryV1';
103  $expectedExtensionAttributes = $this->getExpectedExtensionAttributes();
104 
105  $serviceInfo = [
106  'rest' => [
107  'resourcePath' => $restResourcePath . '?' . http_build_query($requestData),
109  ],
110  'soap' => [
111  'service' => $soapService,
112  'operation' => $soapService . 'GetList',
113  ],
114  ];
115  $searchResult = $this->_webApiCall($serviceInfo, $requestData);
116 
117  $this->assertArrayHasKey('items', $searchResult);
118  $itemData = array_pop($searchResult['items']);
119  $this->assertArrayHasKey('extension_attributes', $itemData);
120  $this->assertArrayHasKey('invoice_api_test_attribute', $itemData['extension_attributes']);
121  $testAttribute = $itemData['extension_attributes']['invoice_api_test_attribute'];
122  $this->assertEquals($expectedExtensionAttributes['firstname'], $testAttribute['first_name']);
123  $this->assertEquals($expectedExtensionAttributes['lastname'], $testAttribute['last_name']);
124  $this->assertEquals($expectedExtensionAttributes['email'], $testAttribute['email']);
125  }
126 
132  private function getExpectedExtensionAttributes()
133  {
134  $this->user->load(1);
135  return [
136  'firstname' => $this->user->getFirstname(),
137  'lastname' => $this->user->getLastname(),
138  'email' => $this->user->getEmail()
139  ];
140  }
141 }
$objectManager
Definition: bootstrap.php:17
_webApiCall( $serviceInfo, $arguments=[], $webApiAdapterCode=null, $storeCode=null, $integration=null)
$searchCriteria