1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-01-22 03:55:36 +01:00

Miglioramento tests

This commit is contained in:
Thomas Zilio 2018-10-20 10:12:23 +02:00
parent 608199dffd
commit e00d90702f
7 changed files with 264 additions and 186 deletions

View File

@ -24,4 +24,120 @@ class AcceptanceTester extends \Codeception\Actor
/*
* Define custom actions here
*/
/**
* Clicca sul pulsante e attende la conclusione del caricamento.
*
* @param $link
* @param $context
*/
public function clickAndWait($link, $context = null)
{
$t = $this;
$t->click($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 expandSidebarLink($link)
{
$t = $this;
$t->click($link, '.sidebar');
$t->wait(1);
}
public function navigateTo($link)
{
$this->clickAndWait($link, '.sidebar');
}
/**
* Effettua il login dalla pagina principale.
*
* @param string $username
* @param string $password
*/
public function login($username, $password)
{
$t = $this;
if ($t->loadSessionSnapshot('login')) {
return;
}
// 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');
$t->saveSessionSnapshot('login');
// Rimozione barra di debug
$t->executeJS('$(".phpdebugbar-close-btn").click()');
}
}

View File

@ -9,120 +9,6 @@ use Facebook\WebDriver\WebDriverBy;
class Acceptance extends \Codeception\Module
{
/**
* Effettua il login dalla pagina principale.
*
* @param string $username
* @param string $password
*/
public function login($username, $password)
{
$t = $this->getAcceptanceModule();
if ($t->loadSessionSnapshot('login')) {
return;
}
// Operazioni di login
$t->amOnPage('/');
$t->fillField('username', $username);
$t->fillField('password', $password);
$this->clickAndWait('Accedi');
// Controlla il completamento del login
$t->see($username, '.user-panel');
$t->saveSessionSnapshot('login');
// Rimozione barra di debug
$t->executeJS('$(".phpdebugbar-close-btn").click()');
}
/**
* Clicca sul pulsante e attende la conclusione del caricamento.
*
* @param $link
* @param $context
*/
public function clickAndWait($link, $context = null)
{
$t = $this->getAcceptanceModule();
$t->click($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->getAcceptanceModule();
$this->clickAndWait($link, $context);
$t->waitForElementVisible('.modal');
}
/**
* Clicca sul pulsante dentro il modal.
*
* @param $link
*/
public function clickModalButton($link)
{
$t = $this->getAcceptanceModule();
$this->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->getAcceptanceModule();
$this->clickAndWait($link, $context);
$t->waitForElementVisible('.swal2-modal');
}
/**
* Clicca sul pulsante dentro il modal SWAL.
*
* @param $link
*/
public function clickSwalButton($link)
{
$t = $this->getAcceptanceModule();
$this->clickAndWait($link, '.swal2-buttonswrapper');
}
public function expandSidebarLink($link)
{
$t = $this->getAcceptanceModule();
$t->click($link, '.sidebar');
$t->wait(1);
}
public function navigateTo($link)
{
$this->clickAndWait($link, '.sidebar');
}
/**
* Imposta il valore di un select gestito dal framework Select2.
*

View File

@ -0,0 +1,112 @@
<?php
namespace Helper\Common;
use AcceptanceTester;
class RowHelper extends \Codeception\Module
{
/** @param string */
protected $finalPattern = "//div[@class='panel-heading' and contains(string(), 'Righe')]/parent::*//table//tr[contains(string(), '|name|')]//td[2]";
/**
* Undocumented function
*
* @param AcceptanceTester $t
* @param [type] $descrizione
* @param [type] $qta
* @param [type] $prezzo
* @param integer $sconto
* @param string $tipo_sconto
* @param [type] $id_iva
* @param [type] $id_rivalsa_inps
* @param [type] $id_ritenuta_acconto
* @return void
*/
public function addRow(AcceptanceTester $t, $descrizione, $qta, $prezzo, $sconto = 0, $tipo_sconto = 'UNT', $id_iva = null, $id_rivalsa_inps = null, $id_ritenuta_acconto = null)
{
// Apre il modal
$t->clickAndWaitModal('Riga', '#tab_0');
// Completa le informazioni
$t->fillField('Descrizione', $descrizione);
$t->fillField('Q.tà', $qta);
$t->fillField('Costo unitario', $prezzo);
if (!empty($sconto)) {
$t->fillField('Sconto unitario', $sconto);
if (in_array($tipo_sconto, ['PRC', 'UNT'])) {
$t->select2ajax('#tipo_sconto', $tipo_sconto);
}
}
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);
}
// Effettua il submit
$t->clickAndWait('Aggiungi', '.modal');
// Controlla il salvataggio finale
$t->see('Riga aggiunta');
}
/**
* Undocumented function
*
* @param string $pattern
* @return void
*/
protected function setFinalPattern($pattern)
{
$this->finalPattern = $pattern;
}
/**
* Undocumented function
*
* @param string $type
* @return void
*/
protected function getFinalValue($type)
{
return str_replace('|name|', strtoupper($type), $this->finalPattern);
}
/**
* Undocumented function
*
* @param AcceptanceTester $t
* @return void
*/
public function testImporti(AcceptanceTester $t)
{
$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'));
$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('Imponibile scontato'));
$t->see("106,11", $this->getFinalValue('IVA'));
$t->see("588,45", $this->getFinalValue('Totale'));
}
}

