77
88namespace Magento \Inventory \Test \Integration \Stock ;
99
10+ use Magento \Backend \Model \Auth ;
1011use Magento \Framework \Api \SearchCriteriaBuilder ;
1112use Magento \Framework \Api \SortOrderBuilder ;
1213use Magento \InventoryAdminUi \Model \Stock \StockSourceLinkProcessor ;
1516use Magento \TestFramework \Helper \Bootstrap ;
1617use PHPUnit \Framework \TestCase ;
1718
19+ /**
20+ * Tests for \Magento\InventoryAdminUi\Model\Stock\StockSourceLinkProcessor.
21+ *
22+ * @magentoAppArea adminhtml
23+ */
1824class StockSourceLinkProcessorTest extends TestCase
1925{
2026 /**
@@ -37,23 +43,86 @@ class StockSourceLinkProcessorTest extends TestCase
3743 */
3844 private $ getStockSourceLinks ;
3945
46+ /**
47+ * @var Auth
48+ */
49+ private $ auth ;
50+
4051 /**
4152 * @inheritdoc
4253 */
4354 protected function setUp ()
4455 {
45- $ this ->searchCriteriaBuilder = Bootstrap::getObjectManager ()->get (SearchCriteriaBuilder::class);
46- $ this ->getStockSourceLinks = Bootstrap::getObjectManager ()->get (GetStockSourceLinksInterface::class);
47- $ this ->stockSourceLinkProcessor = Bootstrap::getObjectManager ()->get (StockSourceLinkProcessor::class);
48- $ this ->sortOrderBuilder = Bootstrap::getObjectManager ()->get (SortOrderBuilder::class);
56+ $ objectManager = Bootstrap::getObjectManager ();
57+ $ this ->searchCriteriaBuilder = $ objectManager ->get (SearchCriteriaBuilder::class);
58+ $ this ->getStockSourceLinks = $ objectManager ->get (GetStockSourceLinksInterface::class);
59+ $ this ->stockSourceLinkProcessor = $ objectManager ->get (StockSourceLinkProcessor::class);
60+ $ this ->sortOrderBuilder = $ objectManager ->get (SortOrderBuilder::class);
61+ $ this ->auth = $ objectManager ->get (Auth::class);
62+ }
63+
64+ protected function tearDown ()
65+ {
66+ $ this ->auth ->logout ();
67+ parent ::tearDown ();
4968 }
5069
5170 /**
52- * @magentoDataFixture ../../../../app/code/Magento/InventoryApi/ Test/_files/sources.php
53- * @magentoDataFixture ../../../../app/code/Magento/InventoryApi/ Test/_files/stocks.php
54- * @magentoDataFixture ../../../../app/code/Magento/InventoryApi/ Test/_files/stock_source_links.php
71+ * @magentoDataFixture Magento_InventoryApi:: Test/_files/sources.php
72+ * @magentoDataFixture Magento_InventoryApi:: Test/_files/stocks.php
73+ * @magentoDataFixture Magento_InventoryApi:: Test/_files/stock_source_links.php
5574 */
5675 public function testProcess ()
76+ {
77+ $ this ->auth ->login (
78+ \Magento \TestFramework \Bootstrap::ADMIN_NAME ,
79+ \Magento \TestFramework \Bootstrap::ADMIN_PASSWORD
80+ );
81+
82+ $ linksData = $ this ->getLinksData ();
83+ $ stockId = 10 ;
84+
85+ $ this ->stockSourceLinkProcessor ->process ($ stockId , $ linksData );
86+
87+ $ sortOrder = $ this ->sortOrderBuilder
88+ ->setField (StockSourceLinkInterface::PRIORITY )
89+ ->setAscendingDirection ()
90+ ->create ();
91+ $ searchCriteria = $ this ->searchCriteriaBuilder
92+ ->addFilter (StockSourceLinkInterface::STOCK_ID , $ stockId )
93+ ->addSortOrder ($ sortOrder )
94+ ->create ();
95+ $ searchResult = $ this ->getStockSourceLinks ->execute ($ searchCriteria );
96+
97+ self ::assertCount (2 , $ searchResult ->getItems ());
98+ }
99+
100+ /**
101+ * @magentoDataFixture Magento_InventoryAdminUi::Test/Integration/_files/user_assigned_to_stocks.php
102+ * @magentoDataFixture Magento_InventoryApi::Test/_files/sources.php
103+ * @magentoDataFixture Magento_InventoryApi::Test/_files/stocks.php
104+ * @magentoDataFixture Magento_InventoryApi::Test/_files/stock_source_links.php
105+ */
106+ public function testProcessUserWithoutPermissions ()
107+ {
108+ $ this ->auth ->login (
109+ 'stocksAccessUser ' ,
110+ \Magento \TestFramework \Bootstrap::ADMIN_PASSWORD
111+ );
112+
113+ $ linksData = $ this ->getLinksData ();
114+ $ stockId = 10 ;
115+
116+ $ this ->expectException (\Magento \Framework \Exception \AuthorizationException::class);
117+ $ this ->expectExceptionMessage ('It is not allowed to change sources ' );
118+
119+ $ this ->stockSourceLinkProcessor ->process ($ stockId , $ linksData );
120+ }
121+
122+ /**
123+ * @return array
124+ */
125+ private function getLinksData (): array
57126 {
58127 /**
59128 * eu-3 - should be updated
@@ -70,20 +139,7 @@ public function testProcess()
70139 StockSourceLinkInterface::PRIORITY => 2 ,
71140 ],
72141 ];
73- $ stockId = 10 ;
74142
75- $ this ->stockSourceLinkProcessor ->process ($ stockId , $ linksData );
76-
77- $ sortOrder = $ this ->sortOrderBuilder
78- ->setField (StockSourceLinkInterface::PRIORITY )
79- ->setAscendingDirection ()
80- ->create ();
81- $ searchCriteria = $ this ->searchCriteriaBuilder
82- ->addFilter (StockSourceLinkInterface::STOCK_ID , $ stockId )
83- ->addSortOrder ($ sortOrder )
84- ->create ();
85- $ searchResult = $ this ->getStockSourceLinks ->execute ($ searchCriteria );
86-
87- self ::assertCount (2 , $ searchResult ->getItems ());
143+ return $ linksData ;
88144 }
89145}
0 commit comments