Eliminazione tests

This commit is contained in:
Pek5892 2023-09-25 15:08:23 +02:00
parent fc006b916f
commit 9101747bcd
27 changed files with 12 additions and 1473 deletions

View File

View File

@ -1,2 +0,0 @@
*
!.gitignore

View File

@ -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()');
}
}

View File

@ -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
*/
}

View File

@ -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');
}
}

View File

@ -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]';
}
}

View File

@ -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
{
}

View File

@ -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');
}
}

View File

@ -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]);
}
}

View File

@ -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
{
}

View File

@ -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
*/
}

View File

@ -1,2 +0,0 @@
*
!.gitignore

View File

@ -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

View File

@ -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');
}
}

View File

@ -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);
}
}

View File

@ -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');
}
}

View File

@ -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');
}
}

View File

@ -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');
}
}

View File

@ -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');
}
}

View File

@ -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');
}
}

View File

@ -1 +0,0 @@
<?php

View File

@ -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

View File

@ -1 +0,0 @@
<?php

View File

@ -1,9 +0,0 @@
# Codeception Test Suite Configuration
#
# Suite for unit or integration tests.
actor: UnitTester
modules:
enabled:
- Asserts
- \Helper\Unit

View File

@ -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);
}
}

View File

@ -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');
}

12
update/2_4_49.php Normal file
View File

@ -0,0 +1,12 @@
<?php
// File e cartelle deprecate
$files = [
'tests/',
];
foreach ($files as $key => $value) {
$files[$key] = realpath(base_dir().'/'.$value);
}
delete($files);