ReinstallInstance.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\TestFramework\Annotation;
  7. use Magento\Framework\App\ResourceConnection;
  8. use Magento\Framework\Module\ModuleResource;
  9. use Magento\TestFramework\Helper\Bootstrap;
  10. use Magento\TestFramework\ObjectManager;
  11. /**
  12. * Handler for applying reinstallMagento annotation.
  13. */
  14. class ReinstallInstance
  15. {
  16. /**
  17. * @var \Magento\TestFramework\Application
  18. */
  19. private $application;
  20. /**
  21. * Constructor
  22. *
  23. * @param \Magento\TestFramework\Application $application
  24. */
  25. public function __construct(\Magento\TestFramework\Application $application)
  26. {
  27. $this->application = $application;
  28. }
  29. public function startTest()
  30. {
  31. /** @var ObjectManager $objectManager */
  32. $objectManager = Bootstrap::getObjectManager();
  33. $resourceConnection = $objectManager->create(ResourceConnection::class);
  34. $objectManager->removeSharedInstance(ResourceConnection::class);
  35. $objectManager->addSharedInstance($resourceConnection, ResourceConnection::class);
  36. $this->application->reinitialize();
  37. }
  38. /**
  39. * Handler for 'endTest' event.
  40. *
  41. * @throws \Magento\Framework\Exception\LocalizedException
  42. */
  43. public function endTest()
  44. {
  45. $this->application->cleanup();
  46. $this->application->reinitialize();
  47. ModuleResource::flush();
  48. }
  49. }