Eliminazione tests
This commit is contained in:
parent
fc006b916f
commit
9101747bcd
|
@ -1,2 +0,0 @@
|
|||
*
|
||||
!.gitignore
|
|
@ -1,110 +0,0 @@
|
|||
<?php
|
||||
|
||||
class AcceptanceTester extends \Codeception\Actor
|
||||
{
|
||||
use _generated\AcceptanceTesterActions;
|
||||
use \Codeception\Lib\Actor\Shared\Retry;
|
||||
|
||||
/**
|
||||
* Clicca sul pulsante e attende la conclusione del caricamento.
|
||||
*
|
||||
* @param $link
|
||||
* @param $context
|
||||
*/
|
||||
public function clickAndWait($link, $context = null)
|
||||
{
|
||||
$t = $this;
|
||||
|
||||
$t->retryClick($link, $context);
|
||||
|
||||
$t->waitForElementNotVisible('#main_loading');
|
||||
$t->waitForElementNotVisible('#mini-loader');
|
||||
}
|
||||
|
||||
/**
|
||||
* Clicca sul pulsante e attende la conclusione del caricamento del modal.
|
||||
*
|
||||
* @param $link
|
||||
* @param $context
|
||||
*/
|
||||
public function clickAndWaitModal($link, $context = null)
|
||||
{
|
||||
$t = $this;
|
||||
|
||||
$t->clickAndWait($link, $context);
|
||||
|
||||
$t->waitForElementVisible('.modal');
|
||||
$t->wait(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clicca sul pulsante dentro il modal.
|
||||
*
|
||||
* @param $link
|
||||
*/
|
||||
public function clickModalButton($link)
|
||||
{
|
||||
$t = $this;
|
||||
|
||||
$t->clickAndWait($link, '.modal-content');
|
||||
}
|
||||
|
||||
/**
|
||||
* Clicca sul pulsante e attende la conclusione del caricamento del modal SWAL.
|
||||
*
|
||||
* @param $link
|
||||
* @param $context
|
||||
*/
|
||||
public function clickAndWaitSwal($link, $context = null)
|
||||
{
|
||||
$t = $this;
|
||||
|
||||
$t->clickAndWait($link, $context);
|
||||
|
||||
$t->waitForElementVisible('.swal2-modal');
|
||||
}
|
||||
|
||||
/**
|
||||
* Clicca sul pulsante dentro il modal SWAL.
|
||||
*
|
||||
* @param $link
|
||||
*/
|
||||
public function clickSwalButton($link)
|
||||
{
|
||||
$t = $this;
|
||||
|
||||
$t->clickAndWait($link, '.swal2-buttonswrapper');
|
||||
}
|
||||
|
||||
public function navigateTo($link)
|
||||
{
|
||||
$this->wait(0.5);
|
||||
|
||||
$this->clickAndWait($link, '.sidebar');
|
||||
}
|
||||
|
||||
/**
|
||||
* Effettua il login dalla pagina principale.
|
||||
*
|
||||
* @param string $username
|
||||
* @param string $password
|
||||
*/
|
||||
public function login($username, $password)
|
||||
{
|
||||
$t = $this;
|
||||
|
||||
// Operazioni di login
|
||||
$t->amOnPage('/');
|
||||
|
||||
$t->fillField('username', $username);
|
||||
$t->fillField('password', $password);
|
||||
|
||||
$t->clickAndWait('Accedi');
|
||||
|
||||
// Controlla il completamento del login
|
||||
$t->see($username, '.user-panel');
|
||||
|
||||
// Rimozione barra di debug
|
||||
$t->executeJS('$(".phpdebugbar-close-btn").click()');
|
||||
}
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Inherited Methods.
|
||||
*
|
||||
* @method void wantToTest($text)
|
||||
* @method void wantTo($text)
|
||||
* @method void execute($callable)
|
||||
* @method void expectTo($prediction)
|
||||
* @method void expect($prediction)
|
||||
* @method void amGoingTo($argumentation)
|
||||
* @method void am($role)
|
||||
* @method void lookForwardTo($achieveValue)
|
||||
* @method void comment($description)
|
||||
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
|
||||
*
|
||||
* @SuppressWarnings(PHPMD)
|
||||
*/
|
||||
class FunctionalTester extends \Codeception\Actor
|
||||
{
|
||||
use _generated\FunctionalTesterActions;
|
||||
|
||||
/*
|
||||
* Define custom actions here
|
||||
*/
|
||||
}
|
|
@ -1,73 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Helper;
|
||||
|
||||
// here you can define custom actions
|
||||
// all public methods declared in helper class will be available in $t
|
||||
|
||||
class Acceptance extends \Codeception\Module
|
||||
{
|
||||
/**
|
||||
* Imposta il valore di un select gestito dal framework Select2.
|
||||
*
|
||||
* @param $selector
|
||||
* @param $option
|
||||
* @param int $timeout seconds. Default to 1
|
||||
*/
|
||||
public function select2($selector, $option, $timeout = null)
|
||||
{
|
||||
$select2 = $this->getModule('\Helper\Select2');
|
||||
|
||||
$select2->openSelect2($selector);
|
||||
$select2->selectOptionForSelect2($selector, $option, $timeout);
|
||||
$select2->closeSelect2($selector);
|
||||
}
|
||||
|
||||
/**
|
||||
* Imposta il valore di un select gestito dal framework Select2.
|
||||
*
|
||||
* @param $selector
|
||||
* @param $option
|
||||
* @param int $timeout seconds. Default to 1
|
||||
*/
|
||||
public function select2ajax($selector, $option, $timeout = null)
|
||||
{
|
||||
$select2 = $this->getModule('\Helper\Select2Ajax');
|
||||
$t = $this->getAcceptanceModule();
|
||||
|
||||
$select2->openSelect2($selector);
|
||||
$t->wait(1);
|
||||
$select2->selectByPosition($selector, $option, $timeout);
|
||||
$select2->closeSelect2($selector);
|
||||
}
|
||||
|
||||
public function seePageHasElement($element)
|
||||
{
|
||||
try {
|
||||
$this->getAcceptanceModule()->seeElement($element);
|
||||
} catch (\Exception $f) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function expandSidebarLink($link)
|
||||
{
|
||||
$t = $this->getAcceptanceModule();
|
||||
|
||||
if (!$this->seePageHasElement("descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' sidebar ')]/descendant-or-self::*/li[contains(., '".$link."') and @class and contains(concat(' ', normalize-space(@class), ' '), ' menu-open ')]")) {
|
||||
$t->click($link, '.sidebar');
|
||||
$t->wait(1);
|
||||
}
|
||||
}
|
||||
|
||||
protected function getAcceptanceModule()
|
||||
{
|
||||
if (!$this->hasModule('WebDriver')) {
|
||||
throw new \Exception('You must enable the WebDriver module', 1);
|
||||
}
|
||||
|
||||
return $this->getModule('WebDriver');
|
||||
}
|
||||
}
|
|
@ -1,225 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Helper\Common;
|
||||
|
||||
use AcceptanceTester;
|
||||
|
||||
class RowHelper extends \Codeception\Module
|
||||
{
|
||||
/** @param string */
|
||||
protected $tablePattern = "//div[@class='panel-heading' and contains(string(), 'Righe')]/parent::*//table//tr[contains(string(), '|name|')]";
|
||||
protected $dir;
|
||||
|
||||
/**
|
||||
* Aggiunge un nuovo sconto.
|
||||
*
|
||||
* @param string $value
|
||||
* @param int $type
|
||||
*/
|
||||
public function addDiscount(AcceptanceTester $t, $descrizione, $value, $type)
|
||||
{
|
||||
$t->wait(0.5);
|
||||
|
||||
// Apre il modal
|
||||
$t->clickAndWaitModal('Sconto/maggiorazione', '#tab_0');
|
||||
|
||||
$t->fillField('#descrizione_riga', $descrizione);
|
||||
|
||||
if ($type == 'UNT') {
|
||||
$t->fillField('#sconto_unitario', $value);
|
||||
} else {
|
||||
$t->fillField('#sconto_percentuale', $value);
|
||||
}
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '.modal');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Sconto/maggiorazione aggiunto');
|
||||
}
|
||||
|
||||
/**
|
||||
* Aggiunge una nuova riga.
|
||||
*
|
||||
* @param string $descrizione
|
||||
* @param int $qta
|
||||
* @param float $prezzo
|
||||
* @param int $sconto
|
||||
* @param string $tipo_sconto
|
||||
* @param int $id_iva
|
||||
* @param int $id_rivalsa_inps
|
||||
* @param int $id_ritenuta_acconto
|
||||
*/
|
||||
public function addRow(AcceptanceTester $t, $descrizione, $qta, $prezzo, $sconto = 0, $tipo_sconto = 'UNT', $id_iva = null, $id_rivalsa_inps = null, $id_ritenuta_acconto = null)
|
||||
{
|
||||
$t->wait(0.5);
|
||||
|
||||
// Apre il modal
|
||||
$t->clickAndWaitModal('Riga', '#tab_0');
|
||||
|
||||
$this->fill($t, $descrizione, $qta, $prezzo, $sconto, $tipo_sconto, $id_iva, $id_rivalsa_inps, $id_ritenuta_acconto);
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '.modal');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Riga aggiunta');
|
||||
}
|
||||
|
||||
/**
|
||||
* Aggiunge un nuovo articolo.
|
||||
*
|
||||
* @param string $descrizione
|
||||
* @param int $qta
|
||||
* @param float $prezzo
|
||||
* @param int $sconto
|
||||
* @param string $tipo_sconto
|
||||
* @param int $id_iva
|
||||
* @param int $id_rivalsa_inps
|
||||
* @param int $id_ritenuta_acconto
|
||||
*/
|
||||
public function addArticle(AcceptanceTester $t, $id_articolo, $descrizione, $qta, $prezzo, $sconto = 0, $tipo_sconto = 'UNT', $id_iva = null, $id_rivalsa_inps = null, $id_ritenuta_acconto = null)
|
||||
{
|
||||
$t->wait(0.5);
|
||||
|
||||
// Apre il modal
|
||||
$t->clickAndWaitModal('Articolo', '#tab_0');
|
||||
|
||||
$t->select2ajax('#idarticolo', $id_articolo);
|
||||
$this->fill($t, $descrizione, $qta, $prezzo, $sconto, $tipo_sconto, $id_iva, $id_rivalsa_inps, $id_ritenuta_acconto);
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '.modal');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Articolo aggiunto');
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function.
|
||||
*/
|
||||
public function testImporti(AcceptanceTester $t, $direzione = 'entrata')
|
||||
{
|
||||
$this->dir = $direzione;
|
||||
|
||||
// Righe di test (issue #98)
|
||||
$this->addRow($t, 'Riga 1', 1, 34);
|
||||
|
||||
$this->addRow($t, 'Riga 2', 1, 17.44);
|
||||
$this->addRow($t, 'Riga 3', 48, 0.52);
|
||||
$this->addRow($t, 'Riga 4', 66, 0.44);
|
||||
$this->addRow($t, 'Riga 5', 1, 104.90);
|
||||
$this->addRow($t, 'Riga 6', 1, 2);
|
||||
|
||||
$t->see('212,34', $this->getFinalValue('Imponibile'));
|
||||
$t->see('46,71', $this->getFinalValue('IVA'));
|
||||
$t->see('259,05', $this->getFinalValue('Totale'));
|
||||
|
||||
// Righe di controllo sugli sconti
|
||||
$this->addRow($t, 'Riga 7 con sconto in euro', 15, 12, 2);
|
||||
$this->addRow($t, 'Riga 8 con sconto percentuale', 15, 10, 20, 'PRC');
|
||||
|
||||
$t->see('542,34', $this->getFinalValue('Imponibile'));
|
||||
$t->see('60,00', $this->getFinalValue('Sconto'));
|
||||
$t->see('482,34', $this->getFinalValue('Totale imponibile'));
|
||||
$t->see('106,11', $this->getFinalValue('IVA'));
|
||||
$t->see('588,45', $this->getFinalValue('Totale'));
|
||||
|
||||
// Sconto globale in euro
|
||||
$this->addDiscount($t, 'Sconto unitario', 100, 'UNT');
|
||||
|
||||
$t->see('542,34', $this->getFinalValue('Imponibile'));
|
||||
$t->see('160,00', $this->getFinalValue('Sconto'));
|
||||
$t->see('382,34', $this->getFinalValue('Totale imponibile'));
|
||||
$t->see('84,11', $this->getFinalValue('IVA'));
|
||||
$t->see('466,45', $this->getFinalValue('Totale'));
|
||||
|
||||
// Sconto globale in percentuale
|
||||
$this->addDiscount($t, null, 10, 'PRC');
|
||||
|
||||
$this->delete($t, 'Sconto unitario');
|
||||
|
||||
$t->see('542,34', $this->getFinalValue('Imponibile'));
|
||||
$t->see('98,23', $this->getFinalValue('Sconto'));
|
||||
$t->see('444,11', $this->getFinalValue('Totale imponibile'));
|
||||
$t->see('97,70', $this->getFinalValue('IVA'));
|
||||
$t->see('541,81', $this->getFinalValue('Totale'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Completa le informazioni per la creazione di un nuovo elemento.
|
||||
*
|
||||
* @param [type] $descrizione
|
||||
* @param [type] $qta
|
||||
* @param [type] $prezzo
|
||||
* @param int $sconto
|
||||
* @param string $tipo_sconto
|
||||
* @param [type] $id_iva
|
||||
* @param [type] $id_rivalsa_inps
|
||||
* @param [type] $id_ritenuta_acconto
|
||||
*/
|
||||
protected function fill(AcceptanceTester $t, $descrizione, $qta, $prezzo, $sconto = 0, $tipo_sconto = 'UNT', $id_iva = null, $id_rivalsa_inps = null, $id_ritenuta_acconto = null)
|
||||
{
|
||||
$t->fillField('#descrizione_riga', $descrizione);
|
||||
$t->fillField('#qta', $qta);
|
||||
|
||||
$t->fillField('#prezzo_unitario', $prezzo);
|
||||
|
||||
if (!empty($sconto)) {
|
||||
$t->fillField('#sconto', $sconto);
|
||||
|
||||
if (in_array($tipo_sconto, ['PRC', 'UNT'])) {
|
||||
$t->select2ajax('#tipo_sconto', $tipo_sconto == 'PRC' ? 0 : 1);
|
||||
}
|
||||
}
|
||||
|
||||
if ($id_iva) {
|
||||
$t->select2('#idiva', $id_iva);
|
||||
}
|
||||
|
||||
if ($id_rivalsa_inps) {
|
||||
$t->select2('#id_rivalsa_inps', $id_rivalsa_inps);
|
||||
}
|
||||
if ($id_ritenuta_acconto) {
|
||||
$t->select2('#id_ritenuta_acconto', $id_ritenuta_acconto);
|
||||
}
|
||||
}
|
||||
|
||||
protected function delete(AcceptanceTester $t, $descrizione)
|
||||
{
|
||||
$path = $this->getPattern($descrizione).'//td[last()]';
|
||||
|
||||
$t->wait(0.5);
|
||||
$t->click('.btn-danger', $path);
|
||||
$t->acceptPopup();
|
||||
|
||||
$t->waitForElementNotVisible('#main_loading');
|
||||
$t->waitForElementNotVisible('#mini-loader');
|
||||
|
||||
$t->see('Riga eliminata!');
|
||||
|
||||
//$t->click('#save', '#tab_0');
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function.
|
||||
*
|
||||
* @param string $pattern
|
||||
*/
|
||||
protected function setPattern($pattern)
|
||||
{
|
||||
$this->tablePattern = $pattern;
|
||||
}
|
||||
|
||||
protected function getPattern($name)
|
||||
{
|
||||
return str_replace('|name|', $name, $this->tablePattern);
|
||||
}
|
||||
|
||||
protected function getFinalValue($name)
|
||||
{
|
||||
$name = strtoupper($name);
|
||||
|
||||
return $this->getPattern($name).'//td[2]';
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Helper;
|
||||
|
||||
// here you can define custom actions
|
||||
// all public methods declared in helper class will be available in $I
|
||||
|
||||
class Functional extends \Codeception\Module
|
||||
{
|
||||
}
|
|
@ -1,232 +0,0 @@
|
|||
<?php
|
||||
|
||||
// @codingStandardsIgnoreFile
|
||||
|
||||
namespace Helper;
|
||||
|
||||
// Select2 version 4.0 or greater helpers for the jQuery based replacement for select boxes.
|
||||
// See: http://select2.github.io/select2
|
||||
// Author: Tortue Torche <tortuetorche@spam.me>
|
||||
// Author: Florian Krämer
|
||||
// Author: Tom Walsh
|
||||
// License: MIT
|
||||
//
|
||||
// Installation:
|
||||
// * Put this file in your 'tests/_support/Helper' directory
|
||||
// * Add it in your 'tests/acceptance.suite.yml' file, like this:
|
||||
// class_name: AcceptanceTester
|
||||
// modules:
|
||||
// enabled:
|
||||
// - WebDriver:
|
||||
// url: 'http://localhost:8000'
|
||||
// # ...
|
||||
// - \Helper\Select2
|
||||
//
|
||||
// * Then run ./vendor/bin/codecept build
|
||||
|
||||
class Select2 extends \Codeception\Module
|
||||
{
|
||||
/**
|
||||
* Wait until the select2 component is loaded.
|
||||
*
|
||||
* @param $selector
|
||||
* @param int $timeout seconds. Default to 5
|
||||
*/
|
||||
public function waitForSelect2($selector, $timeout = 5)
|
||||
{
|
||||
$t = $this->getAcceptanceModule();
|
||||
$selector = $this->getSelect2Selector($selector);
|
||||
$t->waitForJS('return !!jQuery("'.$selector.'").data("select2");', $timeout);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the given option is not selected.
|
||||
*
|
||||
* @param $selector
|
||||
* @param $optionText
|
||||
* @param int $timeout seconds. Default to 5
|
||||
*/
|
||||
public function dontSeeOptionIsSelectedForSelect2($selector, $optionText, $timeout = 5)
|
||||
{
|
||||
$t = $this->getAcceptanceModule();
|
||||
$selector = $this->getSelect2Selector($selector);
|
||||
$this->waitForSelect2($selector, $timeout);
|
||||
$script = $this->_optionIsSelectedForSelect2($selector, $optionText, false);
|
||||
$t->waitForJS($script, $timeout);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the given option is selected.
|
||||
*
|
||||
* @param $selector
|
||||
* @param $optionText
|
||||
* @param int $timeout seconds. Default to 5
|
||||
*/
|
||||
public function seeOptionIsSelectedForSelect2($selector, $optionText, $timeout = 5)
|
||||
{
|
||||
$t = $this->getAcceptanceModule();
|
||||
$selector = $this->getSelect2Selector($selector);
|
||||
$this->waitForSelect2($selector, $timeout);
|
||||
$script = $this->_optionIsSelectedForSelect2($selector, $optionText);
|
||||
$t->waitForJS($script, $timeout);
|
||||
}
|
||||
|
||||
/**
|
||||
* Selects an option in a select2 component.
|
||||
*
|
||||
* $t->selectOptionForSelect2('#my_select2', 'Option value');
|
||||
* $t->selectOptionForSelect2('#my_select2', ['Option value 1', 'Option value 2']);
|
||||
* $t->selectOptionForSelect2('#my_select2', ['text' => 'Option text']);
|
||||
* $t->selectOptionForSelect2('#my_select2', ['id' => 'Option value', 'text' => 'Option text']);
|
||||
*
|
||||
* @param $selector
|
||||
* @param $option
|
||||
* @param int $timeout seconds. Default to 1
|
||||
*/
|
||||
public function selectOptionForSelect2($selector, $option, $timeout = 5)
|
||||
{
|
||||
$t = $this->getAcceptanceModule();
|
||||
$selector = $this->getSelect2Selector($selector);
|
||||
$this->waitForSelect2($selector, $timeout);
|
||||
|
||||
if (is_int($option)) {
|
||||
$option = (string) $option;
|
||||
}
|
||||
|
||||
if (is_string($option) || (is_array($option) && array_values($option) === $option)) {
|
||||
$t->executeJS('jQuery("'.$selector.'").select2("val", '.json_encode($option).');', [$timeout]);
|
||||
$t->executeJS('jQuery("'.$selector.'").trigger("select2:select").trigger("change");', [$timeout]);
|
||||
} elseif (is_array($option)) {
|
||||
$optionId = 'null';
|
||||
if (isset($option['text']) && empty($option['id'])) {
|
||||
$optionText = $option['text'];
|
||||
$optionId = <<<EOT
|
||||
function() {
|
||||
if (!\$.expr[':'].textEquals) {
|
||||
// Source: http://stackoverflow.com/a/26431267
|
||||
\$.expr[':'].textEquals = function(el, i, m) {
|
||||
var searchText = m[3];
|
||||
return $(el).text().trim() === searchText;
|
||||
}
|
||||
}
|
||||
// Find select option by text
|
||||
return \$("$selector").find("option:textEquals('$optionText'):first").val();
|
||||
}();
|
||||
EOT;
|
||||
}
|
||||
$jsonOption = json_encode($option);
|
||||
$script = <<<EOT
|
||||
(function (\$) {
|
||||
var option = $jsonOption;
|
||||
if (!option.id) {
|
||||
option.id = $optionId;
|
||||
}
|
||||
\$("$selector").val(option.id).trigger('select2:select').trigger('change');
|
||||
}(jQuery));
|
||||
EOT;
|
||||
$t->executeJS($script, [$timeout]);
|
||||
} else {
|
||||
$t->fail();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unselect an option in the given select2 component.
|
||||
*
|
||||
* @param $selector
|
||||
* @param $option
|
||||
* @param int $timeout seconds. Default to 1
|
||||
*/
|
||||
public function unselectOptionForSelect2($selector, $option = null, $timeout = 1)
|
||||
{
|
||||
$t = $this->getAcceptanceModule();
|
||||
$selector = $this->getSelect2Selector($selector);
|
||||
$this->waitForSelect2($selector, $timeout);
|
||||
if ($option && is_string($option)) {
|
||||
$script = <<<EOT
|
||||
(function (\$) {
|
||||
var values = \$("$selector").select2("val");
|
||||
var index = values.indexOf("$option");
|
||||
if (index > -1) {
|
||||
values.splice(index, 1);
|
||||
}
|
||||
\$("$selector").select2("val", values);
|
||||
\$(\$("$selector").trigger("select2:select").trigger("change");
|
||||
}(jQuery));
|
||||
EOT;
|
||||
$t->executeJS($script, [$timeout]);
|
||||
} else {
|
||||
$t->executeJS('jQuery("'.$selector.'").select2("val", "");', [$timeout]);
|
||||
$t->executeJS('jQuery("'.$selector.'").trigger("select2:select").trigger("change");', [$timeout]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the Select2 component.
|
||||
*
|
||||
* @param string $selector
|
||||
*/
|
||||
public function openSelect2($selector)
|
||||
{
|
||||
$t = $this->getAcceptanceModule();
|
||||
$selector = $this->getSelect2Selector($selector);
|
||||
$this->waitForSelect2($selector);
|
||||
$t->executeJS('jQuery("'.$selector.'").select2("open");');
|
||||
}
|
||||
|
||||
/**
|
||||
* Close the Select2 component.
|
||||
*
|
||||
* @param string $selector
|
||||
*/
|
||||
public function closeSelect2($selector)
|
||||
{
|
||||
$t = $this->getAcceptanceModule();
|
||||
$selector = $this->getSelect2Selector($selector);
|
||||
$this->waitForSelect2($selector);
|
||||
$t->executeJS('jQuery("'.$selector.'").select2("close");');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $selector
|
||||
* @param $optionText
|
||||
* @param bool $expectedReturn Default to true
|
||||
*
|
||||
* @return string JavaScript
|
||||
*/
|
||||
protected function _optionIsSelectedForSelect2($selector, $optionText, $expectedReturn = true)
|
||||
{
|
||||
$returnFlag = $expectedReturn === true ? '' : '!';
|
||||
|
||||
return $script = <<<EOT
|
||||
return (function (\$) {
|
||||
var isSelected = false;
|
||||
var values = \$("$selector").val();
|
||||
values = \$.isArray(values ) ? values : [values];
|
||||
if (values && values.length > 0) {
|
||||
isSelected = values.some(function (data) {
|
||||
if (data && data.text && data.text === "$optionText") {
|
||||
return data;
|
||||
}
|
||||
});
|
||||
}
|
||||
return ${returnFlag}isSelected;
|
||||
}(jQuery));
|
||||
EOT;
|
||||
}
|
||||
|
||||
protected function getSelect2Selector($selector)
|
||||
{
|
||||
return $selector;
|
||||
//return preg_replace("/^\#((?!s2id_).+)$/", '#s2id_$1', $selector);
|
||||
}
|
||||
|
||||
protected function getAcceptanceModule()
|
||||
{
|
||||
if (!$this->hasModule('WebDriver')) {
|
||||
throw new \Exception('You must enable the WebDriver module', 1);
|
||||
}
|
||||
|
||||
return $this->getModule('WebDriver');
|
||||
}
|
||||
}
|
|
@ -1,88 +0,0 @@
|
|||
<?php
|
||||
|
||||
// @codingStandardsIgnoreFile
|
||||
|
||||
namespace Helper;
|
||||
|
||||
/**
|
||||
* Select2 version 4.0 or greater helpers for the jQuery based replacement for select boxes (Ajax version).
|
||||
*
|
||||
* Installation:
|
||||
* - Put this file in your 'tests/_support/Helper' directory
|
||||
* - Add it in your 'tests/acceptance.suite.yml' file, like this:
|
||||
* class_name: AcceptanceTester
|
||||
* modules:
|
||||
* enabled:
|
||||
* - WebDriver:
|
||||
* # ...
|
||||
* - \Helper\Select2Ajax
|
||||
* - Run ./vendor/bin/codecept build
|
||||
*
|
||||
* @see http://select2.github.io/select2
|
||||
*
|
||||
* @author Thomas Zilio
|
||||
* @license MIT
|
||||
*/
|
||||
class Select2Ajax extends Select2
|
||||
{
|
||||
/**
|
||||
* Selects an option in a select2 component.
|
||||
*
|
||||
* @param $selector
|
||||
* @param $option
|
||||
* @param int $timeout seconds. Default to 1
|
||||
*/
|
||||
public function selectByTextOrId($selector, $option, $timeout = 5)
|
||||
{
|
||||
$code = '
|
||||
$(options).each(function () {
|
||||
if($(this).text == "'.$option.'" || $(this).id == "'.$option.'") {
|
||||
$("'.$selector.'").selectSetNew(this.id, this.text);
|
||||
}
|
||||
});';
|
||||
|
||||
$this->execute($selector, $timeout, $code);
|
||||
}
|
||||
|
||||
public function selectByPosition($selector, $position, $timeout = 5)
|
||||
{
|
||||
$code = '
|
||||
var result = options['.$position.'];
|
||||
$("'.$selector.'").selectSetNew(result.id, result.text);';
|
||||
|
||||
$this->execute($selector, $timeout, $code);
|
||||
}
|
||||
|
||||
protected function execute($selector, $timeout, $code)
|
||||
{
|
||||
$t = $this->getAcceptanceModule();
|
||||
$selector = $this->getSelect2Selector($selector);
|
||||
$this->waitForSelect2($selector, $timeout);
|
||||
|
||||
if (is_int($option)) {
|
||||
$option = (string) $option;
|
||||
}
|
||||
|
||||
$results_selector = str_replace('#', '', $selector);
|
||||
|
||||
$script = <<<EOT
|
||||
$(document).ready(function() {
|
||||
var children = $("#select2-$results_selector-results").children();
|
||||
|
||||
var options = [];
|
||||
children.each(function () {
|
||||
var data = $(this)[0];
|
||||
var output = Object.entries(data).map(([key, value]) => ({key,value}));
|
||||
|
||||
if(output[0]) {
|
||||
options.push(output[0].value.data);
|
||||
}
|
||||
})
|
||||
|
||||
$code
|
||||
});
|
||||
EOT;
|
||||
|
||||
$t->executeJS($script, [$timeout]);
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Helper;
|
||||
|
||||
// here you can define custom actions
|
||||
// all public methods declared in helper class will be available in $I
|
||||
|
||||
class Unit extends \Codeception\Module
|
||||
{
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Inherited Methods.
|
||||
*
|
||||
* @method void wantToTest($text)
|
||||
* @method void wantTo($text)
|
||||
* @method void execute($callable)
|
||||
* @method void expectTo($prediction)
|
||||
* @method void expect($prediction)
|
||||
* @method void amGoingTo($argumentation)
|
||||
* @method void am($role)
|
||||
* @method void lookForwardTo($achieveValue)
|
||||
* @method void comment($description)
|
||||
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
|
||||
*
|
||||
* @SuppressWarnings(PHPMD)
|
||||
*/
|
||||
class UnitTester extends \Codeception\Actor
|
||||
{
|
||||
use _generated\UnitTesterActions;
|
||||
|
||||
/*
|
||||
* Define custom actions here
|
||||
*/
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
*
|
||||
!.gitignore
|
|
@ -1,22 +0,0 @@
|
|||
# Codeception Test Suite Configuration
|
||||
#
|
||||
# Suite for acceptance tests.
|
||||
# Perform tests in browser using the WebDriver or PhpBrowser.
|
||||
# If you need both WebDriver and PHPBrowser tests - create a separate suite.
|
||||
|
||||
actor: AcceptanceTester
|
||||
modules:
|
||||
enabled:
|
||||
- WebDriver:
|
||||
browser: chrome
|
||||
port: 9515 # ChromeDriver port
|
||||
window_size: false
|
||||
capabilities:
|
||||
chromeOptions:
|
||||
args: ["--headless", "--disable-gpu"]
|
||||
- \Helper\Acceptance
|
||||
- \Helper\Select2
|
||||
- \Helper\Select2Ajax
|
||||
- \Helper\Common\RowHelper
|
||||
step_decorators:
|
||||
- \Codeception\Step\Retry
|
|
@ -1,92 +0,0 @@
|
|||
<?php
|
||||
|
||||
class AnagraficheCest
|
||||
{
|
||||
public function _before(AcceptanceTester $t)
|
||||
{
|
||||
// Effettua l'accesso con le credenziali fornite
|
||||
$t->login('admin', 'admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo Cliente.
|
||||
*/
|
||||
public function testAnagraficaCliente(AcceptanceTester $t)
|
||||
{
|
||||
$this->addAnag($t, 'Cliente', 1, '05024030289');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo Tecnico.
|
||||
*/
|
||||
public function testAnagraficaTecnico(AcceptanceTester $t)
|
||||
{
|
||||
$this->addAnag($t, 'Tecnico', 2, '05024030289');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo Fornitore.
|
||||
*/
|
||||
public function testAnagraficaFornitore(AcceptanceTester $t)
|
||||
{
|
||||
$this->addAnag($t, 'Fornitore', 4, '05024030289');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo Vettore.
|
||||
*/
|
||||
public function testAnagraficaVettore(AcceptanceTester $t)
|
||||
{
|
||||
$this->addAnag($t, 'Vettore', 5, '05024030289');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo Agente.
|
||||
*/
|
||||
public function testAnagraficaAgente(AcceptanceTester $t)
|
||||
{
|
||||
$this->addAnag($t, 'Agente', 6, '05024030289');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica.
|
||||
*/
|
||||
protected function addAnag(AcceptanceTester $t, $name = 'ANAGRAFICA DI PROVA', $tipo = 1, $partita_iva = '')
|
||||
{
|
||||
// Seleziona il modulo da aprire
|
||||
$t->navigateTo('Anagrafiche');
|
||||
|
||||
// Apre la schermata di nuovo elemento
|
||||
$t->clickAndWaitModal('.btn-primary', '#tabs');
|
||||
|
||||
// Completa i campi per il nuovo elemento
|
||||
$t->fillField('Denominazione', $name);
|
||||
$t->select2('#idtipoanagrafica', $tipo);
|
||||
$t->click('.btn-box-tool');
|
||||
$t->waitForElementVisible('#piva', 3);
|
||||
$t->fillField('Partita IVA', $partita_iva);
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '#add-form');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->seeInField('Denominazione', $name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo cliente e la elimina.
|
||||
*/
|
||||
protected function addAndDeleteAnag(AcceptanceTester $t, $name = 'ANAGRAFICA DI PROVA', $tipo = 1, $partita_iva = '')
|
||||
{
|
||||
$this->addAnag($t, $name, $tipo, $partita_iva);
|
||||
|
||||
// Seleziona l'azione di eliminazione
|
||||
$t->clickAndWaitSwal('Elimina', '#tab_0');
|
||||
|
||||
// Conferma l'eliminazione
|
||||
$t->clickSwalButton('Elimina');
|
||||
|
||||
// Controlla eliminazione
|
||||
$t->see('Anagrafica eliminata!', '.alert-success');
|
||||
}
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
<?php
|
||||
|
||||
class BackupCest
|
||||
{
|
||||
public function _before(AcceptanceTester $t)
|
||||
{
|
||||
// Effettua l'accesso con le credenziali fornite
|
||||
$t->login('admin', 'admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo backup.
|
||||
*/
|
||||
protected function createBackup(AcceptanceTester $t)
|
||||
{
|
||||
// Seleziona il modulo da aprire
|
||||
$t->expandSidebarLink('Strumenti');
|
||||
$t->navigateTo('Backup');
|
||||
|
||||
$t->clickAndWaitSwal('Crea backup');
|
||||
|
||||
// Conferma la creazione
|
||||
$t->clickSwalButton('Crea');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Nuovo backup creato correttamente!');
|
||||
}
|
||||
|
||||
/**
|
||||
* Ripristina un backup specifico.
|
||||
*/
|
||||
protected function restoreBackup(AcceptanceTester $t, $name = null)
|
||||
{
|
||||
// Seleziona il modulo da aprire
|
||||
$t->expandSidebarLink('Strumenti');
|
||||
$t->navigateTo('Backup');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo Cliente.
|
||||
*/
|
||||
protected function testBackup(AcceptanceTester $t)
|
||||
{
|
||||
$name = $this->createBackup($t);
|
||||
}
|
||||
}
|
|
@ -1,74 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Helper\Common\RowHelper;
|
||||
|
||||
class ContrattiCest
|
||||
{
|
||||
/**
|
||||
* @var Helper\SignUp
|
||||
*/
|
||||
protected $rowHelper;
|
||||
|
||||
public function _before(AcceptanceTester $t)
|
||||
{
|
||||
// Effettua l'accesso con le credenziali fornite
|
||||
$t->login('admin', 'admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo contratto.
|
||||
*/
|
||||
public function testContratto(AcceptanceTester $t)
|
||||
{
|
||||
$this->addContratto($t, 'Contratto di test', 2);
|
||||
|
||||
$this->rowHelper->testImporti($t);
|
||||
|
||||
//$t->click('Stampa');
|
||||
}
|
||||
|
||||
protected function _inject(RowHelper $rowHelper)
|
||||
{
|
||||
$this->rowHelper = $rowHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo contratto.
|
||||
*/
|
||||
protected function addContratto(AcceptanceTester $t, $name, $anagrafica)
|
||||
{
|
||||
// Seleziona il modulo da aprire
|
||||
$t->expandSidebarLink('Vendite');
|
||||
$t->navigateTo('Contratti');
|
||||
|
||||
// Apre la schermata di nuovo elemento
|
||||
$t->clickAndWaitModal('.btn-primary', '#tabs');
|
||||
|
||||
// Completa i campi per il nuovo elemento
|
||||
$t->fillField('Nome', $name);
|
||||
$t->select2ajax('#idanagrafica', $anagrafica);
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '#add-form');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Aggiunto contratto');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo cliente e la elimina.
|
||||
*/
|
||||
protected function addAndDeleteContratto(AcceptanceTester $t, $name, $anagrafica = 2)
|
||||
{
|
||||
$this->addAnag($t, $name, $anagrafica);
|
||||
|
||||
// Seleziona l'azione di eliminazione
|
||||
$t->clickAndWaitSwal('Elimina', '#tab_0');
|
||||
|
||||
// Conferma l'eliminazione
|
||||
$t->clickSwalButton('Elimina');
|
||||
|
||||
// Controlla eliminazione
|
||||
$t->see('Contratto eliminato!', '.alert-success');
|
||||
}
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Helper\Common\RowHelper;
|
||||
|
||||
class DDTCest
|
||||
{
|
||||
/**
|
||||
* @var Helper\SignUp
|
||||
*/
|
||||
protected $rowHelper;
|
||||
|
||||
public function _before(AcceptanceTester $t)
|
||||
{
|
||||
// Effettua l'accesso con le credenziali fornite
|
||||
$t->login('admin', 'admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo ddt.
|
||||
*/
|
||||
public function testDdtDiVendita(AcceptanceTester $t)
|
||||
{
|
||||
$this->addDdt($t, true, 2, 2);
|
||||
|
||||
$this->rowHelper->testImporti($t);
|
||||
|
||||
//$t->click('Stampa');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo ddt.
|
||||
*/
|
||||
public function testDdtDiAcquisto(AcceptanceTester $t)
|
||||
{
|
||||
$this->addDdt($t, false, 3, 1);
|
||||
|
||||
$this->rowHelper->testImporti($t, 'uscita');
|
||||
}
|
||||
|
||||
protected function _inject(RowHelper $rowHelper)
|
||||
{
|
||||
$this->rowHelper = $rowHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo ddt.
|
||||
*/
|
||||
protected function addDdt(AcceptanceTester $t, $entrata, $anagrafica, $tipo)
|
||||
{
|
||||
// Seleziona il modulo da aprire
|
||||
$t->expandSidebarLink('Magazzino');
|
||||
$t->navigateTo($entrata == true ? 'Ddt in uscita' : 'Ddt in entrata');
|
||||
|
||||
// Apre la schermata di nuovo elemento
|
||||
$t->clickAndWaitModal('.btn-primary', '#tabs');
|
||||
|
||||
// Completa i campi per il nuovo elemento
|
||||
$t->select2ajax('#idanagrafica_add', $anagrafica);
|
||||
$t->select2('#idtipoddt', $tipo);
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '#add-form');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Aggiunto ddt');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo cliente e la elimina.
|
||||
*/
|
||||
protected function addAndDeleteDdt(AcceptanceTester $t, $entrata, $anagrafica, $tipo)
|
||||
{
|
||||
$this->addAnag($t, $entrata, $anagrafica, $tipo);
|
||||
|
||||
// Seleziona l'azione di eliminazione
|
||||
$t->clickAndWaitSwal('Elimina', '#tab_0');
|
||||
|
||||
// Conferma l'eliminazione
|
||||
$t->clickSwalButton('Elimina');
|
||||
|
||||
// Controlla eliminazione
|
||||
$t->see('Ddt eliminato!', '.alert-success');
|
||||
}
|
||||
}
|
|
@ -1,86 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Helper\Common\RowHelper;
|
||||
|
||||
class FattureCest
|
||||
{
|
||||
/**
|
||||
* @var Helper\SignUp
|
||||
*/
|
||||
protected $rowHelper;
|
||||
|
||||
public function _before(AcceptanceTester $t)
|
||||
{
|
||||
// Effettua l'accesso con le credenziali fornite
|
||||
$t->login('admin', 'admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova fattura di vendita.
|
||||
*/
|
||||
public function testFatturaDiVendita(AcceptanceTester $t)
|
||||
{
|
||||
$this->addFattura($t, true, 2, 2);
|
||||
|
||||
$this->rowHelper->testImporti($t);
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova fattura di acquisto.
|
||||
*/
|
||||
public function testFatturaDiAcquisto(AcceptanceTester $t)
|
||||
{
|
||||
$this->addFattura($t, false, 1, 4);
|
||||
|
||||
// Fix pagamento vuoto
|
||||
$t->select2('#idpagamento', 109);
|
||||
$t->clickAndWait('Salva');
|
||||
|
||||
$this->rowHelper->testImporti($t, 'uscita');
|
||||
}
|
||||
|
||||
protected function _inject(RowHelper $rowHelper)
|
||||
{
|
||||
$this->rowHelper = $rowHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova fattura.
|
||||
*/
|
||||
protected function addFattura(AcceptanceTester $t, $entrata, $tipo, $anagrafica)
|
||||
{
|
||||
// Seleziona il modulo da aprire
|
||||
$t->expandSidebarLink($entrata == true ? 'Vendite' : 'Acquisti');
|
||||
$t->navigateTo($entrata == true ? 'Fatture di vendita' : 'Fatture di acquisto');
|
||||
|
||||
// Apre la schermata di nuovo elemento
|
||||
$t->clickAndWaitModal('.btn-primary', '#tabs');
|
||||
|
||||
// Completa i campi per il nuovo elemento
|
||||
$t->select2ajax('#idanagrafica_add', $anagrafica);
|
||||
$t->select2('#idtipodocumento', $tipo);
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '#add-form');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Aggiunta fattura');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova fattura e la elimina.
|
||||
*/
|
||||
protected function addAndDeleteFattura(AcceptanceTester $t, $cliente, $tipo)
|
||||
{
|
||||
$this->addAnag($t, $cliente, $tipo);
|
||||
|
||||
// Seleziona l'azione di eliminazione
|
||||
$t->clickAndWaitSwal('Elimina', '#tab_0');
|
||||
|
||||
// Conferma l'eliminazione
|
||||
$t->clickSwalButton('Elimina');
|
||||
|
||||
// Controlla eliminazione
|
||||
$t->see('Fattura eliminata!', '.alert-success');
|
||||
}
|
||||
}
|
|
@ -1,87 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Helper\Common\RowHelper;
|
||||
|
||||
class OrdiniCest
|
||||
{
|
||||
/**
|
||||
* @var Helper\SignUp
|
||||
*/
|
||||
protected $rowHelper;
|
||||
|
||||
public function _before(AcceptanceTester $t)
|
||||
{
|
||||
// Effettua l'accesso con le credenziali fornite
|
||||
$t->login('admin', 'admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo ordine.
|
||||
*/
|
||||
public function testOrdineCliente(AcceptanceTester $t)
|
||||
{
|
||||
$this->addOrdine($t, true, 2);
|
||||
|
||||
$this->rowHelper->testImporti($t);
|
||||
|
||||
//$t->click('Stampa');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo ordine.
|
||||
*/
|
||||
public function testOrdineFornitore(AcceptanceTester $t)
|
||||
{
|
||||
$this->addOrdine($t, false, 4);
|
||||
|
||||
// Fix pagamento vuoto
|
||||
$t->select2('#idpagamento', 109);
|
||||
$t->clickAndWait('Salva');
|
||||
|
||||
$this->rowHelper->testImporti($t, 'uscita');
|
||||
}
|
||||
|
||||
protected function _inject(RowHelper $rowHelper)
|
||||
{
|
||||
$this->rowHelper = $rowHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo ordine.
|
||||
*/
|
||||
protected function addOrdine(AcceptanceTester $t, $entrata, $anagrafica)
|
||||
{
|
||||
// Seleziona il modulo da aprire
|
||||
$t->expandSidebarLink($entrata == true ? 'Vendite' : 'Acquisti');
|
||||
$t->navigateTo($entrata == true ? 'Ordini cliente' : 'Ordini fornitore');
|
||||
|
||||
// Apre la schermata di nuovo elemento
|
||||
$t->clickAndWaitModal('.btn-primary', '#tabs');
|
||||
|
||||
// Completa i campi per il nuovo elemento
|
||||
$t->select2ajax('#idanagrafica', $anagrafica);
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '#add-form');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Aggiunto ordine');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo cliente e la elimina.
|
||||
*/
|
||||
protected function addAndDeleteOrdine(AcceptanceTester $t, $entrata, $anagrafica = 2)
|
||||
{
|
||||
$this->addAnag($t, $entrata, $anagrafica);
|
||||
|
||||
// Seleziona l'azione di eliminazione
|
||||
$t->clickAndWaitSwal('Elimina', '#tab_0');
|
||||
|
||||
// Conferma l'eliminazione
|
||||
$t->clickSwalButton('Elimina');
|
||||
|
||||
// Controlla eliminazione
|
||||
$t->see('Ordine eliminato!', '.alert-success');
|
||||
}
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Helper\Common\RowHelper;
|
||||
|
||||
class PreventiviCest
|
||||
{
|
||||
/**
|
||||
* @var Helper\SignUp
|
||||
*/
|
||||
protected $rowHelper;
|
||||
|
||||
public function _before(AcceptanceTester $t)
|
||||
{
|
||||
// Effettua l'accesso con le credenziali fornite
|
||||
$t->login('admin', 'admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo preventivo.
|
||||
*/
|
||||
public function testPreventivo(AcceptanceTester $t)
|
||||
{
|
||||
$this->addPreventivo($t, 'Preventivo di test', 2);
|
||||
|
||||
$this->rowHelper->testImporti($t);
|
||||
|
||||
//$t->click('Stampa');
|
||||
}
|
||||
|
||||
protected function _inject(RowHelper $rowHelper)
|
||||
{
|
||||
$this->rowHelper = $rowHelper;
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuovo preventivo.
|
||||
*/
|
||||
protected function addPreventivo(AcceptanceTester $t, $name, $anagrafica, $tipo = 'GEN')
|
||||
{
|
||||
// Seleziona il modulo da aprire
|
||||
$t->expandSidebarLink('Vendite');
|
||||
$t->navigateTo('Preventivi');
|
||||
|
||||
// Apre la schermata di nuovo elemento
|
||||
$t->clickAndWaitModal('.btn-primary', '#tabs');
|
||||
|
||||
// Completa i campi per il nuovo elemento
|
||||
$t->fillField('Nome preventivo', $name);
|
||||
$t->select2ajax('#idanagrafica', $anagrafica);
|
||||
$t->select2ajax('#idtipointervento', $tipo);
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '#add-form');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Aggiunto preventivo');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo cliente e la elimina.
|
||||
*/
|
||||
protected function addAndDeletePreventivo(AcceptanceTester $t, $name, $anagrafica = 2, $tipo = 'GEN')
|
||||
{
|
||||
$this->addAnag($t, $name, $anagrafica, $tipo);
|
||||
|
||||
// Seleziona l'azione di eliminazione
|
||||
$t->clickAndWaitSwal('Elimina', '#tab_0');
|
||||
|
||||
// Conferma l'eliminazione
|
||||
$t->clickSwalButton('Elimina');
|
||||
|
||||
// Controlla eliminazione
|
||||
$t->see('Preventivo eliminato!', '.alert-success');
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
<?php
|
|
@ -1,12 +0,0 @@
|
|||
# Codeception Test Suite Configuration
|
||||
#
|
||||
# Suite for functional tests
|
||||
# Emulate web requests and make application process them
|
||||
# Include one of framework modules (Symfony2, Yii2, Laravel5) to use it
|
||||
# Remove this suite if you don't use frameworks
|
||||
|
||||
actor: FunctionalTester
|
||||
modules:
|
||||
enabled:
|
||||
# add a framework module here
|
||||
- \Helper\Functional
|
|
@ -1 +0,0 @@
|
|||
<?php
|
|
@ -1,9 +0,0 @@
|
|||
# Codeception Test Suite Configuration
|
||||
#
|
||||
# Suite for unit or integration tests.
|
||||
|
||||
actor: UnitTester
|
||||
modules:
|
||||
enabled:
|
||||
- Asserts
|
||||
- \Helper\Unit
|
|
@ -1,70 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Util\Generator;
|
||||
|
||||
class GeneratorTest extends \Codeception\Test\Unit
|
||||
{
|
||||
public function testNumbersWithPrefix()
|
||||
{
|
||||
$this->test(null, '|TEST');
|
||||
}
|
||||
|
||||
public function testNumbersWithSuffix()
|
||||
{
|
||||
$this->test('|TEST');
|
||||
}
|
||||
|
||||
public function testCommonNumbers()
|
||||
{
|
||||
$this->test();
|
||||
}
|
||||
|
||||
public function testDates()
|
||||
{
|
||||
$this->test('/YYYY');
|
||||
$this->test('/yy');
|
||||
|
||||
$this->test(null, 'YYYY-');
|
||||
$this->test(null, 'yy-');
|
||||
}
|
||||
|
||||
protected function test($prefix = null, $suffix = null)
|
||||
{
|
||||
$date = date('Y-m-d H:i:s');
|
||||
$info = Generator::dateToPattern($date);
|
||||
|
||||
// Individuazione valori relativi a suffisso e prefisso
|
||||
$prefix_value = Generator::complete($prefix, $info);
|
||||
$suffix_value = Generator::complete($suffix, $info);
|
||||
|
||||
$step = 3;
|
||||
|
||||
// Pattern di base con numero di caratteri incrementale
|
||||
$pattern = $prefix.'#'.$suffix;
|
||||
|
||||
$previous = null;
|
||||
for ($i = 0; $i < 10000; $i = $i + $step) {
|
||||
$value = $prefix_value.$this->pad($i + 1, $length).$suffix_value;
|
||||
$this->assertEquals($value, Generator::generate($pattern, $previous, $step, $info));
|
||||
|
||||
$previous = $value;
|
||||
}
|
||||
|
||||
// Pattern con padding
|
||||
$length = 5;
|
||||
$pattern = $prefix.str_repeat('#', $length).$suffix;
|
||||
|
||||
$previous = null;
|
||||
for ($i = 0; $i < 10000; $i = $i + $step) {
|
||||
$value = $prefix_value.$this->pad($i + 1, $length).$suffix_value;
|
||||
$this->assertEquals($value, Generator::generate($pattern, $previous, $step, $info));
|
||||
|
||||
$previous = $value;
|
||||
}
|
||||
}
|
||||
|
||||
protected function pad($number, $length)
|
||||
{
|
||||
return str_pad($number, $length, '0', STR_PAD_LEFT);
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Codeception\Util\Autoload;
|
||||
|
||||
// Caricamento delle dipendenze e delle librerie del progetto
|
||||
$namespaces = require_once __DIR__.'/../../config/namespaces.php';
|
||||
foreach ($namespaces as $path => $namespace) {
|
||||
Autoload::addNamespace($namespace.'\\', __DIR__.'/../../'.$path.'/custom/src');
|
||||
Autoload::addNamespace($namespace.'\\', __DIR__.'/../../'.$path.'/src');
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
// File e cartelle deprecate
|
||||
$files = [
|
||||
'tests/',
|
||||
];
|
||||
|
||||
foreach ($files as $key => $value) {
|
||||
$files[$key] = realpath(base_dir().'/'.$value);
|
||||
}
|
||||
|
||||
delete($files);
|
Loading…
Reference in New Issue