Aggiunto test per le Fatture
This commit is contained in:
parent
9356f368cc
commit
7b6960a3fd
|
@ -2,6 +2,8 @@
|
|||
|
||||
namespace Helper;
|
||||
|
||||
use Facebook\WebDriver\WebDriverBy;
|
||||
|
||||
// here you can define custom actions
|
||||
// all public methods declared in helper class will be available in $t
|
||||
|
||||
|
@ -51,6 +53,7 @@ class Acceptance extends \Codeception\Module
|
|||
$t->click($link, $context);
|
||||
|
||||
$t->waitForElementNotVisible('#main_loading');
|
||||
$t->waitForElementNotVisible('#mini-loader');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -107,6 +110,19 @@ class Acceptance extends \Codeception\Module
|
|||
$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.
|
||||
*
|
||||
|
@ -114,7 +130,7 @@ class Acceptance extends \Codeception\Module
|
|||
* @param $option
|
||||
* @param int $timeout seconds. Default to 1
|
||||
*/
|
||||
public function select2($selector, $option, $timeout = 5)
|
||||
public function select2($selector, $option)
|
||||
{
|
||||
$select2 = $this->getModule('\Helper\Select2');
|
||||
|
||||
|
@ -123,6 +139,20 @@ class Acceptance extends \Codeception\Module
|
|||
$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)
|
||||
{
|
||||
$select2 = $this->getModule('\Helper\Select2Ajax');
|
||||
|
||||
$select2->selectOptionForSelect2($selector, $option, $timeout);
|
||||
}
|
||||
|
||||
protected function getAcceptanceModule()
|
||||
{
|
||||
if (!$this->hasModule('WebDriver')) {
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
|
||||
// @codingStandardsIgnoreFile
|
||||
|
||||
namespace Helper;
|
||||
|
||||
class Select2Ajax extends Select2
|
||||
{
|
||||
/**
|
||||
* 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.'").selectSetNew('.json_encode($option).', "ID: " + '.json_encode($option).');', [$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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -13,3 +13,4 @@ modules:
|
|||
browser: chrome
|
||||
- \Helper\Acceptance
|
||||
- \Helper\Select2
|
||||
- \Helper\Select2Ajax
|
||||
|
|
|
@ -7,13 +7,13 @@ class AnagraficheCest
|
|||
*
|
||||
* @param AcceptanceTester $t
|
||||
*/
|
||||
public function addAnag(AcceptanceTester $t, $name = 'ANAGRAFICA DI PROVA', $tipo = 1, $partita_iva = '')
|
||||
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->clickAndWait('Anagrafiche', '.sidebar');
|
||||
$t->navigateTo('Anagrafiche');
|
||||
|
||||
// Apre la schermata di nuovo elemento
|
||||
$t->clickAndWaitModal('.btn-primary', '#tabs');
|
||||
|
@ -29,7 +29,7 @@ class AnagraficheCest
|
|||
$t->clickAndWait('Aggiungi', '#add-form');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Aggiunta nuova anagrafica');
|
||||
$t->seeInField('Ragione sociale', $name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -37,9 +37,9 @@ class AnagraficheCest
|
|||
*
|
||||
* @param AcceptanceTester $t
|
||||
*/
|
||||
public function addAndDeleteAnag(AcceptanceTester $t)
|
||||
protected function addAndDeleteAnag(AcceptanceTester $t, $name = 'ANAGRAFICA DI PROVA', $tipo = 1, $partita_iva = '')
|
||||
{
|
||||
$this->addAnag($t, 'ANAGRAFICA CLIENTE DI PROVA', 1, '05024030289');
|
||||
$this->addAnag($t, $name, $tipo, $partita_iva);
|
||||
|
||||
// Seleziona l'azione di eliminazione
|
||||
$t->clickAndWaitSwal('Elimina', '#tab_0');
|
||||
|
@ -50,4 +50,34 @@ class AnagraficheCest
|
|||
// Controlla eliminazione
|
||||
$t->see('Anagrafica eliminata!', '.alert-success');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo cliente.
|
||||
*
|
||||
* @param AcceptanceTester $t
|
||||
*/
|
||||
public function testAnagraficaCliente(AcceptanceTester $t)
|
||||
{
|
||||
$this->addAnag($t, 'Cliente', 1, '05024030289');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo cliente.
|
||||
*
|
||||
* @param AcceptanceTester $t
|
||||
*/
|
||||
public function testAnagraficaTecnico(AcceptanceTester $t)
|
||||
{
|
||||
$this->addAnag($t, 'Tecnico', 2, '05024030289');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo cliente.
|
||||
*
|
||||
* @param AcceptanceTester $t
|
||||
*/
|
||||
public function testAnagraficaFornitore(AcceptanceTester $t)
|
||||
{
|
||||
$this->addAnag($t, 'Fornitore', 3, '05024030289');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,104 @@
|
|||
<?php
|
||||
|
||||
class FattureCest
|
||||
{
|
||||
/**
|
||||
* Crea una nuova anagrafica.
|
||||
*
|
||||
* @param AcceptanceTester $t
|
||||
*/
|
||||
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');
|
||||
|
||||
// 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 numero');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova anagrafica di tipo cliente e la elimina.
|
||||
*
|
||||
* @param AcceptanceTester $t
|
||||
*/
|
||||
protected function addAndDeleteFattura(AcceptanceTester $t, $cliente = 2, $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('Anagrafica eliminata!', '.alert-success');
|
||||
}
|
||||
|
||||
protected function addRow(AcceptanceTester $t, $descrizione, $qta, $prezzo, $iva = 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);
|
||||
|
||||
// Effettua il submit
|
||||
$t->clickAndWait('Aggiungi', '.modal');
|
||||
|
||||
// Controlla il salvataggio finale
|
||||
$t->see('Riga aggiunta');
|
||||
}
|
||||
|
||||
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->seeInSource('259,05');
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova fattura di vendita.
|
||||
*
|
||||
* @param AcceptanceTester $t
|
||||
*/
|
||||
public function testFatturaDiVendita(AcceptanceTester $t)
|
||||
{
|
||||
$this->addFattura($t, true, 2, 2);
|
||||
|
||||
$this->checkImporti($t);
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea una nuova fattura di acquisto.
|
||||
*
|
||||
* @param AcceptanceTester $t
|
||||
*/
|
||||
public function testFatturaDiAcquisto(AcceptanceTester $t)
|
||||
{
|
||||
$this->addFattura($t, false, 1, 3);
|
||||
|
||||
$this->checkImporti($t);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue