<?php
namespace Magento\AcceptanceTest\_default\Backend;

use Magento\FunctionalTestingFramework\AcceptanceTester;
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\CredentialStore;
use Magento\FunctionalTestingFramework\DataGenerator\Handlers\PersistedObjectHandler;
use \Codeception\Util\Locator;
use Yandex\Allure\Adapter\Annotation\Features;
use Yandex\Allure\Adapter\Annotation\Stories;
use Yandex\Allure\Adapter\Annotation\Title;
use Yandex\Allure\Adapter\Annotation\Description;
use Yandex\Allure\Adapter\Annotation\Parameter;
use Yandex\Allure\Adapter\Annotation\Severity;
use Yandex\Allure\Adapter\Model\SeverityLevel;
use Yandex\Allure\Adapter\Annotation\TestCaseId;

/**
 * @Description("<br><br><b><font size=+0.9>Test files</font></b><br><br>verification/TestModule/Test/ActionGroupTest.xml<br>")
 */
class ActionGroupWithStepKeyReferencesCest
{
	/**
	 * @Features({"TestModule"})
	 * @Parameter(name = "AcceptanceTester", value="$I")
	 * @param AcceptanceTester $I
	 * @return void
	 * @throws \Exception
	 */
	public function ActionGroupWithStepKeyReferences(AcceptanceTester $I)
	{
		$I->comment("Entering Action Group [actionGroup] FunctionActionGroupWithStepKeyReferences");
		$I->comment("[createSimpleDataActionGroup] create 'simpleData' entity");
		PersistedObjectHandler::getInstance()->createEntity(
			"createSimpleDataActionGroup",
			"test",
			"simpleData",
			[],
			[]
		);

		$grabTextDataActionGroup = $I->grabTextFrom(".class"); // stepKey: grabTextDataActionGroup
		$I->fillField(".{$grabTextDataActionGroup}", PersistedObjectHandler::getInstance()->retrieveEntityField('createSimpleDataActionGroup', 'field', 'test')); // stepKey: fill1ActionGroup
		$I->comment("Invocation stepKey will not be appended in non stepKey instances");
		$I->click($action0); // stepKey: action0ActionGroup
		$I->fillField($action1); // stepKey: action1ActionGroup
		$I->comment("Invocation stepKey will be appended in non stepKey instances");
		$action3ActionGroup = $I->executeJS($action3ActionGroup); // stepKey: action3ActionGroup
		$action4ActionGroup = $I->magentoCLI($action4ActionGroup, "\"stuffHere\""); // stepKey: action4ActionGroup
		$I->comment($action4ActionGroup);
		$date = new \DateTime();
		$date->setTimestamp(strtotime("{$action5}"));
		$date->setTimezone(new \DateTimeZone("America/Los_Angeles"));
		$action5ActionGroup = $date->format("H:i:s");

		$action6ActionGroup = $I->formatMoney($action6ActionGroup); // stepKey: action6ActionGroup
		$I->comment("[action7ActionGroup] delete entity '{$action7ActionGroupActionGroup}'");
		PersistedObjectHandler::getInstance()->deleteEntity(
			"{$action7ActionGroupActionGroup}",
			"test"
		);

		$I->comment("[action8ActionGroup] get '{$action8}' entity");
		PersistedObjectHandler::getInstance()->getEntity(
			"action8ActionGroup",
			"test",
			"{$action8}",
			[],
			null
		);

		$I->comment("[action9ActionGroup] update '1' entity to '{$action9}'");
		PersistedObjectHandler::getInstance()->updateEntity(
			"1",
			"test",
			"{$action9}",
			[]
		);

		$I->comment("[action10ActionGroup] create '{$action10}' entity");
		PersistedObjectHandler::getInstance()->createEntity(
			"action10ActionGroup",
			"test",
			"{$action10}",
			[],
			[]
		);

		$action11ActionGroup = $I->grabAttributeFrom($action11ActionGroup, "someInput"); // stepKey: action11ActionGroup
		$action12ActionGroup = $I->grabCookie($action12ActionGroup, ['domain' => 'www.google.com']); // stepKey: action12ActionGroup
		$action13ActionGroup = $I->grabFromCurrentUrl($action13ActionGroup); // stepKey: action13ActionGroup
		$action14ActionGroup = $I->grabMultiple($action14ActionGroup); // stepKey: action14ActionGroup
		$action15ActionGroup = $I->grabTextFrom($action15ActionGroup); // stepKey: action15ActionGroup
		$action16ActionGroup = $I->grabValueFrom($action16ActionGroup); // stepKey: action16ActionGroup
		$I->comment("Exiting Action Group [actionGroup] FunctionActionGroupWithStepKeyReferences");
	}
}