View File

@ -14,3 +14,4 @@ modules:
- \Helper\Acceptance
- \Helper\Select2
- \Helper\Select2Ajax
- \Helper\Common\RowHelper

View File

@ -2,6 +2,12 @@
class AnagraficheCest
{
public function _before(\AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');
}
/**
* Crea una nuova anagrafica.
*
@ -9,9 +15,6 @@ class AnagraficheCest
*/
protected function addAnag(AcceptanceTester $t, $name = 'ANAGRAFICA DI PROVA', $tipo = 1, $partita_iva = '')
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');
// Seleziona il modulo da aprire
$t->navigateTo('Anagrafiche');

View File

@ -1,7 +1,25 @@
<?php
use \Helper\Common\RowHelper;
class FattureCest
{
/**
* @var Helper\SignUp
*/
protected $rowHelper;
protected function _inject(RowHelper $rowHelper)
{
$this->rowHelper = $rowHelper;
}
public function _before(\AcceptanceTester $t)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');
}
/**
* Crea una nuova anagrafica.
*
@ -9,9 +27,6 @@ class FattureCest
*/
protected function addFattura(AcceptanceTester $t, $entrata, $tipo, $anagrafica)
{
// Effettua l'accesso con le credenziali fornite
$t->login('admin', 'admin');
// Seleziona il modulo da aprire
$t->expandSidebarLink($entrata == true ? 'Vendite' : 'Acquisti');
$t->navigateTo($entrata == true ? 'Fatture di vendita' : 'Fatture di acquisto');
@ -49,70 +64,6 @@ class FattureCest
$t->see('Anagrafica eliminata!', '.alert-success');
}
protected function addRow(AcceptanceTester $t, $descrizione, $qta, $prezzo, $sconto = 0, $tipo_sconto = 'UNT', $id_iva = null, $id_rivalsa_inps = null, $id_ritenuta_acconto = null)
{
// Apre il modal
$t->clickAndWaitModal('Riga', '#tab_0');
// Completa le informazioni
$t->fillField('Descrizione', $descrizione);
$t->fillField('Q.tà', $qta);
$t->fillField('Costo unitario', $prezzo);
if (!empty($sconto)) {
$t->fillField('Sconto unitario', $sconto);
if (in_array($tipo_sconto, ['PRC', 'UNT'])) {
$t->select2ajax('#tipo_sconto', $tipo_sconto);
}
}
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);
}
// Effettua il submit
$t->clickAndWait('Aggiungi', '.modal');
// Controlla il salvataggio finale
$t->see('Riga aggiunta');
}
protected function getFinalValue($type)
{
return "//div[@class='panel-heading' and contains(string(), 'Righe')]/parent::*//table//tr[contains(string(), '".strtoupper($type)."')]//td[2]";
}
protected function checkImporti(AcceptanceTester $t)
{
$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'));
$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('Imponibile scontato'));
$t->see("106,11", $this->getFinalValue('IVA'));
$t->see("588,45", $this->getFinalValue('Totale'));
}
/**
* Crea una nuova fattura di vendita.
*
@ -122,7 +73,7 @@ class FattureCest
{
$this->addFattura($t, true, 2, 2);
$this->checkImporti($t);
$this->rowHelper->testImporti($t);
}
/**
@ -134,6 +85,6 @@ class FattureCest
{
$this->addFattura($t, false, 1, 3);
$this->checkImporti($t);
$this->rowHelper->testImporti($t);
}
}

View File

@ -1,5 +1,14 @@
<?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');
}
// Individuazione dei percorsi di base
App::definePaths(__DIR__.'/../..');