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:
parent
608199dffd
commit
e00d90702f
@ -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()');
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
*
|
||||
|
112
tests/_support/Helper/Common/RowHelper.php
Normal file
112
tests/_support/Helper/Common/RowHelper.php
Normal 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'));
|
||||
}
|
||||
}
|
@ -14,3 +14,4 @@ modules:
|
||||
- \Helper\Acceptance
|
||||
- \Helper\Select2
|
||||
- \Helper\Select2Ajax
|
||||
- \Helper\Common\RowHelper
|
||||
|
@ -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');
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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__.'/../..');
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user