From e00d90702f935b0b23789c3729586d3ec7001991 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Sat, 20 Oct 2018 10:12:23 +0200 Subject: [PATCH] Miglioramento tests --- tests/_support/AcceptanceTester.php | 116 +++++++++++++++++++++ tests/_support/Helper/Acceptance.php | 114 -------------------- tests/_support/Helper/Common/RowHelper.php | 112 ++++++++++++++++++++ tests/acceptance.suite.yml | 1 + tests/acceptance/AnagraficheCest.php | 9 +- tests/acceptance/FattureCest.php | 89 ++++------------ tests/unit/_bootstrap.php | 9 ++ 7 files changed, 264 insertions(+), 186 deletions(-) create mode 100644 tests/_support/Helper/Common/RowHelper.php diff --git a/tests/_support/AcceptanceTester.php b/tests/_support/AcceptanceTester.php index a99cf163e..d816e6f37 100644 --- a/tests/_support/AcceptanceTester.php +++ b/tests/_support/AcceptanceTester.php @@ -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()'); + } } diff --git a/tests/_support/Helper/Acceptance.php b/tests/_support/Helper/Acceptance.php index 40be31b02..345a3569f 100644 --- a/tests/_support/Helper/Acceptance.php +++ b/tests/_support/Helper/Acceptance.php @@ -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. * diff --git a/tests/_support/Helper/Common/RowHelper.php b/tests/_support/Helper/Common/RowHelper.php new file mode 100644 index 000000000..08b0efdaa --- /dev/null +++ b/tests/_support/Helper/Common/RowHelper.php @@ -0,0 +1,112 @@ +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')); + } +} diff --git a/tests/acceptance.suite.yml b/tests/acceptance.suite.yml index 8fa22c7c2..59c9d9038 100644 --- a/tests/acceptance.suite.yml +++ b/tests/acceptance.suite.yml @@ -14,3 +14,4 @@ modules: - \Helper\Acceptance - \Helper\Select2 - \Helper\Select2Ajax + - \Helper\Common\RowHelper diff --git a/tests/acceptance/AnagraficheCest.php b/tests/acceptance/AnagraficheCest.php index 00be001e3..528362e7b 100644 --- a/tests/acceptance/AnagraficheCest.php +++ b/tests/acceptance/AnagraficheCest.php @@ -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'); diff --git a/tests/acceptance/FattureCest.php b/tests/acceptance/FattureCest.php index b637a28d1..6dc87e418 100644 --- a/tests/acceptance/FattureCest.php +++ b/tests/acceptance/FattureCest.php @@ -1,7 +1,25 @@ 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); } } diff --git a/tests/unit/_bootstrap.php b/tests/unit/_bootstrap.php index 20b468109..dce380a8e 100644 --- a/tests/unit/_bootstrap.php +++ b/tests/unit/_bootstrap.php @@ -1,5 +1,14 @@ $namespace) { + Autoload::addNamespace($namespace.'\\', __DIR__.'/../../'.$path.'/custom/src'); + Autoload::addNamespace($namespace.'\\', __DIR__.'/../../'.$path.'/src'); +} + // Individuazione dei percorsi di base App::definePaths(__DIR__.'/../..');