FormTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\GoogleOptimizer\Test\Unit\Helper;
  7. class FormTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\GoogleOptimizer\Helper\Form
  11. */
  12. protected $_helper;
  13. /**
  14. * @var \PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $_formMock;
  17. /**
  18. * @var \PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $_fieldsetMock;
  21. /**
  22. * @var \PHPUnit_Framework_MockObject_MockObject
  23. */
  24. protected $_experimentCodeMock;
  25. protected function setUp()
  26. {
  27. $this->_formMock = $this->createPartialMock(
  28. \Magento\Framework\Data\Form::class,
  29. ['setFieldNameSuffix', 'addFieldset']
  30. );
  31. $this->_fieldsetMock = $this->createMock(\Magento\Framework\Data\Form\Element\Fieldset::class);
  32. $this->_experimentCodeMock = $this->createPartialMock(
  33. \Magento\GoogleOptimizer\Model\Code::class,
  34. ['getExperimentScript', 'getCodeId', '__wakeup']
  35. );
  36. $context = $this->createMock(\Magento\Framework\App\Helper\Context::class);
  37. $data = ['context' => $context];
  38. $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  39. $this->_helper = $objectManagerHelper->getObject(\Magento\GoogleOptimizer\Helper\Form::class, $data);
  40. }
  41. public function testAddFieldsWithExperimentCode()
  42. {
  43. $experimentCode = 'some-code';
  44. $experimentCodeId = 'code-id';
  45. $this->_experimentCodeMock->expects(
  46. $this->once()
  47. )->method(
  48. 'getExperimentScript'
  49. )->will(
  50. $this->returnValue($experimentCode)
  51. );
  52. $this->_experimentCodeMock->expects(
  53. $this->once()
  54. )->method(
  55. 'getCodeId'
  56. )->will(
  57. $this->returnValue($experimentCodeId)
  58. );
  59. $this->_prepareFormMock($experimentCode, $experimentCodeId);
  60. $this->_helper->addGoogleoptimizerFields($this->_formMock, $this->_experimentCodeMock);
  61. }
  62. public function testAddFieldsWithoutExperimentCode()
  63. {
  64. $experimentCode = '';
  65. $experimentCodeId = '';
  66. $this->_prepareFormMock($experimentCode, $experimentCodeId);
  67. $this->_helper->addGoogleoptimizerFields($this->_formMock, null);
  68. }
  69. /**
  70. * @param string|array $experimentCode
  71. * @param string $experimentCodeId
  72. */
  73. protected function _prepareFormMock($experimentCode, $experimentCodeId)
  74. {
  75. $this->_formMock->expects(
  76. $this->once()
  77. )->method(
  78. 'addFieldset'
  79. )->with(
  80. 'googleoptimizer_fields',
  81. ['legend' => 'Google Analytics Content Experiments Code']
  82. )->will(
  83. $this->returnValue($this->_fieldsetMock)
  84. );
  85. $this->_fieldsetMock->expects(
  86. $this->at(0)
  87. )->method(
  88. 'addField'
  89. )->with(
  90. 'experiment_script',
  91. 'textarea',
  92. [
  93. 'name' => 'experiment_script',
  94. 'label' => 'Experiment Code',
  95. 'value' => $experimentCode,
  96. 'class' => 'textarea googleoptimizer',
  97. 'required' => false,
  98. 'note' => 'Experiment code should be added to the original page only.',
  99. 'data-form-part' => ''
  100. ]
  101. );
  102. $this->_fieldsetMock->expects(
  103. $this->at(1)
  104. )->method(
  105. 'addField'
  106. )->with(
  107. 'code_id',
  108. 'hidden',
  109. [
  110. 'name' => 'code_id',
  111. 'value' => $experimentCodeId,
  112. 'required' => false,
  113. 'data-form-part' => ''
  114. ]
  115. );
  116. $this->_formMock->expects($this->once())->method('setFieldNameSuffix')->with('google_experiment');
  117. }
  118. }