')
- FROM vn.printingQueue pq
- LEFT JOIN vn.worker w ON w.id = pq.worker
- LEFT JOIN vn.printer p ON p.id = pq.printer
- LEFT JOIN vn2008.Informes i ON i.Id_Informe = pq.report
- JOIN vn2008.Estados e ON e.Id_Estado = pq.state
- LIMIT 30;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND
- SET vDone = TRUE;
-
- SELECT COUNT(*), IFNULL(SUM(id),0) INTO vCurrentCount, vCheckSum
- FROM vn.printingQueue WHERE state = 1;
-
- SELECT isAlreadyNotified INTO vIsAlreadyNotified
- FROM printingQueueCheck;
-
- IF (SELECT lastCount FROM printingQueueCheck) = vCurrentCount AND
- (SELECT lastCheckSum FROM printingQueueCheck) = vCheckSum AND
- vIsAlreadyNotified = FALSE AND vCurrentCount > 0
- THEN
-
- SELECT '
-
-
Id Cola
-
Ruta Impresora
-
Informe
-
Estado
-
Trabajador
-
Error
-
' INTO vTableQueue;
-
- OPEN vCur;
-
- l: LOOP
-
- SET vDone = FALSE;
-
- FETCH vCur INTO vLineQueue;
-
- IF vDone THEN
- LEAVE l;
- END IF;
-
- SELECT CONCAT(vTableQueue, vLineQueue) INTO vTableQueue;
-
- END LOOP;
-
- CLOSE vCur;
-
- INSERT INTO vn2008.mail (`to`, subject, text)
- VALUES ('cau@verdnatura.es, sysadmin@verdnatura.es',
- 'servidor de impresion parado',
- CONCAT('Hay ', vCurrentCount, ' lineas bloqueadas', vTableQueue, '
'));
-
- UPDATE printingQueueCheck SET isAlreadyNotified = TRUE;
- END IF;
-
- IF (SELECT lastCount FROM printingQueueCheck) > vCurrentCount AND
- vIsAlreadyNotified = TRUE
- THEN
- UPDATE printingQueueCheck SET isAlreadyNotified = FALSE;
- END IF;
-
- UPDATE printingQueueCheck
- SET lastCount = vCurrentCount,
- lastCheckSum = vCheckSum;
-
+/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `printQueue_check` ON SCHEDULE EVERY 10 MINUTE STARTS '2019-11-08 00:00:00' ON COMPLETION PRESERVE ENABLE COMMENT 'Notifica en caso de que el servidor de impresión este parado' DO BEGIN
+
+ DECLARE vCurrentCount INT;
+ DECLARE vCheckSum INT;
+ DECLARE vIsAlreadyNotified BOOLEAN;
+ DECLARE vTableQueue TEXT;
+ DECLARE vLineQueue TEXT;
+ DECLARE vDone BOOL DEFAULT FALSE;
+ DECLARE vCur CURSOR FOR
+ SELECT CONCAT('
')
+ FROM vn.printingQueue pq
+ LEFT JOIN vn.worker w ON w.id = pq.worker
+ LEFT JOIN vn.printer p ON p.id = pq.printer
+ LEFT JOIN vn2008.Informes i ON i.Id_Informe = pq.report
+ JOIN vn2008.Estados e ON e.Id_Estado = pq.state
+ LIMIT 30;
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND
+ SET vDone = TRUE;
+
+ SELECT COUNT(*), IFNULL(SUM(id),0) INTO vCurrentCount, vCheckSum
+ FROM vn.printingQueue WHERE state = 1;
+
+ SELECT isAlreadyNotified INTO vIsAlreadyNotified
+ FROM printingQueueCheck;
+
+ IF (SELECT lastCount FROM printingQueueCheck) = vCurrentCount AND
+ (SELECT lastCheckSum FROM printingQueueCheck) = vCheckSum AND
+ vIsAlreadyNotified = FALSE AND vCurrentCount > 0
+ THEN
+
+ SELECT '
+
+
Id Cola
+
Ruta Impresora
+
Informe
+
Estado
+
Trabajador
+
Error
+
' INTO vTableQueue;
+
+ OPEN vCur;
+
+ l: LOOP
+
+ SET vDone = FALSE;
+
+ FETCH vCur INTO vLineQueue;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
+ SELECT CONCAT(vTableQueue, vLineQueue) INTO vTableQueue;
+
+ END LOOP;
+
+ CLOSE vCur;
+
+ INSERT INTO vn2008.mail (`to`, subject, text)
+ VALUES ('cau@verdnatura.es, sysadmin@verdnatura.es',
+ 'servidor de impresion parado',
+ CONCAT('Hay ', vCurrentCount, ' lineas bloqueadas', vTableQueue, '
'));
+
+ UPDATE printingQueueCheck SET isAlreadyNotified = TRUE;
+ END IF;
+
+ IF (SELECT lastCount FROM printingQueueCheck) > vCurrentCount AND
+ vIsAlreadyNotified = TRUE
+ THEN
+ UPDATE printingQueueCheck SET isAlreadyNotified = FALSE;
+ END IF;
+
+ UPDATE printingQueueCheck
+ SET lastCount = vCurrentCount,
+ lastCheckSum = vCheckSum;
+
END */ ;;
/*!50003 SET time_zone = @saved_time_zone */ ;;
/*!50003 SET sql_mode = @saved_sql_mode */ ;;
@@ -35117,27 +35117,27 @@ DELIMITER ;
/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `clean__`()
-BEGIN
- DECLARE vDateShort DATETIME;
- DECLARE oneYearAgo DATE;
- DECLARE twoYearsAgo DATE;
- DECLARE fourYearsAgo DATE;
-
- SET vDateShort = TIMESTAMPADD(MONTH, -2, CURDATE());
- SET oneYearAgo = TIMESTAMPADD(YEAR,-1,CURDATE());
- SET twoYearsAgo = TIMESTAMPADD(YEAR,-2,CURDATE());
- SET fourYearsAgo = TIMESTAMPADD(YEAR,-4,CURDATE());
-
- DELETE FROM vn.message WHERE sendDate < vDateShort;
- DELETE FROM vn.messageInbox WHERE sendDate < vDateShort;
- DELETE FROM vn.messageInbox WHERE sendDate < vDateShort;
- DELETE FROM vn.workerTimeControl WHERE timed < fourYearsAgo;
- DELETE FROM vn.itemShelving WHERE created < CURDATE() AND visible = 0;
- DELETE FROM vn.ticketDown WHERE created < TIMESTAMPADD(DAY,-1,CURDATE());
- CALL shelving_clean;
-
+BEGIN
+ DECLARE vDateShort DATETIME;
+ DECLARE oneYearAgo DATE;
+ DECLARE twoYearsAgo DATE;
+ DECLARE fourYearsAgo DATE;
+
+ SET vDateShort = TIMESTAMPADD(MONTH, -2, CURDATE());
+ SET oneYearAgo = TIMESTAMPADD(YEAR,-1,CURDATE());
+ SET twoYearsAgo = TIMESTAMPADD(YEAR,-2,CURDATE());
+ SET fourYearsAgo = TIMESTAMPADD(YEAR,-4,CURDATE());
+
+ DELETE FROM vn.message WHERE sendDate < vDateShort;
+ DELETE FROM vn.messageInbox WHERE sendDate < vDateShort;
+ DELETE FROM vn.messageInbox WHERE sendDate < vDateShort;
+ DELETE FROM vn.workerTimeControl WHERE timed < fourYearsAgo;
+ DELETE FROM vn.itemShelving WHERE created < CURDATE() AND visible = 0;
+ DELETE FROM vn.ticketDown WHERE created < TIMESTAMPADD(DAY,-1,CURDATE());
+ CALL shelving_clean;
+
CALL vn.ticketPackagingRecovery;
-
+
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -35980,54 +35980,54 @@ DELIMITER ;
/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `clientRemoveWorker__`()
-BEGIN
- DECLARE done BOOL DEFAULT FALSE;
- DECLARE vClientFk INT;
-
- DECLARE rs CURSOR FOR
- SELECT c.clientFk
- FROM tmp.clientGetDebt c
- LEFT JOIN tmp.risk r ON r.clientFk = c.clientFk
- WHERE IFNULL(r.risk,0) = 0;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-
- DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt;
- CREATE TEMPORARY TABLE tmp.clientGetDebt
- SELECT cd.id as clientFk
- FROM bs.clientDied cd
- LEFT JOIN vn.clientProtected cp ON cp.clientFk = cd.id
- JOIN vn.client c ON c.id = cd.id
- JOIN vn.province p ON p.id = c.provinceFk
- JOIN vn.country co ON co.id = p.countryFk
- WHERE cd.Aviso = 'TERCER AVISO'
- AND cp.clientFk IS NULL
- AND co.country NOT IN ('Portugal','Francia','España exento')
- AND c.salesPersonFk IS NOT NULL;
-
- CALL vn.clientGetDebt(curdate());
-
- DROP TEMPORARY TABLE IF EXISTS tmp.contador;
- CREATE TEMPORARY TABLE tmp.contador (id INT)
- ENGINE = MEMORY;
-
- OPEN rs;
- FETCH rs INTO vClientFk;
-
- WHILE NOT done DO
- INSERT INTO tmp.contador SET id = vClientFk;
- CALL vn.clientGreugeSpray(vClientFk, TRUE, '',TRUE);
+BEGIN
+ DECLARE done BOOL DEFAULT FALSE;
+ DECLARE vClientFk INT;
+
+ DECLARE rs CURSOR FOR
+ SELECT c.clientFk
+ FROM tmp.clientGetDebt c
+ LEFT JOIN tmp.risk r ON r.clientFk = c.clientFk
+ WHERE IFNULL(r.risk,0) = 0;
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
+
+ DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt;
+ CREATE TEMPORARY TABLE tmp.clientGetDebt
+ SELECT cd.id as clientFk
+ FROM bs.clientDied cd
+ LEFT JOIN vn.clientProtected cp ON cp.clientFk = cd.id
+ JOIN vn.client c ON c.id = cd.id
+ JOIN vn.province p ON p.id = c.provinceFk
+ JOIN vn.country co ON co.id = p.countryFk
+ WHERE cd.Aviso = 'TERCER AVISO'
+ AND cp.clientFk IS NULL
+ AND co.country NOT IN ('Portugal','Francia','España exento')
+ AND c.salesPersonFk IS NOT NULL;
+
+ CALL vn.clientGetDebt(curdate());
+
+ DROP TEMPORARY TABLE IF EXISTS tmp.contador;
+ CREATE TEMPORARY TABLE tmp.contador (id INT)
+ ENGINE = MEMORY;
+
+ OPEN rs;
+ FETCH rs INTO vClientFk;
+
+ WHILE NOT done DO
+ INSERT INTO tmp.contador SET id = vClientFk;
+ CALL vn.clientGreugeSpray(vClientFk, TRUE, '',TRUE);
UPDATE vn.client SET salesPersonFk = NULL WHERE id = vClientFk;
INSERT INTO vn.clientLog (originFk, userFk, `action`, description)
VALUES (vClientFk, account.userGetId(), 'update', CONCAT('Se ha desasignado el cliente por que no ha comprado en 3 meses'));
-
+
REPLACE bs.clientNewBorn(clientFk, shipped)
- VALUES(vClientFk, CURDATE());
- FETCH rs INTO vClientFk;
- END WHILE;
-
- CLOSE rs;
+ VALUES(vClientFk, CURDATE());
+ FETCH rs INTO vClientFk;
+ END WHILE;
+
+ CLOSE rs;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -38951,216 +38951,216 @@ DELIMITER ;
/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `entryConverter`(IN `vEntry` INT)
-BEGIN
-
- DECLARE vWarehouseIn INT;
- DECLARE vWarehouseOut INT;
- DECLARE vTravel INT;
-
- DECLARE done BOOL DEFAULT FALSE;
-
- DECLARE vId_Entrada INT;
- DECLARE vId_Article INT;
- DECLARE vEtiquetas INT;
- DECLARE vId_Cubo VARCHAR(10);
- DECLARE vPacking INT;
- DECLARE vGrouping INT;
- DECLARE vCantidad INT;
- DECLARE vCostefijo DECIMAL(10,3);
- DECLARE vPortefijo DECIMAL(10,3);
- DECLARE vEmbalajefijo DECIMAL(10);
- DECLARE vComisionfija DECIMAL(10,3);
- DECLARE vCaja INT;
- DECLARE vNicho VARCHAR(5);
- DECLARE vTarifa1 DECIMAL(10,2);
- DECLARE vTarifa2 DECIMAL(10,2);
- DECLARE vTarifa3 DECIMAL(10,2);
- DECLARE vPVP DECIMAL(10,2);
- DECLARE vCompra INT;
-
- DECLARE rs CURSOR FOR
- SELECT
- b.Id_Entrada,
- b.Id_Article,
- b.Etiquetas,
- b.Id_Cubo,
- b.Packing,
- b.`grouping`,
- b.Cantidad,
- b.Costefijo,
- b.Portefijo,
- b.Embalajefijo,
- b.Comisionfija,
- b.caja,
- b.Nicho,
- b.Tarifa1,
- b.Tarifa2,
- b.Tarifa3,
- b.PVP
- FROM vn2008.Compres b
- JOIN vn.itemConversor ic ON ic.espItemFk = b.Id_Article
- WHERE Id_Entrada = vEntry;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-
- SELECT warehouseInFk, warehouseOutFk, tr.id
- INTO vWarehouseIn, vWarehouseOut, vTravel
- FROM travel tr
- JOIN entry e ON e.travelFk = tr.id
- WHERE e.id = vEntry;
-
- UPDATE travel
- SET warehouseInFk = vWarehouseOut,
- warehouseOutFk = vWarehouseIn
- WHERE id = vTravel;
-
- UPDATE vn2008.Compres c
- LEFT JOIN vn.itemConversor ic ON ic.espItemFk = c.Id_Article
- SET Etiquetas = 0, Cantidad = 0
- WHERE c.Id_Entrada = vEntry
- AND ic.espItemFk IS NULL;
-
- OPEN rs;
-
- DELETE FROM vn2008.Compres WHERE Id_Entrada = vEntry;
-
- FETCH rs INTO
- vId_Entrada,
- vId_Article,
- vEtiquetas,
- vId_Cubo,
- vPacking,
- vGrouping,
- vCantidad,
- vCostefijo,
- vPortefijo,
- vEmbalajefijo,
- vComisionfija,
- vCaja,
- vNicho,
- vTarifa1,
- vTarifa2,
- vTarifa3,
- vPVP;
-
- WHILE NOT done DO
-
- -- Primero la linea original con las cantidades invertidas
- INSERT INTO vn2008.Compres
- (
- Id_Entrada,
- Id_Article,
- Etiquetas,
- Id_Cubo,
- Packing,
- `grouping`,
- Cantidad,
- Costefijo,
- Portefijo,
- Embalajefijo,
- Comisionfija,
- caja,
- Nicho,
- Tarifa1,
- Tarifa2,
- Tarifa3,
- PVP
- )
- VALUES
- (
- vId_Entrada,
- vId_Article,
- - vEtiquetas,
- vId_Cubo,
- vPacking,
- vGrouping,
- - vCantidad,
- vCostefijo,
- vPortefijo,
- vEmbalajefijo,
- vComisionfija,
- vCaja,
- vNicho,
- vTarifa1,
- vTarifa2,
- vTarifa3,
- vPVP);
-
- -- Ahora la linea nueva, con el item genérico
- INSERT INTO vn2008.Compres
- (
- Id_Entrada,
- Id_Article,
- Etiquetas,
- Id_Cubo,
- Packing,
- `grouping`,
- Cantidad,
- Costefijo,
- Portefijo,
- Embalajefijo,
- Comisionfija,
- caja,
- Nicho,
- Tarifa1,
- Tarifa2,
- Tarifa3,
- PVP
- )
- SELECT
- vId_Entrada,
- genItemFk as Id_Article,
- vEtiquetas,
- vId_Cubo,
- vPacking,
- vGrouping,
- vCantidad,
- vCostefijo,
- vPortefijo,
- vEmbalajefijo,
- vComisionfija,
- vCaja,
- vNicho,
- vTarifa1,
- vTarifa2,
- vTarifa3,
- vPVP
- FROM itemConversor
- WHERE espItemFk = vId_Article;
-
- SELECT LAST_INSERT_ID()
- INTO vCompra;
-
- REPLACE vn2008.Compres_mark(Id_Compra,`comment`)
- SELECT vCompra, vId_Article;
-
-
- FETCH rs INTO
- vId_Entrada,
- vId_Article,
- vEtiquetas,
- vId_Cubo,
- vPacking,
- vGrouping,
- vCantidad,
- vCostefijo,
- vPortefijo,
- vEmbalajefijo,
- vComisionfija,
- vCaja,
- vNicho,
- vTarifa1,
- vTarifa2,
- vTarifa3,
- vPVP;
-
- END WHILE;
-
-
- CLOSE rs;
-
-
-
+BEGIN
+
+ DECLARE vWarehouseIn INT;
+ DECLARE vWarehouseOut INT;
+ DECLARE vTravel INT;
+
+ DECLARE done BOOL DEFAULT FALSE;
+
+ DECLARE vId_Entrada INT;
+ DECLARE vId_Article INT;
+ DECLARE vEtiquetas INT;
+ DECLARE vId_Cubo VARCHAR(10);
+ DECLARE vPacking INT;
+ DECLARE vGrouping INT;
+ DECLARE vCantidad INT;
+ DECLARE vCostefijo DECIMAL(10,3);
+ DECLARE vPortefijo DECIMAL(10,3);
+ DECLARE vEmbalajefijo DECIMAL(10);
+ DECLARE vComisionfija DECIMAL(10,3);
+ DECLARE vCaja INT;
+ DECLARE vNicho VARCHAR(5);
+ DECLARE vTarifa1 DECIMAL(10,2);
+ DECLARE vTarifa2 DECIMAL(10,2);
+ DECLARE vTarifa3 DECIMAL(10,2);
+ DECLARE vPVP DECIMAL(10,2);
+ DECLARE vCompra INT;
+
+ DECLARE rs CURSOR FOR
+ SELECT
+ b.Id_Entrada,
+ b.Id_Article,
+ b.Etiquetas,
+ b.Id_Cubo,
+ b.Packing,
+ b.`grouping`,
+ b.Cantidad,
+ b.Costefijo,
+ b.Portefijo,
+ b.Embalajefijo,
+ b.Comisionfija,
+ b.caja,
+ b.Nicho,
+ b.Tarifa1,
+ b.Tarifa2,
+ b.Tarifa3,
+ b.PVP
+ FROM vn2008.Compres b
+ JOIN vn.itemConversor ic ON ic.espItemFk = b.Id_Article
+ WHERE Id_Entrada = vEntry;
+
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
+
+ SELECT warehouseInFk, warehouseOutFk, tr.id
+ INTO vWarehouseIn, vWarehouseOut, vTravel
+ FROM travel tr
+ JOIN entry e ON e.travelFk = tr.id
+ WHERE e.id = vEntry;
+
+ UPDATE travel
+ SET warehouseInFk = vWarehouseOut,
+ warehouseOutFk = vWarehouseIn
+ WHERE id = vTravel;
+
+ UPDATE vn2008.Compres c
+ LEFT JOIN vn.itemConversor ic ON ic.espItemFk = c.Id_Article
+ SET Etiquetas = 0, Cantidad = 0
+ WHERE c.Id_Entrada = vEntry
+ AND ic.espItemFk IS NULL;
+
+ OPEN rs;
+
+ DELETE FROM vn2008.Compres WHERE Id_Entrada = vEntry;
+
+ FETCH rs INTO
+ vId_Entrada,
+ vId_Article,
+ vEtiquetas,
+ vId_Cubo,
+ vPacking,
+ vGrouping,
+ vCantidad,
+ vCostefijo,
+ vPortefijo,
+ vEmbalajefijo,
+ vComisionfija,
+ vCaja,
+ vNicho,
+ vTarifa1,
+ vTarifa2,
+ vTarifa3,
+ vPVP;
+
+ WHILE NOT done DO
+
+ -- Primero la linea original con las cantidades invertidas
+ INSERT INTO vn2008.Compres
+ (
+ Id_Entrada,
+ Id_Article,
+ Etiquetas,
+ Id_Cubo,
+ Packing,
+ `grouping`,
+ Cantidad,
+ Costefijo,
+ Portefijo,
+ Embalajefijo,
+ Comisionfija,
+ caja,
+ Nicho,
+ Tarifa1,
+ Tarifa2,
+ Tarifa3,
+ PVP
+ )
+ VALUES
+ (
+ vId_Entrada,
+ vId_Article,
+ - vEtiquetas,
+ vId_Cubo,
+ vPacking,
+ vGrouping,
+ - vCantidad,
+ vCostefijo,
+ vPortefijo,
+ vEmbalajefijo,
+ vComisionfija,
+ vCaja,
+ vNicho,
+ vTarifa1,
+ vTarifa2,
+ vTarifa3,
+ vPVP);
+
+ -- Ahora la linea nueva, con el item genérico
+ INSERT INTO vn2008.Compres
+ (
+ Id_Entrada,
+ Id_Article,
+ Etiquetas,
+ Id_Cubo,
+ Packing,
+ `grouping`,
+ Cantidad,
+ Costefijo,
+ Portefijo,
+ Embalajefijo,
+ Comisionfija,
+ caja,
+ Nicho,
+ Tarifa1,
+ Tarifa2,
+ Tarifa3,
+ PVP
+ )
+ SELECT
+ vId_Entrada,
+ genItemFk as Id_Article,
+ vEtiquetas,
+ vId_Cubo,
+ vPacking,
+ vGrouping,
+ vCantidad,
+ vCostefijo,
+ vPortefijo,
+ vEmbalajefijo,
+ vComisionfija,
+ vCaja,
+ vNicho,
+ vTarifa1,
+ vTarifa2,
+ vTarifa3,
+ vPVP
+ FROM itemConversor
+ WHERE espItemFk = vId_Article;
+
+ SELECT LAST_INSERT_ID()
+ INTO vCompra;
+
+ REPLACE vn2008.Compres_mark(Id_Compra,`comment`)
+ SELECT vCompra, vId_Article;
+
+
+ FETCH rs INTO
+ vId_Entrada,
+ vId_Article,
+ vEtiquetas,
+ vId_Cubo,
+ vPacking,
+ vGrouping,
+ vCantidad,
+ vCostefijo,
+ vPortefijo,
+ vEmbalajefijo,
+ vComisionfija,
+ vCaja,
+ vNicho,
+ vTarifa1,
+ vTarifa2,
+ vTarifa3,
+ vPVP;
+
+ END WHILE;
+
+
+ CLOSE rs;
+
+
+
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -39222,62 +39222,62 @@ DELIMITER ;
/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `entryPrepare`(IN `idE` BIGINT)
-BEGIN
- SELECT
- b.quantity / b.packing AS Paquetes,
- b.packing AS `Grouping`,
- barcode,
- 'ASEGURADO' AS asegurado,
- ic.name,
- ic.order,
- s.name AS Consignatario,
- e.supplierFk AS Id_Cliente,
- e.isOrdered,
- e.isConfirmed,
- 10 AS Calidad,
- LPAD(IFNULL(cpd.id, ip.code),
- 5,
- '0') AS path,
- b.entryFk AS Id_Ticket,
- t.landed AS Fecha,
- b.itemFk,
- b.quantity,
- i.name AS Concepte,
- i.size,
- i.inkFk,
- i.category,
- o.code AS Origen,
- 0 AS Bultos,
- wIn.`name` AS Tipo,
- 0 AS OK,
- 0 AS Reservado,
- i.stems,
- b.id AS Id_Movimiento,
- ip.code,
- 'PEDIDO ASEGURADO' AS MSG,
- 0 AS Seguro,
- i.image,
- pr.name AS producer
- FROM vn.buy b
- JOIN vn.entry e ON b.entryFk = e.id
- JOIN vn.travel t ON t.id = e.travelFk
- JOIN vn.warehouse wIn ON wIn.id = t.warehouseInFk
- JOIN vn.warehouse wOut ON wOut.id = t.warehouseOutFk
- JOIN vn.item i ON i.id = b.itemFk
- JOIN vn.itemType it ON it.id =i.typeFk
- JOIN vn.itemCategory ic ON ic.id = it.categoryFk
- JOIN vn.packaging pkg ON pkg.id = b.packageFk
- LEFT JOIN vn.itemPlacement ip ON i.id = ip.itemFk AND ip.warehouseFk = wIn.id AND ip.warehouseFk = t.warehouseOutFk
- LEFT JOIN (SELECT itemFk, code AS barcode FROM vn.itemBarcode GROUP BY itemFk) ib ON ib.itemFk = b.itemFk
- LEFT JOIN vn.origin o ON o.id = i.originFk
- LEFT JOIN vn.supplier s ON s.id = e.supplierFk
- LEFT JOIN vn.producer pr on pr.id = i.producerFk
- LEFT JOIN vn.coolerPathDetail cpd ON LEFT(ip.code, 3) = cpd.hallway
- WHERE
- NOT wIn.isFeedStock AND NOT e.isInventory AND NOT e.isRaid
- AND e.id = 158772
- AND i.typeFk IS NOT NULL
- AND ic.merchandise IS NOT FALSE;
+BEGIN
+ SELECT
+ b.quantity / b.packing AS Paquetes,
+ b.packing AS `Grouping`,
+ barcode,
+ 'ASEGURADO' AS asegurado,
+ ic.name,
+ ic.order,
+ s.name AS Consignatario,
+ e.supplierFk AS Id_Cliente,
+ e.isOrdered,
+ e.isConfirmed,
+ 10 AS Calidad,
+ LPAD(IFNULL(cpd.id, ip.code),
+ 5,
+ '0') AS path,
+ b.entryFk AS Id_Ticket,
+ t.landed AS Fecha,
+ b.itemFk,
+ b.quantity,
+ i.name AS Concepte,
+ i.size,
+ i.inkFk,
+ i.category,
+ o.code AS Origen,
+ 0 AS Bultos,
+ wIn.`name` AS Tipo,
+ 0 AS OK,
+ 0 AS Reservado,
+ i.stems,
+ b.id AS Id_Movimiento,
+ ip.code,
+ 'PEDIDO ASEGURADO' AS MSG,
+ 0 AS Seguro,
+ i.image,
+ pr.name AS producer
+ FROM vn.buy b
+ JOIN vn.entry e ON b.entryFk = e.id
+ JOIN vn.travel t ON t.id = e.travelFk
+ JOIN vn.warehouse wIn ON wIn.id = t.warehouseInFk
+ JOIN vn.warehouse wOut ON wOut.id = t.warehouseOutFk
+ JOIN vn.item i ON i.id = b.itemFk
+ JOIN vn.itemType it ON it.id =i.typeFk
+ JOIN vn.itemCategory ic ON ic.id = it.categoryFk
+ JOIN vn.packaging pkg ON pkg.id = b.packageFk
+ LEFT JOIN vn.itemPlacement ip ON i.id = ip.itemFk AND ip.warehouseFk = wIn.id AND ip.warehouseFk = t.warehouseOutFk
+ LEFT JOIN (SELECT itemFk, code AS barcode FROM vn.itemBarcode GROUP BY itemFk) ib ON ib.itemFk = b.itemFk
+ LEFT JOIN vn.origin o ON o.id = i.originFk
+ LEFT JOIN vn.supplier s ON s.id = e.supplierFk
+ LEFT JOIN vn.producer pr on pr.id = i.producerFk
+ LEFT JOIN vn.coolerPathDetail cpd ON LEFT(ip.code, 3) = cpd.hallway
+ WHERE
+ NOT wIn.isFeedStock AND NOT e.isInventory AND NOT e.isRaid
+ AND e.id = 158772
+ AND i.typeFk IS NOT NULL
+ AND ic.merchandise IS NOT FALSE;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -43012,38 +43012,38 @@ DELIMITER ;
/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `itemLastEntries`(IN `vItem` INT, IN `vDays` DATE)
-BEGIN
- SELECT
- w.id AS warehouseFk,
- w.name AS warehouse,
- tr.landed,
- b.entryFk,
- b.isIgnored,
- b.price2,
- b.price3,
- b.stickers,
- b.packing,
- b.`grouping`,
- b.groupingMode,
- i.stems,
- b.quantity,
- b.buyingValue,
- b.packageFk ,
- s.id AS supplierFk,
- s.name AS supplier
- FROM itemType it
- RIGHT JOIN (entry e
- LEFT JOIN supplier s ON s.id = e.supplierFk
- RIGHT JOIN buy b ON b.entryFk = e.id
- LEFT JOIN item i ON i.id = b.itemFk
- LEFT JOIN ink ON ink.id = i.inkFk
- LEFT JOIN travel tr ON tr.id = e.travelFk
- LEFT JOIN warehouse w ON w.id = tr.warehouseInFk
- LEFT JOIN origin o ON o.id = i.originFk
- ) ON it.id = i.typeFk
- LEFT JOIN edi.ekt ek ON b.ektFk = ek.id
- WHERE b.itemFk = vItem And tr.shipped BETWEEN vDays AND DATE_ADD(CURDATE(), INTERVAl + 10 DAY)
- ORDER BY tr.landed DESC , b.id DESC;
+BEGIN
+ SELECT
+ w.id AS warehouseFk,
+ w.name AS warehouse,
+ tr.landed,
+ b.entryFk,
+ b.isIgnored,
+ b.price2,
+ b.price3,
+ b.stickers,
+ b.packing,
+ b.`grouping`,
+ b.groupingMode,
+ i.stems,
+ b.quantity,
+ b.buyingValue,
+ b.packageFk ,
+ s.id AS supplierFk,
+ s.name AS supplier
+ FROM itemType it
+ RIGHT JOIN (entry e
+ LEFT JOIN supplier s ON s.id = e.supplierFk
+ RIGHT JOIN buy b ON b.entryFk = e.id
+ LEFT JOIN item i ON i.id = b.itemFk
+ LEFT JOIN ink ON ink.id = i.inkFk
+ LEFT JOIN travel tr ON tr.id = e.travelFk
+ LEFT JOIN warehouse w ON w.id = tr.warehouseInFk
+ LEFT JOIN origin o ON o.id = i.originFk
+ ) ON it.id = i.typeFk
+ LEFT JOIN edi.ekt ek ON b.ektFk = ek.id
+ WHERE b.itemFk = vItem And tr.shipped BETWEEN vDays AND DATE_ADD(CURDATE(), INTERVAl + 10 DAY)
+ ORDER BY tr.landed DESC , b.id DESC;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -47362,77 +47362,77 @@ DELIMITER ;
/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `saleItemShelvingMake`(IN `vTicketFk` INT, IN `vSectorFk` INT)
-BEGIN
-
- SET @rest:= CAST(0 AS DECIMAL(10,0));
- SET @saleFk := CAST(0 AS DECIMAL(10,0));
- SET @reserved := CAST(0 AS DECIMAL(10,0));
-
- UPDATE vn.itemShelving ish
- JOIN vn.saleItemShelving sis ON sis.itemShelvingFk = ish.id
- JOIN sale s ON s.id = sis.saleFk
- SET ish.visible = sis.quantity + ish.visible,
- ish.available = sis.quantity + ish.visible
- WHERE s.ticketFk = vTicketFk;
-
- DELETE sis.*
- FROM saleItemShelving sis
- JOIN sale s ON s.id = sis.saleFk
- WHERE s.ticketFk = vTicketFk;
-
- INSERT INTO saleItemShelving( saleFk,
- itemShelvingFk,
- quantity,
- ubication)
- SELECT saleFk,
- itemShelvingFk,
- CAST(Reserved as DECIMAL(10,0)) as Reserved,
- ubication
- FROM
- (SELECT saleFk,
- itemShelvingFk,
- ubication,
- @rest := IF(@saleFk = saleFk, @rest, quantity) as Falta,
- @reserved := IF(available < @rest, available, IF(@rest < packing,0,@rest)) as Reserved,
- @rest := @rest - @reserved,
- @saleFk := saleFk
- FROM
- ( SELECT s.id as saleFk,
- ish.created,
- ish.id as itemShelvingFk,
- ish.available,
- s.quantity,
- ish.packing,
- CONCAT(p.`column`, '-',p.`row`,': ', sh.code ) as ubication
- FROM vn.sale s
- JOIN vn.ticket t ON t.id = s.ticketFk
- JOIN vn.sector sc ON sc.warehouseFk = t.warehouseFk
- JOIN vn.parking p ON p.sectorFk = sc.id
- JOIN vn.shelving sh ON sh.parkingFk = p.id
- JOIN vn.itemShelving ish ON ish.shelvingFk = sh.code AND ish.itemFk = s.itemFk
- WHERE t.id = vTicketFk
- AND sc.id = vSectorFk
- AND s.quantity MOD ish.packing = 0
- AND s.quantity >= ish.packing
- ORDER BY s.id,
- sh.priority DESC,
- ish.packing DESC,
- ish.created
- ) sub
- ) sub2
- WHERE Reserved > 0;
-
- UPDATE vn.itemShelving ish
- JOIN vn.saleItemShelving sis ON sis.itemShelvingFk = ish.id
- JOIN vn.sale s ON s.id = sis.saleFk
- SET ish.available = ish.visible - sis.quantity,
- ish.visible = ish.visible - sis.quantity
- WHERE s.ticketFk = vTicketFk
- AND s.isPicked = FALSE;
-
- CALL vn.saleItemShelvingIsPicked(vTicketFk, TRUE);
-
-
+BEGIN
+
+ SET @rest:= CAST(0 AS DECIMAL(10,0));
+ SET @saleFk := CAST(0 AS DECIMAL(10,0));
+ SET @reserved := CAST(0 AS DECIMAL(10,0));
+
+ UPDATE vn.itemShelving ish
+ JOIN vn.saleItemShelving sis ON sis.itemShelvingFk = ish.id
+ JOIN sale s ON s.id = sis.saleFk
+ SET ish.visible = sis.quantity + ish.visible,
+ ish.available = sis.quantity + ish.visible
+ WHERE s.ticketFk = vTicketFk;
+
+ DELETE sis.*
+ FROM saleItemShelving sis
+ JOIN sale s ON s.id = sis.saleFk
+ WHERE s.ticketFk = vTicketFk;
+
+ INSERT INTO saleItemShelving( saleFk,
+ itemShelvingFk,
+ quantity,
+ ubication)
+ SELECT saleFk,
+ itemShelvingFk,
+ CAST(Reserved as DECIMAL(10,0)) as Reserved,
+ ubication
+ FROM
+ (SELECT saleFk,
+ itemShelvingFk,
+ ubication,
+ @rest := IF(@saleFk = saleFk, @rest, quantity) as Falta,
+ @reserved := IF(available < @rest, available, IF(@rest < packing,0,@rest)) as Reserved,
+ @rest := @rest - @reserved,
+ @saleFk := saleFk
+ FROM
+ ( SELECT s.id as saleFk,
+ ish.created,
+ ish.id as itemShelvingFk,
+ ish.available,
+ s.quantity,
+ ish.packing,
+ CONCAT(p.`column`, '-',p.`row`,': ', sh.code ) as ubication
+ FROM vn.sale s
+ JOIN vn.ticket t ON t.id = s.ticketFk
+ JOIN vn.sector sc ON sc.warehouseFk = t.warehouseFk
+ JOIN vn.parking p ON p.sectorFk = sc.id
+ JOIN vn.shelving sh ON sh.parkingFk = p.id
+ JOIN vn.itemShelving ish ON ish.shelvingFk = sh.code AND ish.itemFk = s.itemFk
+ WHERE t.id = vTicketFk
+ AND sc.id = vSectorFk
+ AND s.quantity MOD ish.packing = 0
+ AND s.quantity >= ish.packing
+ ORDER BY s.id,
+ sh.priority DESC,
+ ish.packing DESC,
+ ish.created
+ ) sub
+ ) sub2
+ WHERE Reserved > 0;
+
+ UPDATE vn.itemShelving ish
+ JOIN vn.saleItemShelving sis ON sis.itemShelvingFk = ish.id
+ JOIN vn.sale s ON s.id = sis.saleFk
+ SET ish.available = ish.visible - sis.quantity,
+ ish.visible = ish.visible - sis.quantity
+ WHERE s.ticketFk = vTicketFk
+ AND s.isPicked = FALSE;
+
+ CALL vn.saleItemShelvingIsPicked(vTicketFk, TRUE);
+
+
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -47925,33 +47925,33 @@ DELIMITER ;
/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `scanTreeCreate`()
-BEGIN
- CALL nestTree(
- 'vn2008',
- 'scan',
- 'vn2008',
- 'scanTree'
- );
-
- UPDATE vn2008.scanTree st
- JOIN (
- SELECT sl.scan_id,
- MAX(sl.odbc_date) lastScanned,
- COUNT(DISTINCT t.routeFk) routeCount,
- MIN(t.routeFk) mod 1000 as minRoute,
- MAX(t.routeFk) mod 1000 as maxRoute,
- COUNT(sl.scan_line_id) as scanned
- FROM vn2008.scan_line sl
- JOIN expedition e ON e.id = sl.`code`
- JOIN ticket t ON t.id = e.ticketFk
- WHERE t.routeFk
- GROUP BY sl.scan_id
- ) rs ON rs.scan_id = st.id
- SET st.lastScanned = rs.lastScanned,
- st.routeCount = rs.routeCount,
- st.minRoute = rs.minRoute,
- st.maxRoute = IF(rs.minRoute != rs.maxRoute, rs.maxRoute,NULL),
- st.scanned = rs.scanned;
+BEGIN
+ CALL nestTree(
+ 'vn2008',
+ 'scan',
+ 'vn2008',
+ 'scanTree'
+ );
+
+ UPDATE vn2008.scanTree st
+ JOIN (
+ SELECT sl.scan_id,
+ MAX(sl.odbc_date) lastScanned,
+ COUNT(DISTINCT t.routeFk) routeCount,
+ MIN(t.routeFk) mod 1000 as minRoute,
+ MAX(t.routeFk) mod 1000 as maxRoute,
+ COUNT(sl.scan_line_id) as scanned
+ FROM vn2008.scan_line sl
+ JOIN expedition e ON e.id = sl.`code`
+ JOIN ticket t ON t.id = e.ticketFk
+ WHERE t.routeFk
+ GROUP BY sl.scan_id
+ ) rs ON rs.scan_id = st.id
+ SET st.lastScanned = rs.lastScanned,
+ st.routeCount = rs.routeCount,
+ st.minRoute = rs.minRoute,
+ st.maxRoute = IF(rs.minRoute != rs.maxRoute, rs.maxRoute,NULL),
+ st.scanned = rs.scanned;
END ;;
DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ;
diff --git a/db/tests/vn/ticket_recalcComponents.spec.js b/db/tests/vn/ticket_recalcComponents.spec.js
index e140db34c..1256528e6 100644
--- a/db/tests/vn/ticket_recalcComponents.spec.js
+++ b/db/tests/vn/ticket_recalcComponents.spec.js
@@ -24,7 +24,7 @@ describe('ticket_recalcComponents()', () => {
let modifiedSales = stmts.push(stmt) - 1;
- stmt = new ParameterizedSQL('CALL vn.ticket_recalcComponents(?)', [
+ stmt = new ParameterizedSQL('CALL vn.ticket_recalcComponents(?, NULL)', [
ticketId,
]);
stmts.push(stmt);
diff --git a/db/tests/vn/zone_getFromGeo.spec.js b/db/tests/vn/zone_getFromGeo.spec.js
new file mode 100644
index 000000000..0dccf92cc
--- /dev/null
+++ b/db/tests/vn/zone_getFromGeo.spec.js
@@ -0,0 +1,28 @@
+const app = require('vn-loopback/server/server');
+const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
+
+describe('zone zone_getFromGeo()', () => {
+ it(`should check that there are some results in table zone`, async() => {
+ let stmts = [];
+ let stmt;
+
+ stmts.push('START TRANSACTION');
+ let geoFk = 17;
+
+ stmt = new ParameterizedSQL('CALL zone_getFromGeo(?)', [
+ geoFk,
+ ]);
+ stmts.push(stmt);
+
+ let tableIndex = stmts.push('SELECT count(*) countZone FROM tmp.zone WHERE id IN (1, 2, 3, 4, 5, 6, 7, 8)') - 1;
+
+ stmts.push('ROLLBACK');
+
+ let sql = ParameterizedSQL.join(stmts, ';');
+ let result = await app.models.Ticket.rawStmt(sql);
+
+ let [zoneTable] = result[tableIndex];
+
+ expect(zoneTable.countZone).toBe(8);
+ });
+});
diff --git a/db/tests/vn/zone_getLanded.spec.js b/db/tests/vn/zone_getLanded.spec.js
new file mode 100644
index 000000000..92c3f435b
--- /dev/null
+++ b/db/tests/vn/zone_getLanded.spec.js
@@ -0,0 +1,66 @@
+const app = require('vn-loopback/server/server');
+const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
+
+describe('zone zone_getLanded()', () => {
+ it(`should return data for a shipped in the past`, async() => {
+ let stmts = [];
+ let stmt;
+
+ stmts.push('START TRANSACTION');
+
+ let params = {
+ addressFk: 121,
+ agencyModeFk: 7,
+ warehouseFk: 1};
+
+ stmt = new ParameterizedSQL('CALL zone_getLanded(DATE_ADD(CURDATE(), INTERVAL -1 DAY), ?, ?, ?)', [
+ params.addressFk,
+ params.agencyModeFk,
+ params.warehouseFk
+
+ ]);
+ stmts.push(stmt);
+
+ let tableIndex = stmts.push('SELECT count(*) countZone FROM tmp.zoneGetLanded') - 1;
+
+ stmts.push('ROLLBACK');
+
+ let sql = ParameterizedSQL.join(stmts, ';');
+ let result = await app.models.Ticket.rawStmt(sql);
+
+ let [zoneTable] = result[tableIndex];
+
+ expect(zoneTable.countZone).toBe(1);
+ });
+
+ it(`should return data for a shipped tomorrow`, async() => {
+ let stmts = [];
+ let stmt;
+
+ stmts.push('START TRANSACTION');
+
+ let params = {
+ addressFk: 121,
+ agencyModeFk: 7,
+ warehouseFk: 1};
+
+ stmt = new ParameterizedSQL('CALL zone_getLanded(DATE_ADD(CURDATE(), INTERVAL +2 DAY), ?, ?, ?)', [
+ params.addressFk,
+ params.agencyModeFk,
+ params.warehouseFk
+
+ ]);
+ stmts.push(stmt);
+
+ let tableIndex = stmts.push('SELECT count(*) countZone FROM tmp.zoneGetLanded') - 1;
+
+ stmts.push('ROLLBACK');
+
+ let sql = ParameterizedSQL.join(stmts, ';');
+ let result = await app.models.Ticket.rawStmt(sql);
+
+ let [zoneTable] = result[tableIndex];
+
+ expect(zoneTable.countZone).toBe(1);
+ });
+});
diff --git a/e2e/dms/a87/4.txt b/e2e/dms/a87/4.txt
new file mode 100644
index 000000000..a46bfbeda
--- /dev/null
+++ b/e2e/dms/a87/4.txt
@@ -0,0 +1 @@
+File: 4.txt. It works!
\ No newline at end of file
diff --git a/e2e/helpers/extensions.js b/e2e/helpers/extensions.js
index 2484728f4..636819860 100644
--- a/e2e/helpers/extensions.js
+++ b/e2e/helpers/extensions.js
@@ -65,15 +65,6 @@ let actions = {
},
doLogin: async function(userName, password = 'nightmare') {
- await this.waitForSelector(`vn-login vn-textfield[ng-model="$ctrl.user"]`, {visible: true});
- await this.clearInput(`vn-login vn-textfield[ng-model="$ctrl.user"]`);
- await this.write(`vn-login vn-textfield[ng-model="$ctrl.user"]`, userName);
- await this.clearInput(`vn-login vn-textfield[ng-model="$ctrl.password"]`);
- await this.write(`vn-login vn-textfield[ng-model="$ctrl.password"]`, password);
- await this.waitToClick('vn-login button[type=submit]');
- },
-
- login: async function(userName) {
let state = await this.getState();
if (state != 'login') {
@@ -91,6 +82,16 @@ let actions = {
}
await this.waitForState('login');
+
+ await this.waitForSelector(`vn-login vn-textfield[ng-model="$ctrl.user"]`, {visible: true});
+ await this.clearInput(`vn-login vn-textfield[ng-model="$ctrl.user"]`);
+ await this.write(`vn-login vn-textfield[ng-model="$ctrl.user"]`, userName);
+ await this.clearInput(`vn-login vn-textfield[ng-model="$ctrl.password"]`);
+ await this.write(`vn-login vn-textfield[ng-model="$ctrl.password"]`, password);
+ await this.waitToClick('vn-login button[type=submit]');
+ },
+
+ login: async function(userName) {
await this.doLogin(userName);
await this.waitForState('home');
},
@@ -114,10 +115,11 @@ let actions = {
},
gotoState: async function(state, params) {
- return await this.evaluate((state, params) => {
+ await this.evaluate((state, params) => {
let $state = angular.element(document.body).injector().get('$state');
return $state.go(state, params);
}, state, params);
+ await this.waitForSpinnerLoad();
},
waitForState: async function(state) {
@@ -125,7 +127,7 @@ let actions = {
let $state = angular.element(document.body).injector().get('$state');
return !$state.transition && $state.is(state);
}, {}, state);
- await this.waitForSpinnerLoad(state);
+ await this.waitForSpinnerLoad();
},
waitForTransition: async function() {
@@ -133,6 +135,7 @@ let actions = {
const $state = angular.element(document.body).injector().get('$state');
return !$state.transition;
});
+ await this.waitForSpinnerLoad();
},
accessToSection: async function(state) {
@@ -142,7 +145,11 @@ let actions = {
}, state);
if (nested) {
- await this.waitToClick('vn-left-menu vn-item-section > vn-icon[icon=keyboard_arrow_down]');
+ let selector = 'vn-left-menu vn-item-section > vn-icon[icon=keyboard_arrow_down]';
+ await this.evaluate(selector => {
+ document.querySelector(selector).scrollIntoViewIfNeeded();
+ }, selector);
+ await this.waitToClick(selector);
await this.wait('vn-left-menu .expanded');
}
@@ -167,11 +174,17 @@ let actions = {
await this.waitToClick(`vn-left-menu li > a[ui-sref="${sectionRoute}"]`);
},
- accessToSearchResult: async function(searchValue) {
+ doSearch: async function(searchValue) {
await this.clearInput('vn-searchbar');
- await this.write('vn-searchbar', searchValue);
+ if (searchValue)
+ await this.write('vn-searchbar', searchValue);
+
await this.waitToClick('vn-searchbar vn-icon[icon="search"]');
await this.waitForTransition();
+ },
+
+ accessToSearchResult: async function(searchValue) {
+ await this.doSearch(searchValue);
await this.waitFor('.vn-descriptor');
},
@@ -181,6 +194,12 @@ let actions = {
}, selector, property);
},
+ getClassName: async function(selector) {
+ const element = await this.$(selector);
+ const handle = await element.getProperty('className');
+ return await handle.jsonValue();
+ },
+
waitPropertyLength: async function(selector, property, minLength) {
await this.waitForFunction((selector, property, minLength) => {
const element = document.querySelector(selector);
@@ -228,6 +247,11 @@ let actions = {
await this.waitForTextInField(selector, text);
},
+ overwrite: async function(selector, text) {
+ await this.clearInput(selector);
+ await this.write(selector, text);
+ },
+
waitToClick: async function(selector) {
await this.waitForSelector(selector);
await this.waitForFunction(checkVisibility, {}, selector);
@@ -335,28 +359,41 @@ let actions = {
hideSnackbar: async function() {
// Holds up for the snackbar to be visible for a small period of time.
- if (process.env.DEBUG)
+ if (process.env.E2E_DEBUG)
await this.waitFor(300);
await this.evaluate(() => {
- let hideButton = document.querySelector('#shapes .shown button');
+ let hideButton = document
+ .querySelector('vn-snackbar .shape.shown button');
if (hideButton)
- return document.querySelector('#shapes .shown button').click();
+ return hideButton.click();
});
- await this.waitFor('#shapes > .shape', {hidden: true});
+ await this.waitFor('vn-snackbar .shape.shown', {hidden: true});
},
- waitForLastSnackbar: async function() {
- const selector = 'vn-snackbar .shown .text';
-
+ waitForSnackbar: async function() {
+ const selector = 'vn-snackbar .shape.shown';
await this.waitForSelector(selector);
- let snackBarText = await this.evaluate(selector => {
- const shape = document.querySelector(selector);
- return shape.innerText;
+ let message = await this.evaluate(selector => {
+ const shape = document.querySelector(selector);
+ const message = {
+ text: shape.querySelector('.text').innerText
+ };
+
+ const types = ['error', 'success'];
+ for (let type of types) {
+ if (shape.classList.contains(type)) {
+ message.type = type;
+ break;
+ }
+ }
+
+ return message;
}, selector);
+
await this.hideSnackbar();
- return snackBarText;
+ return message;
},
pickDate: async function(selector, date) {
@@ -438,7 +475,6 @@ let actions = {
.includes(searchValue.toLowerCase());
}, {}, builtSelector, searchValue);
- await this.waitForMutation('.vn-drop-down', 'childList');
await this.waitFor('.vn-drop-down', {hidden: true});
},
@@ -546,7 +582,7 @@ let actions = {
},
waitForContentLoaded: async function() {
- // await this.waitFor(250);
+ await this.waitForSpinnerLoad();
}
};
diff --git a/e2e/helpers/puppeteer.js b/e2e/helpers/puppeteer.js
index 67f9da427..02ef82b1b 100644
--- a/e2e/helpers/puppeteer.js
+++ b/e2e/helpers/puppeteer.js
@@ -9,10 +9,14 @@ export async function getBrowser() {
`--window-size=${ 1920 },${ 1080 }`
];
- if (process.env.DEBUG)
- args.push('--auto-open-devtools-for-tabs');
+ let env = process.env;
- const headless = !(process.env.E2E_SHOW || process.env.DEBUG);
+ if (env.E2E_DEBUG) {
+ args.push('--auto-open-devtools-for-tabs');
+ env.E2E_SHOW = true;
+ }
+
+ const headless = !env.E2E_SHOW;
const browser = await Puppeteer.launch({
args,
defaultViewport: null,
diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js
index 826f5b6ec..6ec1d8ebe 100644
--- a/e2e/helpers/selectors.js
+++ b/e2e/helpers/selectors.js
@@ -2,6 +2,8 @@
export default {
globalItems: {
applicationsMenuButton: '#apps',
+ userMenuButton: '#user',
+ logoutButton: '#logout',
applicationsMenuVisible: '.modules-menu',
clientsButton: '.modules-menu > li[ui-sref="client.index"]',
itemsButton: '.modules-menu > li[ui-sref="item.index"]',
@@ -10,7 +12,6 @@ export default {
claimsButton: '.modules-menu > li[ui-sref="claim.index"]',
returnToModuleIndexButton: 'a[ui-sref="order.index"]',
homeButton: 'vn-topbar > div.side.start > a',
- userMenuButton: '#user',
userLocalWarehouse: '.user-popover vn-autocomplete[ng-model="$ctrl.localWarehouseFk"]',
userLocalBank: '.user-popover vn-autocomplete[ng-model="$ctrl.localBankFk"]',
userLocalCompany: '.user-popover vn-autocomplete[ng-model="$ctrl.localCompanyFk"]',
@@ -99,7 +100,6 @@ export default {
receivedCoreVNLCheckbox: 'vn-client-billing-data vn-check[label="Received core VNL"]',
receivedB2BVNLCheckbox: 'vn-client-billing-data vn-check[label="Received B2B VNL"]',
swiftBic: 'vn-client-billing-data vn-autocomplete[ng-model="$ctrl.client.bankEntityFk"]',
- clearswiftBicButton: 'vn-client-billing-data vn-autocomplete[ng-model="$ctrl.client.bankEntityFk"] .icons > vn-icon[icon=clear]',
newBankEntityButton: 'vn-client-billing-data vn-icon-button[vn-tooltip="New bank entity"] > button',
newBankEntityName: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.newBankEntity.name"]',
newBankEntityBIC: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.newBankEntity.bic"]',
@@ -178,12 +178,11 @@ export default {
},
clientBalance: {
- balanceButton: 'vn-left-menu a[ui-sref="client.card.balance.index"]',
company: 'vn-client-balance-index vn-autocomplete[ng-model="$ctrl.companyId"]',
newPaymentButton: `vn-float-button`,
newPaymentBank: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.receipt.bankFk"]',
newPaymentAmount: '.vn-dialog.shown vn-input-number[ng-model="$ctrl.receipt.amountPaid"]',
- saveButton: '.vn-dialog.shown vn-button[label="Save"]',
+ saveButton: '.vn-dialog.shown [response="accept"]',
firstBalanceLine: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(8)'
},
@@ -338,8 +337,8 @@ export default {
},
itemDiary: {
secondTicketId: 'vn-item-diary vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(2) > span',
+ fourthBalance: 'vn-item-diary vn-tbody > vn-tr:nth-child(4) > vn-td.balance > span',
firstBalance: 'vn-item-diary vn-tbody > vn-tr:nth-child(1) > vn-td.balance',
- fourthBalance: 'vn-item-diary vn-tbody > vn-tr:nth-child(4) > vn-td.balance',
warehouse: 'vn-item-diary vn-autocomplete[ng-model="$ctrl.warehouseFk"]',
},
itemLog: {
@@ -352,10 +351,10 @@ export default {
route: 'vn-ticket-summary vn-label-value[label="Route"] > section > span > span',
total: 'vn-ticket-summary vn-one.taxes > p:nth-child(3) > strong',
sale: 'vn-ticket-summary [name="sales"] vn-table > div > vn-tbody > vn-tr',
- firstSaleItemId: 'vn-ticket-summary [name="sales"] vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > span',
+ firstSaleItemId: 'vn-ticket-summary [name="sales"] vn-table vn-tbody > :nth-child(1) > vn-td:nth-child(2) > span',
firstSaleDescriptorImage: '.vn-popover.shown vn-item-descriptor img',
itemDescriptorPopover: '.vn-popover.shown vn-item-descriptor',
- itemDescriptorPopoverItemDiaryButton: 'vn-item-descriptor a[href="#!/item/2/diary?warehouseFk=5&ticketFk=20"]',
+ itemDescriptorPopoverItemDiaryButton: 'vn-item-descriptor a[href="#!/item/2/diary?warehouseFk=5&lineFk=16"]',
popoverDiaryButton: '.vn-popover.shown vn-item-descriptor vn-icon[icon="icon-transaction"]',
firstSaleQuantity: 'vn-ticket-summary [name="sales"] vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3)',
firstSaleDiscount: 'vn-ticket-summary [name="sales"] vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6)',
@@ -373,17 +372,17 @@ export default {
payoutButton: 'vn-ticket-index vn-button[icon="icon-recovery"]',
payoutCompany: '.vn-dialog vn-autocomplete[ng-model="$ctrl.receipt.companyFk"]',
payoutBank: '.vn-dialog vn-autocomplete[ng-model="$ctrl.receipt.bankFk"]',
- submitPayout: '.vn-dialog vn-button[label="Save"]',
+ submitPayout: '.vn-dialog button[response="accept"]',
searchWeeklyResult: 'vn-ticket-weekly-index vn-table vn-tbody > vn-tr',
searchResultDate: 'vn-ticket-summary [label=Landed] span',
topbarSearch: 'vn-searchbar',
advancedSearchButton: 'vn-ticket-search-panel button[type=submit]',
searchButton: 'vn-searchbar vn-icon[icon="search"]',
- searchWeeklyButton: 'vn-searchbar vn-icon[icon="search"]',
moreMenu: 'vn-ticket-index vn-icon-menu[icon=more_vert]',
sixthWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tr:nth-child(6)',
weeklyTicket: 'vn-ticket-weekly-index vn-table > div > vn-tbody > vn-tr',
firstWeeklyTicketDeleteIcon: 'vn-ticket-weekly-index vn-tr:nth-child(1) vn-icon-button[icon="delete"]',
+ firstWeeklyTicketAgency: 'vn-ticket-weekly-index vn-tr:nth-child(1) [ng-model="weekly.agencyModeFk"]',
acceptDeleteTurn: '.vn-confirm.shown button[response="accept"]'
},
createTicketView: {
@@ -436,7 +435,6 @@ export default {
firstQuantity: 'vn-ticket-package vn-horizontal:nth-child(1) vn-input-number[ng-model="package.quantity"]',
firstRemovePackageButton: 'vn-icon-button[vn-tooltip="Remove package"]',
addPackageButton: 'vn-icon-button[vn-tooltip="Add package"]',
- clearPackageAutocompleteButton: 'vn-autocomplete[label="Package"] .icons > vn-icon[icon=clear]',
savePackagesButton: `button[type=submit]`
},
ticketSales: {
@@ -461,7 +459,6 @@ export default {
firstSaleZoomedImage: 'body > div > div > img',
firstSaleQuantity: 'vn-ticket-sale [ng-model="sale.quantity"]',
firstSaleQuantityCell: 'vn-ticket-sale vn-tr:nth-child(1) > vn-td-editable:nth-child(5)',
- firstSaleQuantityClearInput: 'vn-textfield[ng-model="sale.quantity"] div.suffix > i',
firstSaleIdAutocomplete: 'vn-ticket-sale vn-table vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(4) > vn-autocomplete',
firstSalePrice: 'vn-ticket-sale vn-table vn-tr:nth-child(1) > vn-td:nth-child(7) > span',
firstSalePriceInput: '.vn-popover.shown [ng-model="$ctrl.editedPrice"]',
@@ -491,7 +488,6 @@ export default {
deleteSaleButton: 'vn-ticket-sale vn-tool-bar > vn-button[icon="delete"]',
transferSaleButton: 'vn-ticket-sale vn-tool-bar > vn-button[icon="call_split"]',
moveToTicketInput: '.vn-popover.shown vn-textfield[ng-model="$ctrl.transfer.ticketId"]',
- moveToTicketInputClearButton: '.vn-popover.shown i[title="Clear"]',
moveToTicketButton: '.vn-popover.shown vn-icon[icon="arrow_forward_ios"]',
moveToNewTicketButton: '.vn-popover.shown vn-button[label="New ticket"]',
acceptDeleteLineButton: '.vn-confirm.shown button[response=accept]',
@@ -545,8 +541,8 @@ export default {
firstPrice: 'vn-ticket-service vn-horizontal:nth-child(1) vn-input-number[ng-model="service.price"]',
firstVatType: 'vn-ticket-service vn-autocomplete[label="Tax class"]',
fistDeleteServiceButton: 'vn-ticket-service form vn-horizontal:nth-child(1) vn-icon-button[icon="delete"]',
- newServiceTypeName: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.newServiceType.name"]',
- newServiceTypeExpense: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.newServiceType.expenseFk"]',
+ newServiceTypeName: '.vn-dialog.shown vn-textfield[ng-model="newServiceType.name"]',
+ newServiceTypeExpense: '.vn-dialog.shown vn-autocomplete[ng-model="newServiceType.expenseFk"]',
serviceLine: 'vn-ticket-service > form > vn-card > vn-one:nth-child(2) > vn-horizontal',
saveServiceButton: 'button[type=submit]',
saveServiceTypeButton: '.vn-dialog.shown tpl-buttons > button'
@@ -554,7 +550,6 @@ export default {
createStateView: {
state: 'vn-autocomplete[ng-model="$ctrl.stateFk"]',
worker: 'vn-autocomplete[ng-model="$ctrl.workerFk"]',
- clearStateInputButton: 'vn-autocomplete[ng-model="$ctrl.stateFk"] .icons > vn-icon[icon=clear]',
saveStateButton: `button[type=submit]`
},
claimsIndex: {
diff --git a/e2e/paths/01-login/01_login.spec.js b/e2e/paths/01-login/01_login.spec.js
index 6b101b00b..ed507df4e 100644
--- a/e2e/paths/01-login/01_login.spec.js
+++ b/e2e/paths/01-login/01_login.spec.js
@@ -1,3 +1,4 @@
+import selectors from '../../helpers/selectors';
import getBrowser from '../../helpers/puppeteer';
describe('Login path', async() => {
@@ -13,41 +14,54 @@ describe('Login path', async() => {
});
describe('Bad login', async() => {
- it('should receive an error when the username is incorrect', async() => {
- await page.doLogin('badUser', '');
- const result = await page.waitForLastSnackbar();
+ it('should receive an error when the password is invalid', async() => {
+ await page.doLogin('employee', 'badPassword');
+ const message = await page.waitForSnackbar();
const state = await page.getState();
- expect(result.length).toBeGreaterThan(0);
+ expect(message.type).toBe('error');
+ expect(state).toBe('login');
+ });
+
+ it('should receive an error when the username is invalid', async() => {
+ await page.doLogin('badUser', '');
+ const message = await page.waitForSnackbar();
+ const state = await page.getState();
+
+ expect(message.type).toBe('error');
expect(state).toBe('login');
});
it('should receive an error when the username is blank', async() => {
await page.doLogin('', '');
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
const state = await page.getState();
- expect(result.length).toBeGreaterThan(0);
- expect(state).toBe('login');
- });
-
- it('should receive an error when the password is incorrect', async() => {
- await page.doLogin('employee', 'badPassword');
- const result = await page.waitForLastSnackbar();
- const state = await page.getState();
-
- expect(result.length).toBeGreaterThan(0);
+ expect(message.type).toBe('error');
expect(state).toBe('login');
});
});
describe('Successful login', async() => {
- it('should log in', async() => {
- await page.doLogin('employee', 'nightmare');
- await page.waitForNavigation();
+ it('should log in and go to home state', async() => {
+ await page.doLogin('employee');
+ await page.waitFor('vn-home');
const state = await page.getState();
expect(state).toBe('home');
});
});
+
+ describe('Logout', async() => {
+ it('should logout and return to login state', async() => {
+ await page.doLogin('employee');
+
+ await page.waitToClick(selectors.globalItems.userMenuButton);
+ await page.waitToClick(selectors.globalItems.logoutButton);
+ await page.waitFor('vn-login');
+ const state = await page.getState();
+
+ expect(state).toBe('login');
+ });
+ });
});
diff --git a/e2e/paths/02-client/01_create_client.spec.js b/e2e/paths/02-client/01_create_client.spec.js
index 0b8c96c16..2fdc4b091 100644
--- a/e2e/paths/02-client/01_create_client.spec.js
+++ b/e2e/paths/02-client/01_create_client.spec.js
@@ -1,9 +1,10 @@
import selectors from '../../helpers/selectors';
import getBrowser from '../../helpers/puppeteer';
-describe('Client create path', async() => {
+describe('Client create path', () => {
let browser;
let page;
+
beforeAll(async() => {
browser = await getBrowser();
page = browser.page;
@@ -15,9 +16,7 @@ describe('Client create path', async() => {
});
it(`should search for the user Carol Danvers to confirm it isn't created yet`, async() => {
- await page.write(selectors.clientsIndex.topbarSearch, 'Carol Danvers');
- await page.waitToClick(selectors.clientsIndex.searchButton);
- await page.waitForNumberOfElements(selectors.clientsIndex.searchResult, 0);
+ await page.doSearch('Carol Danvers');
const result = await page.countElement(selectors.clientsIndex.searchResult);
expect(result).toEqual(0);
@@ -30,9 +29,9 @@ describe('Client create path', async() => {
it('should receive an error when clicking the create button having all the form fields empty', async() => {
await page.waitToClick(selectors.createClientView.createButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Some fields are invalid');
+ expect(message.text).toBe('Some fields are invalid');
});
it('should receive an error when clicking the create button having name and Business name fields empty', async() => {
@@ -41,9 +40,9 @@ describe('Client create path', async() => {
await page.write(selectors.createClientView.email, 'CarolDanvers@verdnatura.es');
await page.autocompleteSearch(selectors.createClientView.salesPerson, 'replenisher');
await page.waitToClick(selectors.createClientView.createButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Some fields are invalid');
+ expect(message.text).toBe('Some fields are invalid');
});
it(`should attempt to create a new user with all it's data but wrong email`, async() => {
@@ -57,9 +56,9 @@ describe('Client create path', async() => {
await page.clearInput(selectors.createClientView.email);
await page.write(selectors.createClientView.email, 'incorrect email format');
await page.waitToClick(selectors.createClientView.createButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Some fields are invalid');
+ expect(message.text).toBe('Some fields are invalid');
});
it(`should attempt to create a new user with all it's data but wrong postal code`, async() => {
@@ -68,9 +67,9 @@ describe('Client create path', async() => {
await page.clearInput(selectors.createClientView.postcode);
await page.write(selectors.createClientView.postcode, '479999');
await page.waitToClick(selectors.createClientView.createButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual(`The postcode doesn't exist. Please enter a correct one`);
+ expect(message.text).toBe(`The postcode doesn't exist. Please enter a correct one`);
});
it(`should check for autocompleted city, province and country`, async() => {
@@ -92,9 +91,9 @@ describe('Client create path', async() => {
await page.clearInput(selectors.createClientView.postcode);
await page.write(selectors.createClientView.postcode, '46000');
await page.waitToClick(selectors.createClientView.createButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should click on the Clients button of the top bar menu', async() => {
diff --git a/e2e/paths/02-client/02_edit_basic_data.spec.js b/e2e/paths/02-client/02_edit_basic_data.spec.js
index 6ae512542..2e53a6ef8 100644
--- a/e2e/paths/02-client/02_edit_basic_data.spec.js
+++ b/e2e/paths/02-client/02_edit_basic_data.spec.js
@@ -35,9 +35,9 @@ describe('Client Edit basicData path', () => {
await page.write(selectors.clientBasicData.email, 'PWallace@verdnatura.es');
await page.autocompleteSearch(selectors.clientBasicData.channel, 'Rumors on the streets');
await page.waitToClick(selectors.clientBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the name have been edited', async() => {
@@ -99,9 +99,9 @@ describe('Client Edit basicData path', () => {
await page.autocompleteSearch(selectors.clientBasicData.salesPerson, 'replenisherNick');
await page.autocompleteSearch(selectors.clientBasicData.channel, 'Metropolis newspaper');
await page.waitToClick(selectors.clientBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should now confirm the name have been edited', async() => {
diff --git a/e2e/paths/02-client/03_edit_fiscal_data.spec.js b/e2e/paths/02-client/03_edit_fiscal_data.spec.js
index 10a29cdfa..978627a60 100644
--- a/e2e/paths/02-client/03_edit_fiscal_data.spec.js
+++ b/e2e/paths/02-client/03_edit_fiscal_data.spec.js
@@ -78,9 +78,9 @@ describe('Client Edit fiscalData path', () => {
await page.waitToClick(selectors.clientFiscalData.verifiedDataCheckbox);
await page.waitToClick(selectors.clientFiscalData.saveButton);
await page.waitToClick(selectors.clientFiscalData.acceptDuplicationButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Invalid Tax number');
+ expect(message.text).toBe('Invalid Tax number');
});
it(`should edit the fiscal this time with a valid fiscal id`, async() => {
@@ -88,16 +88,16 @@ describe('Client Edit fiscalData path', () => {
await page.write(selectors.clientFiscalData.fiscalId, '94980061C');
await page.waitToClick(selectors.clientFiscalData.saveButton);
await page.waitToClick(selectors.clientFiscalData.acceptDuplicationButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should propagate the Equalization tax', async() => {
await page.waitToClick(selectors.clientFiscalData.acceptPropagationButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Equivalent tax spreaded');
+ expect(message.text).toBe('Equivalent tax spreaded');
});
it('should receive an error if the fiscal id contains A or B at the beginning', async() => {
@@ -105,18 +105,18 @@ describe('Client Edit fiscalData path', () => {
await page.clearInput(selectors.clientFiscalData.fiscalId);
await page.write(selectors.clientFiscalData.fiscalId, 'A94980061C');
await page.waitToClick(selectors.clientFiscalData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Cannot check Equalization Tax in this NIF/CIF');
+ expect(message.text).toBe('Cannot check Equalization Tax in this NIF/CIF');
});
it('should finally edit the fixcal data correctly as VIES isnt checked and fiscal id is valid for EQtax', async() => {
await page.clearInput(selectors.clientFiscalData.fiscalId);
await page.write(selectors.clientFiscalData.fiscalId, '94980061C');
await page.waitToClick(selectors.clientFiscalData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
// confirm all addresses have now EQtax checked step 1
@@ -150,17 +150,17 @@ describe('Client Edit fiscalData path', () => {
await page.waitToClick(selectors.clientFiscalData.invoiceByAddressCheckbox);
await page.waitToClick(selectors.clientFiscalData.equalizationTaxCheckbox);
await page.waitToClick(selectors.clientFiscalData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should propagate the Equalization tax changes', async() => {
await page.waitFor(1000);
await page.waitToClick(selectors.clientFiscalData.acceptPropagationButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Equivalent tax spreaded');
+ expect(message.text).toBe('Equivalent tax spreaded');
});
it('should confirm its name have been edited', async() => {
@@ -266,9 +266,9 @@ describe('Client Edit fiscalData path', () => {
await page.waitForTextInField(selectors.clientAddresses.city, 'Silla');
await page.waitToClick(selectors.clientAddresses.equalizationTaxCheckbox);
await page.waitToClick(selectors.clientAddresses.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
// confirm invoice by address checkbox gets checked if the EQtax differs between addresses step 3
diff --git a/e2e/paths/02-client/04_edit_billing_data.spec.js b/e2e/paths/02-client/04_edit_billing_data.spec.js
index b757940be..394324509 100644
--- a/e2e/paths/02-client/04_edit_billing_data.spec.js
+++ b/e2e/paths/02-client/04_edit_billing_data.spec.js
@@ -26,25 +26,26 @@ describe('Client Edit billing data path', () => {
await page.waitToClick(selectors.clientBillingData.receivedCoreVNLCheckbox);
await page.waitToClick(selectors.clientBillingData.receivedB2BVNLCheckbox);
await page.waitToClick(selectors.clientBillingData.saveButton);
- let snackbarMessage = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(snackbarMessage).toEqual('That payment method requires an IBAN');
+ expect(message.text).toBe('That payment method requires an IBAN');
});
- it(`should create a new BIC code`, async() => {
+ // 2215: Windows (hidden mode): Entity code doesn't get the focus, '9999' is written in entity name.
+ xit(`should create a new BIC code`, async() => {
await page.waitToClick(selectors.clientBillingData.newBankEntityButton);
await page.write(selectors.clientBillingData.newBankEntityName, 'Gotham City Bank');
await page.write(selectors.clientBillingData.newBankEntityCode, '9999');
await page.write(selectors.clientBillingData.newBankEntityBIC, 'GTHMCT');
await page.waitToClick(selectors.clientBillingData.acceptBankEntityButton);
await page.waitForTextInField(selectors.clientBillingData.swiftBic, 'Gotham City Bank');
- let newcode = await page.waitToGetProperty(selectors.clientBillingData.swiftBic, 'value');
+ const newcode = await page.waitToGetProperty(selectors.clientBillingData.swiftBic, 'value');
expect(newcode).toEqual('GTHMCT Gotham City Bank');
});
- it(`should confirm the IBAN pay method was sucessfully saved`, async() => {
- let payMethod = await page.waitToGetProperty(selectors.clientBillingData.payMethod, 'value');
+ xit(`should confirm the IBAN pay method was sucessfully saved`, async() => {
+ const payMethod = await page.waitToGetProperty(selectors.clientBillingData.payMethod, 'value');
expect(payMethod).toEqual('PayMethod with IBAN');
});
@@ -60,46 +61,45 @@ describe('Client Edit billing data path', () => {
});
it(`should save the form with all its new data`, async() => {
- await page.waitFor(3000);
await page.waitForWatcherData(selectors.clientBillingData.watcher);
await page.waitToClick(selectors.clientBillingData.saveButton);
- let snackbarMessage = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(snackbarMessage).toEqual('Notification sent!');
+ expect(message.text).toBe('Notification sent!');
});
it('should confirm the due day have been edited', async() => {
- let dueDate = await page.waitToGetProperty(selectors.clientBillingData.dueDay, 'value');
+ const dueDate = await page.waitToGetProperty(selectors.clientBillingData.dueDay, 'value');
expect(dueDate).toEqual('60');
});
it('should confirm the IBAN was saved', async() => {
- let IBAN = await page.waitToGetProperty(selectors.clientBillingData.IBAN, 'value');
+ const IBAN = await page.waitToGetProperty(selectors.clientBillingData.IBAN, 'value');
expect(IBAN).toEqual('ES9121000418450200051332');
});
it('should confirm the swift / BIC code was saved', async() => {
- let code = await page.waitToGetProperty(selectors.clientBillingData.swiftBic, 'value');
+ const code = await page.waitToGetProperty(selectors.clientBillingData.swiftBic, 'value');
expect(code).toEqual('CAIXESBB Caixa Bank');
});
it('should confirm Received LCR checkbox is checked', async() => {
- let result = await page.checkboxState(selectors.clientBillingData.receivedCoreLCRCheckbox);
+ const result = await page.checkboxState(selectors.clientBillingData.receivedCoreLCRCheckbox);
expect(result).toBe('checked');
});
it('should confirm Received core VNL checkbox is unchecked', async() => {
- let result = await page.checkboxState(selectors.clientBillingData.receivedCoreVNLCheckbox);
+ const result = await page.checkboxState(selectors.clientBillingData.receivedCoreVNLCheckbox);
expect(result).toBe('unchecked');
});
it('should confirm Received B2B VNL checkbox is unchecked', async() => {
- let result = await page.checkboxState(selectors.clientBillingData.receivedB2BVNLCheckbox);
+ const result = await page.checkboxState(selectors.clientBillingData.receivedB2BVNLCheckbox);
expect(result).toBe('unchecked');
});
diff --git a/e2e/paths/02-client/05_add_address.spec.js b/e2e/paths/02-client/05_add_address.spec.js
index f22798453..2fe238fea 100644
--- a/e2e/paths/02-client/05_add_address.spec.js
+++ b/e2e/paths/02-client/05_add_address.spec.js
@@ -28,9 +28,9 @@ describe('Client Add address path', () => {
await page.write(selectors.clientAddresses.phone, '999887744');
await page.write(selectors.clientAddresses.mobileInput, '999887744');
await page.waitToClick(selectors.clientFiscalData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Some fields are invalid');
+ expect(message.text).toBe('Some fields are invalid');
});
it('should confirm that the city and province are propertly filled', async() => {
@@ -48,25 +48,25 @@ describe('Client Add address path', () => {
await page.write(selectors.clientAddresses.consignee, 'Bruce Bunner');
await page.write(selectors.clientAddresses.streetAddress, '320 Park Avenue New York');
await page.waitToClick(selectors.clientAddresses.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Incoterms is required for a non UEE member');
+ expect(message.text).toBe('Incoterms is required for a non UEE member');
});
it(`should receive an error after clicking save button as customsAgent is empty`, async() => {
await page.autocompleteSearch(selectors.clientAddresses.incoterms, 'Free Alongside Ship');
await page.waitToClick(selectors.clientAddresses.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Customs agent is required for a non UEE member');
+ expect(message.text).toBe('Customs agent is required for a non UEE member');
});
it(`should create a new address with all it's data`, async() => {
await page.autocompleteSearch(selectors.clientAddresses.customsAgent, 'Agent one');
await page.waitToClick(selectors.clientAddresses.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should navigate back to the addresses index`, async() => {
@@ -82,9 +82,9 @@ describe('Client Add address path', () => {
it('should click on the make default icon of the second address', async() => {
await page.waitToClick(selectors.clientAddresses.secondMakeDefaultStar);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the default address is the expected one`, async() => {
@@ -104,9 +104,9 @@ describe('Client Add address path', () => {
await page.waitForWatcherData(selectors.clientAddresses.watcher);
await page.waitToClick(selectors.clientAddresses.activeCheckbox);
await page.waitToClick(selectors.clientAddresses.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('The default consignee can not be unchecked');
+ expect(message.text).toBe('The default consignee can not be unchecked');
});
it(`should go back to the addreses section by clicking the cancel button`, async() => {
diff --git a/e2e/paths/02-client/06_add_address_notes.spec.js b/e2e/paths/02-client/06_add_address_notes.spec.js
index abfa1ae34..bf367f5ae 100644
--- a/e2e/paths/02-client/06_add_address_notes.spec.js
+++ b/e2e/paths/02-client/06_add_address_notes.spec.js
@@ -26,18 +26,18 @@ describe('Client add address notes path', () => {
await page.waitToClick(selectors.clientAddresses.addObservationButton);
await page.write(selectors.clientAddresses.firstObservationDescription, 'first description');
await page.waitToClick(selectors.clientAddresses.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Some fields are invalid');
+ expect(message.text).toBe('Some fields are invalid');
});
it('should not save an observation type without description', async() => {
await page.clearInput(selectors.clientAddresses.firstObservationDescription);
await page.autocompleteSearch(selectors.clientAddresses.firstObservationType, 'comercial');
await page.waitToClick(selectors.clientAddresses.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Some fields are invalid');
+ expect(message.text).toBe('Some fields are invalid');
});
it('should create two new observations', async() => {
@@ -46,8 +46,8 @@ describe('Client add address notes path', () => {
await page.autocompleteSearch(selectors.clientAddresses.secondObservationType, 'observation one');
await page.write(selectors.clientAddresses.secondObservationDescription, 'second description');
await page.waitToClick(selectors.clientAddresses.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
});
diff --git a/e2e/paths/02-client/07_edit_web_access.spec.js b/e2e/paths/02-client/07_edit_web_access.spec.js
index f9b023716..95886f57c 100644
--- a/e2e/paths/02-client/07_edit_web_access.spec.js
+++ b/e2e/paths/02-client/07_edit_web_access.spec.js
@@ -21,16 +21,14 @@ describe('Client Edit web access path', () => {
await page.clearInput(selectors.clientWebAccess.userName);
await page.write(selectors.clientWebAccess.userName, 'Hulk');
await page.waitToClick(selectors.clientWebAccess.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm web access is now unchecked', async() => {
- await page.waitToClick(selectors.clientBasicData.basicDataButton);
- await page.wait(selectors.clientBasicData.name);
- await page.waitToClick(selectors.clientsIndex.othersButton);
- await page.waitToClick(selectors.clientWebAccess.webAccessButton);
+ await page.accessToSection('client.card.basicData');
+ await page.accessToSection('client.card.webAccess');
const result = await page.checkboxState(selectors.clientWebAccess.enableWebAccessCheckbox);
expect(result).toBe('unchecked');
diff --git a/e2e/paths/02-client/08_add_notes.spec.js b/e2e/paths/02-client/08_add_notes.spec.js
index 3d6a8a915..d0b117ac9 100644
--- a/e2e/paths/02-client/08_add_notes.spec.js
+++ b/e2e/paths/02-client/08_add_notes.spec.js
@@ -29,9 +29,9 @@ describe('Client Add notes path', () => {
await page.waitFor(selectors.clientNotes.note);
await page.type(`${selectors.clientNotes.note} textarea`, 'Meeting with Black Widow 21st 9am');
await page.waitToClick(selectors.clientNotes.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the note was created', async() => {
diff --git a/e2e/paths/02-client/09_add_credit.spec.js b/e2e/paths/02-client/09_add_credit.spec.js
index 639d850f6..8d1c9be1c 100644
--- a/e2e/paths/02-client/09_add_credit.spec.js
+++ b/e2e/paths/02-client/09_add_credit.spec.js
@@ -25,9 +25,9 @@ describe('Client Add credit path', () => {
await page.clearInput(selectors.clientCredit.credit);
await page.write(selectors.clientCredit.credit, '999');
await page.waitToClick(selectors.clientCredit.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the credit was updated', async() => {
diff --git a/e2e/paths/02-client/10_add_greuge.spec.js b/e2e/paths/02-client/10_add_greuge.spec.js
index 1dda319be..b7e130683 100644
--- a/e2e/paths/02-client/10_add_greuge.spec.js
+++ b/e2e/paths/02-client/10_add_greuge.spec.js
@@ -24,9 +24,9 @@ describe('Client Add greuge path', () => {
it(`should receive an error if all fields are empty but date and type on submit`, async() => {
await page.autocompleteSearch(selectors.clientGreuge.type, 'Diff');
await page.waitToClick(selectors.clientGreuge.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Some fields are invalid');
+ expect(message.text).toBe('Some fields are invalid');
});
it(`should create a new greuge with all its data`, async() => {
@@ -34,9 +34,9 @@ describe('Client Add greuge path', () => {
await page.waitForTextInField(selectors.clientGreuge.amount, '999');
await page.write(selectors.clientGreuge.description, 'new armor for Batman!');
await page.waitToClick(selectors.clientGreuge.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the greuge was added to the list', async() => {
diff --git a/e2e/paths/02-client/12_lock_of_verified_data.spec.js b/e2e/paths/02-client/12_lock_of_verified_data.spec.js
index c8e590c34..79a9e17ac 100644
--- a/e2e/paths/02-client/12_lock_of_verified_data.spec.js
+++ b/e2e/paths/02-client/12_lock_of_verified_data.spec.js
@@ -30,9 +30,9 @@ describe('Client lock verified data path', () => {
await page.clearInput(selectors.clientFiscalData.socialName);
await page.write(selectors.clientFiscalData.socialName, 'Captain America Civil War');
await page.waitToClick(selectors.clientFiscalData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the social name have been edited', async() => {
@@ -60,9 +60,9 @@ describe('Client lock verified data path', () => {
await page.waitToClick(selectors.clientFiscalData.verifiedDataCheckbox);
await page.waitToClick(selectors.clientFiscalData.saveButton);
await page.waitToClick(selectors.clientFiscalData.acceptDuplicationButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm Verified data checkbox is checked', async() => {
@@ -77,9 +77,9 @@ describe('Client lock verified data path', () => {
await page.clearInput(selectors.clientFiscalData.socialName);
await page.write(selectors.clientFiscalData.socialName, 'Ant man and the Wasp');
await page.waitToClick(selectors.clientFiscalData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should again confirm the social name have been edited', async() => {
@@ -107,9 +107,9 @@ describe('Client lock verified data path', () => {
await page.clearInput(selectors.clientFiscalData.socialName);
await page.write(selectors.clientFiscalData.socialName, 'This wont happen');
await page.waitToClick(selectors.clientFiscalData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual(`You can't make changes on a client with verified data`);
+ expect(message.text).toBe(`You can't make changes on a client with verified data`);
});
});
@@ -131,9 +131,9 @@ describe('Client lock verified data path', () => {
await page.clearInput(selectors.clientFiscalData.socialName);
await page.write(selectors.clientFiscalData.socialName, 'new social name edition');
await page.waitToClick(selectors.clientFiscalData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should now confirm the social name have been edited once and for all', async() => {
diff --git a/e2e/paths/02-client/13_log.spec.js b/e2e/paths/02-client/13_log.spec.js
index fc4b98b8b..93397d301 100644
--- a/e2e/paths/02-client/13_log.spec.js
+++ b/e2e/paths/02-client/13_log.spec.js
@@ -20,14 +20,13 @@ describe('Client log path', () => {
await page.clearInput(selectors.clientBasicData.name);
await page.write(selectors.clientBasicData.name, 'this is a test');
await page.waitToClick(selectors.clientBasicData.saveButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should navigate to the log section', async() => {
- await page.waitToClick(selectors.clientLog.logButton);
- await page.waitForState('client.card.log');
+ await page.accessToSection('client.card.log');
});
it('should check the previous value of the last logged change', async() => {
diff --git a/e2e/paths/02-client/14_balance.spec.js b/e2e/paths/02-client/14_balance.spec.js
index 87dc84a8e..108f76710 100644
--- a/e2e/paths/02-client/14_balance.spec.js
+++ b/e2e/paths/02-client/14_balance.spec.js
@@ -18,9 +18,9 @@ describe('Client balance path', () => {
it('should now edit the local user config data', async() => {
await page.waitToClick(selectors.globalItems.userMenuButton);
await page.autocompleteSearch(selectors.globalItems.userLocalCompany, 'CCs');
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should access to the balance section to check the data shown matches the local settings', async() => {
@@ -33,9 +33,9 @@ describe('Client balance path', () => {
it('should now clear the user local settings', async() => {
await page.waitToClick(selectors.globalItems.userMenuButton);
await page.clearInput(selectors.globalItems.userConfigThirdAutocomplete);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toContain('Data saved!');
+ expect(message.type).toBe('success');
});
it('should click the new payment button', async() => {
@@ -48,9 +48,9 @@ describe('Client balance path', () => {
await page.waitToClick(selectors.clientBalance.newPaymentButton);
await page.autocompleteSearch(selectors.clientBalance.newPaymentBank, 'Pay on receipt');
await page.waitToClick(selectors.clientBalance.saveButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toContain('Data saved!');
+ expect(message.type).toBe('success');
});
it('should check balance is now 0 and the company is now VNL becouse the user local settings were removed', async() => {
@@ -67,13 +67,11 @@ describe('Client balance path', () => {
it('should create a new payment that sets the balance to positive value', async() => {
await page.waitToClick(selectors.clientBalance.newPaymentButton);
- await page.waitFor(3000); // didn't manage to make this dynamic to allow clearInput to find the icon clear... :(
- await page.clearInput(selectors.clientBalance.newPaymentAmount);
- await page.write(selectors.clientBalance.newPaymentAmount, '100');
+ await page.overwrite(selectors.clientBalance.newPaymentAmount, '100');
await page.waitToClick(selectors.clientBalance.saveButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toContain('Data saved!');
+ expect(message.type).toBe('success');
});
it('should check balance is now -100', async() => {
@@ -85,14 +83,11 @@ describe('Client balance path', () => {
it('should create a new payment that sets the balance back to the original negative value', async() => {
await page.waitToClick(selectors.clientBalance.newPaymentButton);
- await page.waitFor(3000); // didn't manage to make this dynamic to allow clearInput to find the icon clear... :(
- await page.waitForSelector('.vn-dialog.vn-popup.shown', {visible: true});
- await page.clearInput(selectors.clientBalance.newPaymentAmount);
- await page.write(selectors.clientBalance.newPaymentAmount, '-150');
+ await page.overwrite(selectors.clientBalance.newPaymentAmount, '-150');
await page.waitToClick(selectors.clientBalance.saveButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toContain('Data saved!');
+ expect(message.type).toBe('success');
});
it('should check balance is now 50', async() => {
@@ -113,8 +108,7 @@ describe('Client balance path', () => {
it('should now search for the user Petter Parker', async() => {
await page.accessToSearchResult('Petter Parker');
- await page.waitToClick(selectors.clientBalance.balanceButton);
- await page.waitForState('client.card.balance.index');
+ await page.accessToSection('client.card.balance.index');
});
it('should not be able to click the new payment button as it isnt present', async() => {
diff --git a/e2e/paths/02-client/15_user_config.spec.js b/e2e/paths/02-client/15_user_config.spec.js
index 89d4e004a..28f2ef29e 100644
--- a/e2e/paths/02-client/15_user_config.spec.js
+++ b/e2e/paths/02-client/15_user_config.spec.js
@@ -16,7 +16,6 @@ describe('User config', () => {
describe('as salesPerson', () => {
it('should login', async() => {
await page.login('salesPerson');
- await page.waitForContentLoaded();
});
it('should now open the user config form to check the settings', async() => {
@@ -26,7 +25,6 @@ describe('User config', () => {
let expectedLocalWarehouse = await page
.expectPropertyValue(selectors.globalItems.userLocalWarehouse, 'value', '');
-
let expectedLocalBank = await page
.expectPropertyValue(selectors.globalItems.userLocalBank, 'value', '');
@@ -50,7 +48,6 @@ describe('User config', () => {
describe('as employee', () => {
it('should log in', async() => {
await page.login('employee');
- await page.waitForContentLoaded();
});
it('should open the user config form to check the settings', async() => {
@@ -59,7 +56,6 @@ describe('User config', () => {
let expectedLocalWarehouse = await page
.expectPropertyValue(selectors.globalItems.userLocalWarehouse, 'value', '');
-
let expectedLocalBank = await page
.expectPropertyValue(selectors.globalItems.userLocalBank, 'value', '');
@@ -83,16 +79,15 @@ describe('User config', () => {
await page.autocompleteSearch(selectors.globalItems.userLocalWarehouse, 'Warehouse Four');
await page.autocompleteSearch(selectors.globalItems.userLocalBank, 'Pay on receipt');
await page.autocompleteSearch(selectors.globalItems.userLocalCompany, 'VNL');
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toContain('Data saved!');
+ expect(message.type).toBe('success');
});
});
describe('as salesPerson 2nd run', () => {
it('should log in once more', async() => {
await page.login('salesPerson');
- await page.waitForContentLoaded();
});
it('should again open the user config form to check the local settings', async() => {
@@ -123,9 +118,9 @@ describe('User config', () => {
await page.clearInput(selectors.globalItems.userConfigFirstAutocomplete);
await page.clearInput(selectors.globalItems.userConfigSecondAutocomplete);
await page.clearInput(selectors.globalItems.userConfigThirdAutocomplete);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toContain('Data saved!');
+ expect(message.type).toBe('success');
});
});
});
diff --git a/e2e/paths/02-client/17_dms.spec.js b/e2e/paths/02-client/17_dms.spec.js
index 95b37093a..32cca05f3 100644
--- a/e2e/paths/02-client/17_dms.spec.js
+++ b/e2e/paths/02-client/17_dms.spec.js
@@ -20,9 +20,9 @@ describe('Client DMS', () => {
it('should delete de first file', async() => {
await page.waitToClick(selectors.dms.deleteFileButton);
await page.respondToDialog('accept');
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should click on the first document line worker name making the descriptor visible`, async() => {
diff --git a/e2e/paths/02-client/18_contacts.spec.js b/e2e/paths/02-client/18_contacts.spec.js
index fd8b68283..87e75a975 100644
--- a/e2e/paths/02-client/18_contacts.spec.js
+++ b/e2e/paths/02-client/18_contacts.spec.js
@@ -22,17 +22,17 @@ describe('Client contacts', () => {
await page.write(selectors.clientContacts.name, 'Ansible');
await page.write(selectors.clientContacts.phone, 'FTL comms');
await page.waitToClick(selectors.clientContacts.saveButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should delete de contact', async() => {
await page.waitFor(3000);
await page.waitToClick(selectors.clientContacts.deleteFirstPhone);
await page.waitToClick(selectors.clientContacts.saveButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toContain('Data saved!');
+ expect(message.type).toBe('success');
});
});
diff --git a/e2e/paths/03-worker/02_basicData.spec.js b/e2e/paths/03-worker/02_basicData.spec.js
index 21443c517..a24ffd033 100644
--- a/e2e/paths/03-worker/02_basicData.spec.js
+++ b/e2e/paths/03-worker/02_basicData.spec.js
@@ -24,9 +24,9 @@ describe('Worker basic data path', () => {
await page.clearInput(selectors.workerBasicData.phone);
await page.write(selectors.workerBasicData.phone, '444332211');
await page.waitToClick(selectors.workerBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should reload the section then check the name was edited', async() => {
diff --git a/e2e/paths/03-worker/03_pbx.spec.js b/e2e/paths/03-worker/03_pbx.spec.js
index 83849a5dd..f2a567af2 100644
--- a/e2e/paths/03-worker/03_pbx.spec.js
+++ b/e2e/paths/03-worker/03_pbx.spec.js
@@ -19,17 +19,17 @@ describe('Worker pbx path', () => {
it('should receive an error when the extension exceeds 4 characters', async() => {
await page.write(selectors.workerPbx.extension, '55555');
await page.waitToClick(selectors.workerPbx.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Extension format is invalid');
+ expect(message.text).toBe('Extension format is invalid');
});
it('should sucessfully save the changes', async() => {
await page.clearInput(selectors.workerPbx.extension);
await page.write(selectors.workerPbx.extension, '4444');
await page.waitToClick(selectors.workerPbx.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved! User must access web');
+ expect(message.text).toBe('Data saved! User must access web');
});
});
diff --git a/e2e/paths/03-worker/04_time_control.spec.js b/e2e/paths/03-worker/04_time_control.spec.js
index 36340e880..c94137e2f 100644
--- a/e2e/paths/03-worker/04_time_control.spec.js
+++ b/e2e/paths/03-worker/04_time_control.spec.js
@@ -57,9 +57,9 @@ describe('Worker time control path', () => {
await page.waitForTextInElement(selectors.workerTimeControl.thirdEntryOfMonday, wrongScanTime);
await page.waitToClick(selectors.workerTimeControl.thirdEntryOfMondayDelete);
await page.respondToDialog('accept');
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Entry removed');
+ expect(message.text).toBe('Entry removed');
});
it(`should scan out Hank Pym to leave early`, async() => {
diff --git a/e2e/paths/04-item/01_summary.spec.js b/e2e/paths/04-item/01_summary.spec.js
index 6f2c2c926..7658cb752 100644
--- a/e2e/paths/04-item/01_summary.spec.js
+++ b/e2e/paths/04-item/01_summary.spec.js
@@ -15,14 +15,14 @@ describe('Item summary path', () => {
});
it('should search for an item', async() => {
- await page.clearInput(selectors.itemsIndex.topbarSearch);
- await page.write(selectors.itemsIndex.topbarSearch, 'Ranged weapon');
- await page.waitToClick(selectors.itemsIndex.searchButton);
- await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 3);
+ await page.doSearch('Ranged weapon');
+ const nResults = await page.countElement(selectors.itemsIndex.searchResult);
+
await page.waitForTextInElement(selectors.itemsIndex.searchResult, 'Ranged weapon');
await page.waitToClick(selectors.itemsIndex.firstResultPreviewButton);
const isVisible = await page.isVisible(selectors.itemSummary.basicData);
+ expect(nResults).toBe(3);
expect(isVisible).toBeTruthy();
});
@@ -67,12 +67,13 @@ describe('Item summary path', () => {
});
it('should search for other item', async() => {
- await page.clearInput('vn-searchbar');
- await page.write(selectors.itemsIndex.topbarSearch, 'Melee Reinforced');
- await page.keyboard.press('Enter');
- await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 2);
+ await page.doSearch('Melee Reinforced');
+ const nResults = await page.countElement(selectors.itemsIndex.searchResult);
+
await page.waitToClick(selectors.itemsIndex.firstResultPreviewButton);
await page.waitForSelector(selectors.itemSummary.basicData, {visible: true});
+
+ expect(nResults).toBe(2);
});
it(`should now check the item summary preview shows fields from basic data`, async() => {
diff --git a/e2e/paths/04-item/02_basic_data.spec.js b/e2e/paths/04-item/02_basic_data.spec.js
index ce56b9a5c..7a9b9a1e7 100644
--- a/e2e/paths/04-item/02_basic_data.spec.js
+++ b/e2e/paths/04-item/02_basic_data.spec.js
@@ -34,9 +34,9 @@ describe('Item Edit basic data path', () => {
await page.waitToClick(selectors.itemBasicData.isActiveCheckbox);
await page.waitToClick(selectors.itemBasicData.priceInKgCheckbox);
await page.waitToClick(selectors.itemBasicData.submitBasicDataButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should create a new intrastat`, async() => {
@@ -53,9 +53,9 @@ describe('Item Edit basic data path', () => {
it('should save with the new intrastat', async() => {
await page.waitToClick(selectors.itemBasicData.submitBasicDataButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the item name was edited`, async() => {
diff --git a/e2e/paths/04-item/03_tax.spec.js b/e2e/paths/04-item/03_tax.spec.js
index ef2d68096..b05dcb286 100644
--- a/e2e/paths/04-item/03_tax.spec.js
+++ b/e2e/paths/04-item/03_tax.spec.js
@@ -21,9 +21,9 @@ describe('Item edit tax path', () => {
await page.autocompleteSearch(selectors.itemTax.secondClass, 'General VAT');
await page.autocompleteSearch(selectors.itemTax.thirdClass, 'General VAT');
await page.waitToClick(selectors.itemTax.submitTaxButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the first item tax class was edited`, async() => {
diff --git a/e2e/paths/04-item/04_tags.spec.js b/e2e/paths/04-item/04_tags.spec.js
index 098ac75eb..f53ff3582 100644
--- a/e2e/paths/04-item/04_tags.spec.js
+++ b/e2e/paths/04-item/04_tags.spec.js
@@ -24,9 +24,9 @@ describe('Item create tags path', () => {
await page.clearInput(selectors.itemTags.seventhRelevancy);
await page.write(selectors.itemTags.seventhRelevancy, '4');
await page.waitToClick(selectors.itemTags.submitItemTagsButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the fourth row data is the expected one`, async() => {
diff --git a/e2e/paths/04-item/05_niche.spec.js b/e2e/paths/04-item/05_niche.spec.js
index 4da8ed5fe..4ad0398c2 100644
--- a/e2e/paths/04-item/05_niche.spec.js
+++ b/e2e/paths/04-item/05_niche.spec.js
@@ -23,9 +23,9 @@ describe('Item create niche path', () => {
await page.autocompleteSearch(selectors.itemNiches.thirdWarehouse, 'Warehouse Two');
await page.write(selectors.itemNiches.thirdCode, 'A4');
await page.waitToClick(selectors.itemNiches.submitNichesButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the first niche is the expected one`, async() => {
diff --git a/e2e/paths/04-item/06_botanical.spec.js b/e2e/paths/04-item/06_botanical.spec.js
index edcc94f28..84a144f1d 100644
--- a/e2e/paths/04-item/06_botanical.spec.js
+++ b/e2e/paths/04-item/06_botanical.spec.js
@@ -21,9 +21,9 @@ describe('Item Create botanical path', () => {
await page.autocompleteSearch(selectors.itemBotanical.genus, 'Abelia');
await page.autocompleteSearch(selectors.itemBotanical.species, 'dealbata');
await page.waitToClick(selectors.itemBotanical.submitBotanicalButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the botanical for the item was created`, async() => {
@@ -56,9 +56,9 @@ describe('Item Create botanical path', () => {
await page.autocompleteSearch(selectors.itemBotanical.genus, 'Abies');
await page.autocompleteSearch(selectors.itemBotanical.species, 'decurrens');
await page.waitToClick(selectors.itemBotanical.submitBotanicalButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the botanical for the item was edited`, async() => {
diff --git a/e2e/paths/04-item/07_barcode.spec.js b/e2e/paths/04-item/07_barcode.spec.js
index 7750b4b6d..0220b3a9d 100644
--- a/e2e/paths/04-item/07_barcode.spec.js
+++ b/e2e/paths/04-item/07_barcode.spec.js
@@ -21,9 +21,9 @@ describe('Item Create barcodes path', () => {
await page.waitToClick(selectors.itemBarcodes.addBarcodeButton);
await page.write(selectors.itemBarcodes.thirdCode, '5');
await page.waitToClick(selectors.itemBarcodes.submitBarcodesButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the barcode 5 is created and it is now the third barcode as the first was deleted`, async() => {
diff --git a/e2e/paths/04-item/08_create_and_clone.spec.js b/e2e/paths/04-item/08_create_and_clone.spec.js
index 73249a0b9..4d035a4c3 100644
--- a/e2e/paths/04-item/08_create_and_clone.spec.js
+++ b/e2e/paths/04-item/08_create_and_clone.spec.js
@@ -16,13 +16,10 @@ describe('Item Create/Clone path', () => {
describe('create', () => {
it(`should search for the item Infinity Gauntlet to confirm it isn't created yet`, async() => {
- await page.clearInput(selectors.itemsIndex.topbarSearch);
- await page.write(selectors.itemsIndex.topbarSearch, 'Infinity Gauntlet');
- await page.waitToClick(selectors.itemsIndex.searchButton);
- await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 0);
- const result = await page.countElement(selectors.itemsIndex.searchResult);
+ await page.doSearch('Infinity Gauntlet');
+ const nResults = await page.countElement(selectors.itemsIndex.searchResult);
- expect(result).toEqual(0);
+ expect(nResults).toEqual(0);
});
it('should access to the create item view by clicking the create floating button', async() => {
@@ -46,9 +43,9 @@ describe('Item Create/Clone path', () => {
await page.autocompleteSearch(selectors.itemCreateView.intrastat, 'Coral y materiales similares');
await page.autocompleteSearch(selectors.itemCreateView.origin, 'Holand');
await page.waitToClick(selectors.itemCreateView.createButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm Infinity Gauntlet item was created', async() => {
@@ -85,13 +82,10 @@ describe('Item Create/Clone path', () => {
});
it(`should search for the item Infinity Gauntlet`, async() => {
- await page.clearInput(selectors.itemsIndex.topbarSearch);
- await page.write(selectors.itemsIndex.topbarSearch, 'Infinity Gauntlet');
- await page.waitToClick(selectors.itemsIndex.searchButton);
- await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 1);
- const result = await page.countElement(selectors.itemsIndex.searchResult);
+ await page.doSearch('Infinity Gauntlet');
+ const nResults = await page.countElement(selectors.itemsIndex.searchResult);
- expect(result).toEqual(1);
+ expect(nResults).toEqual(1);
});
it(`should clone the Infinity Gauntlet`, async() => {
@@ -102,14 +96,10 @@ describe('Item Create/Clone path', () => {
});
it('should search for the item Infinity Gauntlet and find two', async() => {
- await page.waitToClick(selectors.itemTags.goToItemIndexButton);
- await page.clearInput(selectors.itemsIndex.topbarSearch);
- await page.write(selectors.itemsIndex.topbarSearch, 'Infinity Gauntlet');
- await page.waitToClick(selectors.itemsIndex.searchButton);
- await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 2);
- const result = await page.countElement(selectors.itemsIndex.searchResult);
+ await page.doSearch('Infinity Gauntlet');
+ const nResults = await page.countElement(selectors.itemsIndex.searchResult);
- expect(result).toEqual(2);
+ expect(nResults).toEqual(2);
});
});
});
diff --git a/e2e/paths/04-item/09_regularize.spec.js b/e2e/paths/04-item/09_regularize.spec.js
index a37d97fa3..6de995515 100644
--- a/e2e/paths/04-item/09_regularize.spec.js
+++ b/e2e/paths/04-item/09_regularize.spec.js
@@ -18,9 +18,9 @@ describe('Item regularize path', () => {
await page.waitForSpinnerLoad();
await page.waitToClick(selectors.globalItems.userMenuButton);
await page.autocompleteSearch(selectors.globalItems.userLocalWarehouse, 'Warehouse Four');
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should check the local settings were saved', async() => {
@@ -49,9 +49,9 @@ describe('Item regularize path', () => {
await page.write(selectors.itemDescriptor.regularizeQuantity, '100');
await page.autocompleteSearch(selectors.itemDescriptor.regularizeWarehouse, 'Warehouse One');
await page.waitToClick(selectors.itemDescriptor.regularizeSaveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should click on the Tickets button of the top bar menu', async() => {
@@ -65,12 +65,12 @@ describe('Item regularize path', () => {
});
it('should clear the user local settings now', async() => {
- await page.waitForContentLoaded();
await page.waitToClick(selectors.globalItems.userMenuButton);
+ await page.waitForContentLoaded();
await page.clearInput(selectors.globalItems.userConfigFirstAutocomplete);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should search for the ticket with alias missing', async() => {
@@ -112,9 +112,9 @@ describe('Item regularize path', () => {
await page.write(selectors.itemDescriptor.regularizeQuantity, '100');
await page.autocompleteSearch(selectors.itemDescriptor.regularizeWarehouse, 'Warehouse One');
await page.waitToClick(selectors.itemDescriptor.regularizeSaveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should again click on the Tickets button of the top bar menu', async() => {
diff --git a/e2e/paths/04-item/10_index.spec.js b/e2e/paths/04-item/10_index.spec.js
index e15469283..b4c4b636e 100644
--- a/e2e/paths/04-item/10_index.spec.js
+++ b/e2e/paths/04-item/10_index.spec.js
@@ -34,9 +34,9 @@ describe('Item index path', () => {
await page.waitToClick(selectors.itemsIndex.buyerCheckbox);
await page.waitToClick(selectors.itemsIndex.destinyCheckbox);
await page.waitToClick(selectors.itemsIndex.saveFieldsButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should navigate forth and back to see the images column is still visible', async() => {
@@ -68,9 +68,9 @@ describe('Item index path', () => {
await page.waitToClick(selectors.itemsIndex.buyerCheckbox);
await page.waitToClick(selectors.itemsIndex.destinyCheckbox);
await page.waitToClick(selectors.itemsIndex.saveFieldsButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should now navigate forth and back to see the ids column is now visible', async() => {
diff --git a/e2e/paths/04-item/11_item_log.spec.js b/e2e/paths/04-item/11_item_log.spec.js
index 82800b9b8..7ea679f4a 100644
--- a/e2e/paths/04-item/11_item_log.spec.js
+++ b/e2e/paths/04-item/11_item_log.spec.js
@@ -15,12 +15,10 @@ describe('Item log path', () => {
});
it(`should search for the Knowledge artifact to confirm it isn't created yet`, async() => {
- await page.write(selectors.itemsIndex.topbarSearch, 'Knowledge artifact');
- await page.waitToClick(selectors.itemsIndex.searchButton);
- await page.waitForNumberOfElements(selectors.itemsIndex.searchResult, 0);
- const result = await page.countElement(selectors.itemsIndex.searchResult);
+ await page.doSearch('Knowledge artifact');
+ const nResults = await page.countElement(selectors.itemsIndex.searchResult);
- expect(result).toEqual(0);
+ expect(nResults).toEqual(0);
});
it('should access to the create item view by clicking the create floating button', async() => {
@@ -34,9 +32,9 @@ describe('Item log path', () => {
await page.autocompleteSearch(selectors.itemCreateView.intrastat, 'Coral y materiales similares');
await page.autocompleteSearch(selectors.itemCreateView.origin, 'Holand');
await page.waitToClick(selectors.itemCreateView.createButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should return to the items index by clicking the return to items button', async() => {
diff --git a/e2e/paths/04-item/12_descriptor.spec.js b/e2e/paths/04-item/12_descriptor.spec.js
index 84614cf30..35be1135e 100644
--- a/e2e/paths/04-item/12_descriptor.spec.js
+++ b/e2e/paths/04-item/12_descriptor.spec.js
@@ -19,7 +19,7 @@ describe('Item descriptor path', () => {
it('should check the descriptor inactive icon is dark as the item is active', async() => {
await page.wait(selectors.itemDescriptor.inactiveIcon);
await page.waitForClassNotPresent(selectors.itemDescriptor.inactiveIcon, 'bright');
- let darkIcon = await page.isVisible(selectors.itemDescriptor.inactiveIcon);
+ const darkIcon = await page.isVisible(selectors.itemDescriptor.inactiveIcon);
expect(darkIcon).toBeTruthy();
});
@@ -27,15 +27,15 @@ describe('Item descriptor path', () => {
it('should set the item to inactive', async() => {
await page.waitToClick(selectors.itemBasicData.isActiveCheckbox);
await page.waitToClick(selectors.itemBasicData.submitBasicDataButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should reload the section and check the inactive icon is bright', async() => {
await page.reloadSection('item.card.basicData');
await page.waitForClassPresent(selectors.itemDescriptor.inactiveIcon, 'bright');
- let brightIcon = await page.isVisible(selectors.itemDescriptor.inactiveIcon);
+ const brightIcon = await page.isVisible(selectors.itemDescriptor.inactiveIcon);
expect(brightIcon).toBeTruthy();
});
@@ -43,8 +43,8 @@ describe('Item descriptor path', () => {
it('should set the item back to active', async() => {
await page.waitToClick(selectors.itemBasicData.isActiveCheckbox);
await page.waitToClick(selectors.itemBasicData.submitBasicDataButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
});
diff --git a/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js b/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js
index a6d34a473..e8b0ad8e7 100644
--- a/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js
+++ b/e2e/paths/05-ticket/01-sale/01_list_sales.spec.js
@@ -74,9 +74,9 @@ describe('Ticket List sale path', () => {
await page.keyboard.press('Enter');
await page.write(selectors.ticketSales.secondSaleQuantity, '1');
await page.keyboard.press('Enter');
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
// #1865
@@ -84,9 +84,9 @@ describe('Ticket List sale path', () => {
await page.focusElement(selectors.ticketSales.secondSaleConceptCell);
await page.write(selectors.ticketSales.secondSaleConceptInput, 'Aegis of Valor');
await page.keyboard.press('Enter');
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should add a third empty item to the sale list', async() => {
@@ -102,9 +102,9 @@ describe('Ticket List sale path', () => {
await page.waitToClick(selectors.ticketSales.thirdSaleCheckbox);
await page.waitToClick(selectors.ticketSales.deleteSaleButton);
await page.waitToClick(selectors.ticketSales.acceptDeleteLineButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should verify there's only 1 single line remaining`, async() => {
diff --git a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js
index f2265797c..a22b0e022 100644
--- a/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js
+++ b/e2e/paths/05-ticket/01-sale/02_edit_sale.spec.js
@@ -19,245 +19,218 @@ xdescribe('Ticket Edit sale path', () => {
});
it(`should click on the first sale claim icon to navigate over there`, async() => {
- const url = await nightmare
- .waitToClick(selectors.ticketSales.firstSaleClaimIcon)
- .wait(selectors.claimBasicData.claimState)
- .parsedUrl();
+ await page.waitToClick(selectors.ticketSales.firstSaleClaimIcon);
+ await page.wait(selectors.claimBasicData.claimState);
+ const url = await page.parsedUrl();
expect(url.hash).toEqual('#!/claim/2/basic-data');
});
it('should navigate to the tickets index', async() => {
- const url = await nightmare
- .waitToClick(selectors.globalItems.applicationsMenuButton)
- .wait(selectors.globalItems.applicationsMenuVisible)
- .waitToClick(selectors.globalItems.ticketsButton)
- .wait(selectors.ticketsIndex.topbarSearch)
- .parsedUrl();
+ await page.waitToClick(selectors.globalItems.applicationsMenuButton);
+ await page.wait(selectors.globalItems.applicationsMenuVisible);
+ await page.waitToClick(selectors.globalItems.ticketsButton);
+ await page.wait(selectors.ticketsIndex.topbarSearch);
+ const url = await page.parsedUrl();
expect(url.hash).toEqual('#!/ticket/index');
});
it(`should search for a ticket and then navigate to it's sales`, async() => {
- const url = await nightmare
- .accessToSearchResult(16)
- .accessToSection('ticket.card.sale')
- .waitForURL('/sale')
- .parsedUrl();
+ await page.accessToSearchResult(16);
+ await page.accessToSection('ticket.card.sale');
+ await page.waitForURL('/sale');
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/sale');
});
it(`should check the zoomed image isn't present`, async() => {
- const result = await nightmare
- .countElement(selectors.ticketSales.firstSaleZoomedImage);
+ const result = await page.countElement(selectors.ticketSales.firstSaleZoomedImage);
expect(result).toEqual(0);
});
it(`should click on the thumbnail image of the 1st sale and see the zoomed image`, async() => {
- const result = await nightmare
- .clickIfVisible(selectors.ticketSales.firstSaleThumbnailImage)
- .countElement(selectors.ticketSales.firstSaleZoomedImage);
+ await page.clickIfVisible(selectors.ticketSales.firstSaleThumbnailImage);
+ const result = await page.countElement(selectors.ticketSales.firstSaleZoomedImage);
expect(result).toEqual(1);
});
it(`should click on the zoomed image to close it`, async() => {
- const result = await nightmare
- .clickIfVisible(selectors.ticketSales.firstSaleZoomedImage)
- .countElement(selectors.ticketSales.firstSaleZoomedImage);
+ await page.clickIfVisible(selectors.ticketSales.firstSaleZoomedImage);
+ const result = await page.countElement(selectors.ticketSales.firstSaleZoomedImage);
expect(result).toEqual(0);
});
it(`should confirm the item descriptor insnt visible yet`, async() => {
- const visible = await nightmare
- .isVisible(selectors.ticketSales.saleDescriptorPopover);
+ const visible = await page.isVisible(selectors.ticketSales.saleDescriptorPopover);
expect(visible).toBeFalsy();
});
it(`should click on the first sale ID making the item descriptor visible`, async() => {
- const visible = await nightmare
- .waitToClick(selectors.ticketSales.firstSaleId)
- .waitImgLoad(selectors.ticketSales.firstSaleDescriptorImage)
- .isVisible(selectors.ticketSales.saleDescriptorPopover);
+ await page.waitToClick(selectors.ticketSales.firstSaleId);
+ await page.waitImgLoad(selectors.ticketSales.firstSaleDescriptorImage);
+ const visible = await page.isVisible(selectors.ticketSales.saleDescriptorPopover);
expect(visible).toBeTruthy();
});
it(`should click on the descriptor image of the 1st sale and see the zoomed image`, async() => {
- const result = await nightmare
- .clickIfVisible('vn-item-descriptor img')
- .countElement(selectors.ticketSales.firstSaleZoomedImage);
+ await page.clickIfVisible('vn-item-descriptor img');
+ const result = await page.countElement(selectors.ticketSales.firstSaleZoomedImage);
expect(result).toEqual(1);
});
it(`should now click on the zoomed image to close it`, async() => {
- const result = await nightmare
- .clickIfVisible(selectors.ticketSales.firstSaleZoomedImage)
- .countElement(selectors.ticketSales.firstSaleZoomedImage);
+ await page.clickIfVisible(selectors.ticketSales.firstSaleZoomedImage);
+ const result = await page.countElement(selectors.ticketSales.firstSaleZoomedImage);
expect(result).toEqual(0);
});
it(`should click on the summary icon of the item-descriptor to access to the item summary`, async() => {
- const url = await nightmare
- .waitToClick(selectors.ticketSales.saleDescriptorPopoverSummaryButton)
- .waitForURL('/summary')
- .parsedUrl();
+ await page.waitToClick(selectors.ticketSales.saleDescriptorPopoverSummaryButton);
+ await page.waitForURL('/summary');
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/summary');
});
it('should return to ticket sales section', async() => {
- const url = await nightmare
- .waitToClick(selectors.globalItems.applicationsMenuButton)
- .wait(selectors.globalItems.applicationsMenuVisible)
- .waitToClick(selectors.globalItems.ticketsButton)
- .accessToSearchResult(16)
- .accessToSection('ticket.card.sale')
- .waitForURL('/sale')
- .parsedUrl();
+ await page.waitToClick(selectors.globalItems.applicationsMenuButton);
+ await page.wait(selectors.globalItems.applicationsMenuVisible);
+ await page.waitToClick(selectors.globalItems.ticketsButton);
+ await page.accessToSearchResult(16);
+ await page.accessToSection('ticket.card.sale');
+ await page.waitForURL('/sale');
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/sale');
});
it('should try to add a higher quantity value and then receive an error', async() => {
- const result = await nightmare
- .focusElement(selectors.ticketSales.firstSaleQuantityCell)
- .write(selectors.ticketSales.firstSaleQuantity, '11\u000d')
- .waitForLastSnackbar();
+ await page.focusElement(selectors.ticketSales.firstSaleQuantityCell);
+ await page.write(selectors.ticketSales.firstSaleQuantity, '11\u000d');
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('The new quantity should be smaller than the old one');
+ expect(message.text).toBe('The new quantity should be smaller than the old one');
});
it('should remove 1 from the first sale quantity', async() => {
- const result = await nightmare
- .focusElement(selectors.ticketSales.firstSaleQuantityCell)
- .write(selectors.ticketSales.firstSaleQuantity, '9\u000d')
- .waitForLastSnackbar();
+ await page.focusElement(selectors.ticketSales.firstSaleQuantityCell);
+ await page.write(selectors.ticketSales.firstSaleQuantity, '9\u000d');
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should update the price', async() => {
- const result = await nightmare
- .waitToClick(`${selectors.ticketSales.firstSalePrice} > span`)
- .write(selectors.ticketSales.firstSalePriceInput, '5\u000d')
- .waitForLastSnackbar();
+ await page.waitToClick(`${selectors.ticketSales.firstSalePrice} > span`);
+ await page.write(selectors.ticketSales.firstSalePriceInput, '5\u000d');
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the price have been updated', async() => {
- const result = await nightmare
- .waitToGetProperty(`${selectors.ticketSales.firstSalePrice} span`, 'innerText');
+ const result = await page.waitToGetProperty(`${selectors.ticketSales.firstSalePrice} span`, 'innerText');
expect(result).toContain('5.00');
});
it('should confirm the total price for that item have been updated', async() => {
- const result = await nightmare
- .waitToGetProperty(selectors.ticketSales.firstSaleImport, 'innerText');
+ const result = await page.waitToGetProperty(selectors.ticketSales.firstSaleImport, 'innerText');
expect(result).toContain('45.00');
});
it('should update the discount', async() => {
- const result = await nightmare
- .waitToClick(`${selectors.ticketSales.firstSaleDiscount} > span`)
- .write(selectors.ticketSales.firstSaleDiscountInput, '50\u000d')
- .waitForLastSnackbar();
+ await page.waitToClick(`${selectors.ticketSales.firstSaleDiscount} > span`);
+ await page.write(selectors.ticketSales.firstSaleDiscountInput, '50\u000d');
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the discount have been updated', async() => {
- const result = await nightmare
- .waitForTextInElement(`${selectors.ticketSales.firstSaleDiscount} > span`, '50.00%')
- .waitToGetProperty(`${selectors.ticketSales.firstSaleDiscount} > span`, 'innerText');
+ await page.waitForTextInElement(`${selectors.ticketSales.firstSaleDiscount} > span`, '50.00%');
+ const result = await page.waitToGetProperty(`${selectors.ticketSales.firstSaleDiscount} > span`, 'innerText');
expect(result).toContain('50.00%');
});
it('should confirm the total import for that item have been updated', async() => {
- const result = await nightmare
- .waitForTextInElement(selectors.ticketSales.firstSaleImport, '22.50')
- .waitToGetProperty(selectors.ticketSales.firstSaleImport, 'innerText');
+ await page.waitForTextInElement(selectors.ticketSales.firstSaleImport, '22.50');
+ const result = await page.waitToGetProperty(selectors.ticketSales.firstSaleImport, 'innerText');
expect(result).toContain('22.50');
});
it('should select the third sale and create a claim of it', async() => {
- const url = await nightmare
- .waitToClick(selectors.ticketSales.thirdSaleCheckbox)
- .waitToClick(selectors.ticketSales.moreMenu)
- .waitToClick(selectors.ticketSales.moreMenuCreateClaim)
- .wait(selectors.claimBasicData.claimState)
- .parsedUrl();
+ await page.waitToClick(selectors.ticketSales.thirdSaleCheckbox);
+ await page.waitToClick(selectors.ticketSales.moreMenu);
+ await page.waitToClick(selectors.ticketSales.moreMenuCreateClaim);
+ await page.wait(selectors.claimBasicData.claimState);
+ const url = await page.parsedUrl();
expect(url.hash).toContain('basic-data');
});
it('should click on the Claims button of the top bar menu', async() => {
- const url = await nightmare
- .waitToClick(selectors.globalItems.applicationsMenuButton)
- .wait(selectors.globalItems.applicationsMenuVisible)
- .waitToClick(selectors.globalItems.claimsButton)
- .wait(selectors.claimsIndex.searchClaimInput)
- .parsedUrl();
+ await page.waitToClick(selectors.globalItems.applicationsMenuButton);
+ await page.wait(selectors.globalItems.applicationsMenuVisible);
+ await page.waitToClick(selectors.globalItems.claimsButton);
+ await page.wait(selectors.claimsIndex.searchClaimInput);
+ const url = await page.parsedUrl();
expect(url.hash).toEqual('#!/claim/index');
});
it('should search for the claim with id 4', async() => {
- const result = await nightmare
- .write(selectors.claimsIndex.searchClaimInput, 4)
- .waitToClick(selectors.claimsIndex.searchButton)
- .waitForNumberOfElements(selectors.claimsIndex.searchResult, 1)
- .countElement(selectors.claimsIndex.searchResult);
+ await page.write(selectors.claimsIndex.searchClaimInput, 4);
+ await page.waitToClick(selectors.claimsIndex.searchButton);
+ await page.waitForNumberOfElements(selectors.claimsIndex.searchResult, 1);
+ const result = await page.countElement(selectors.claimsIndex.searchResult);
expect(result).toEqual(1);
});
it('should click the Tickets button of the top bar menu', async() => {
- const url = await nightmare
- .waitToClick(selectors.globalItems.applicationsMenuButton)
- .wait(selectors.globalItems.applicationsMenuVisible)
- .waitToClick(selectors.globalItems.ticketsButton)
- .wait(selectors.ticketsIndex.topbarSearch)
- .parsedUrl();
+ await page.waitToClick(selectors.globalItems.applicationsMenuButton);
+ await page.wait(selectors.globalItems.applicationsMenuVisible);
+ await page.waitToClick(selectors.globalItems.ticketsButton);
+ await page.wait(selectors.ticketsIndex.topbarSearch);
+ const url = await page.parsedUrl();
expect(url.hash).toEqual('#!/ticket/index');
});
it('should search for a ticket then access to the sales section', async() => {
- const url = await nightmare
- .accessToSearchResult(16)
- .accessToSection('ticket.card.sale')
- .waitForURL('/sale')
- .parsedUrl();
+ await page.accessToSearchResult(16);
+ await page.accessToSection('ticket.card.sale');
+ await page.waitForURL('/sale');
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/sale');
});
it('should select the third sale and delete it', async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.thirdSaleCheckbox)
- .waitToClick(selectors.ticketSales.deleteSaleButton)
- .waitToClick(selectors.ticketSales.acceptDeleteLineButton)
- .waitForSpinnerLoad()
- .waitForLastSnackbar();
+ await page.waitToClick(selectors.ticketSales.thirdSaleCheckbox);
+ await page.waitToClick(selectors.ticketSales.deleteSaleButton);
+ await page.waitToClick(selectors.ticketSales.acceptDeleteLineButton);
+ await page.waitForSpinnerLoad();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the third sale was deleted`, async() => {
- const result = await nightmare
- .countElement(selectors.ticketSales.saleLine);
+ const result = await page.countElement(selectors.ticketSales.saleLine);
expect(result).toEqual(3);
});
@@ -265,67 +238,60 @@ xdescribe('Ticket Edit sale path', () => {
it('should select the second sale and transfer it to a valid ticket', async() => {
const targetTicketId = 12;
- const result = await nightmare
- .waitToClick(selectors.ticketSales.secondSaleCheckbox)
- .waitToClick(selectors.ticketSales.transferSaleButton)
- .focusElement(selectors.ticketSales.transferQuantityCell)
- .write(selectors.ticketSales.transferQuantityInput, '10\u000d')
- .write(selectors.ticketSales.moveToTicketInput, targetTicketId)
- .waitToClick(selectors.ticketSales.moveToTicketButton)
- .waitForURL(`ticket/${targetTicketId}/sale`)
- .parsedUrl();
+ await page.waitToClick(selectors.ticketSales.secondSaleCheckbox);
+ await page.waitToClick(selectors.ticketSales.transferSaleButton);
+ await page.focusElement(selectors.ticketSales.transferQuantityCell);
+ await page.write(selectors.ticketSales.transferQuantityInput, '10\u000d');
+ await page.write(selectors.ticketSales.moveToTicketInput, targetTicketId);
+ await page.waitToClick(selectors.ticketSales.moveToTicketButton);
+ await page.waitForURL(`ticket/${targetTicketId}/sale`);
+ const result = await page.parsedUrl();
expect(result.hash).toContain(`ticket/${targetTicketId}/sale`);
});
it('should confirm the transfered line is the correct one', async() => {
- const result = await nightmare
- .wait(selectors.ticketSales.secondSaleText)
- .waitToGetProperty(selectors.ticketSales.secondSaleText, 'innerText');
+ await page.wait(selectors.ticketSales.secondSaleText);
+ const result = await page.waitToGetProperty(selectors.ticketSales.secondSaleText, 'innerText');
expect(result).toContain(`Melee weapon heavy shield`);
});
it('should confirm the transfered quantity is the correct one', async() => {
- const result = await nightmare
- .waitToGetProperty(selectors.ticketSales.secondSaleQuantityCell, 'innerText');
+ const result = await page.waitToGetProperty(selectors.ticketSales.secondSaleQuantityCell, 'innerText');
expect(result).toContain('10');
});
it('should go back to the original ticket sales section', async() => {
- const url = await nightmare
- .waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton)
- .accessToSearchResult(16)
- .accessToSection('ticket.card.sale')
- .waitForURL('/sale')
- .parsedUrl();
+ await page.waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton);
+ await page.accessToSearchResult(16);
+ await page.accessToSection('ticket.card.sale');
+ await page.waitForURL('/sale');
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/sale');
});
it(`should confirm the original ticket has still three lines`, async() => {
- const result = await nightmare
- .wait(selectors.ticketSales.saleLine)
- .countElement(selectors.ticketSales.saleLine);
+ await page.wait(selectors.ticketSales.saleLine);
+ const result = await page.countElement(selectors.ticketSales.saleLine);
expect(result).toEqual(3);
});
it(`should confirm the second sale quantity is now half of it's original value after the transfer`, async() => {
- const result = await nightmare
- .waitToGetProperty(selectors.ticketSales.secondSaleQuantityCell, 'innerText');
+ const result = await page.waitToGetProperty(selectors.ticketSales.secondSaleQuantityCell, 'innerText');
expect(result).toContain('10');
});
it('should go back to the receiver ticket sales section', async() => {
- const url = await nightmare
- .waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton)
- .accessToSearchResult(12)
- .accessToSection('ticket.card.sale')
- .waitForURL('/sale')
- .parsedUrl();
+ await page.waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton);
+ await page.accessToSearchResult(12);
+ await page.accessToSection('ticket.card.sale');
+ await page.waitForURL('/sale');
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/sale');
});
@@ -333,44 +299,40 @@ xdescribe('Ticket Edit sale path', () => {
it('should transfer the sale back to the original ticket', async() => {
const targetTicketId = 16;
- const result = await nightmare
- .waitToClick(selectors.ticketSales.secondSaleCheckbox)
- .waitToClick(selectors.ticketSales.transferSaleButton)
- .write(selectors.ticketSales.moveToTicketInput, targetTicketId)
- .waitToClick(selectors.ticketSales.moveToTicketButton)
- .waitForURL(`ticket/${targetTicketId}/sale`)
- .parsedUrl();
+ await page.waitToClick(selectors.ticketSales.secondSaleCheckbox);
+ await page.waitToClick(selectors.ticketSales.transferSaleButton);
+ await page.write(selectors.ticketSales.moveToTicketInput, targetTicketId);
+ await page.waitToClick(selectors.ticketSales.moveToTicketButton);
+ await page.waitForURL(`ticket/${targetTicketId}/sale`);
+ const result = await page.parsedUrl();
expect(result.hash).toContain(`ticket/${targetTicketId}/sale`);
});
it('should confirm the original ticket received the line', async() => {
const expectedLines = 4;
- const result = await nightmare
- .waitForNumberOfElements(selectors.ticketSales.saleLine, expectedLines)
- .countElement(selectors.ticketSales.saleLine);
+ await page.waitForNumberOfElements(selectors.ticketSales.saleLine, expectedLines);
+ const result = await page.countElement(selectors.ticketSales.saleLine);
expect(result).toEqual(expectedLines);
});
it(`should throw an error when attempting to create a ticket for an inactive client`, async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.firstSaleCheckbox)
- .waitToClick(selectors.ticketSales.transferSaleButton)
- .waitToClick(selectors.ticketSales.moveToNewTicketButton)
- .waitToClick(selectors.ticketSales.acceptDeleteTicketButton)
- .waitForLastSnackbar();
+ await page.waitToClick(selectors.ticketSales.firstSaleCheckbox);
+ await page.waitToClick(selectors.ticketSales.transferSaleButton);
+ await page.waitToClick(selectors.ticketSales.moveToNewTicketButton);
+ await page.waitToClick(selectors.ticketSales.acceptDeleteTicketButton);
+ const message = await page.waitForSnackbar();
- expect(result).toEqual(`You can't create a ticket for a inactive client`);
+ expect(message.text).toBe(`You can't create a ticket for a inactive client`);
});
it('should go now to the ticket sales section of an active, not frozen client', async() => {
- const url = await nightmare
- .waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton)
- .accessToSearchResult(13)
- .accessToSection('ticket.card.sale')
- .waitForURL('/sale')
- .parsedUrl();
+ await page.waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton);
+ await page.accessToSearchResult(13);
+ await page.accessToSection('ticket.card.sale');
+ await page.waitForURL('/sale');
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/sale');
});
@@ -378,118 +340,106 @@ xdescribe('Ticket Edit sale path', () => {
it(`should select all sales, tranfer them to a new ticket and delete the sender ticket as it would've been left empty`, async() => {
const senderTicketId = 13;
- const url = await nightmare
- .waitToClick(selectors.ticketSales.selectAllSalesCheckbox)
- .waitToClick(selectors.ticketSales.transferSaleButton)
- .waitToClick(selectors.ticketSales.moveToNewTicketButton)
- .waitToClick(selectors.ticketSales.acceptDeleteTicketButton)
- .wait((selector, ticketId) => {
- return document.querySelector(selector).innerText.toLowerCase().indexOf(`${ticketId}`) == -1;
- }, selectors.ticketDescriptor.idLabelValue, senderTicketId)
- .parsedUrl();
+ await page.waitToClick(selectors.ticketSales.selectAllSalesCheckbox);
+ await page.waitToClick(selectors.ticketSales.transferSaleButton);
+ await page.waitToClick(selectors.ticketSales.moveToNewTicketButton);
+ await page.waitToClick(selectors.ticketSales.acceptDeleteTicketButton);
+ await page.wait((selector, ticketId) => {
+ return document.querySelector(selector).innerText.toLowerCase().indexOf(`${ticketId}`) == -1;
+ }, selectors.ticketDescriptor.idLabelValue, senderTicketId);
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/sale');
});
it('should confirm the new ticket received the line', async() => {
- const result = await nightmare
- .countElement(selectors.ticketSales.saleLine);
+ const result = await page.countElement(selectors.ticketSales.saleLine);
expect(result).toEqual(1);
});
it('should check the first sale reserved icon isnt visible', async() => {
- const result = await nightmare
- .isVisible(selectors.ticketSales.firstSaleReservedIcon);
+ const result = await page.isVisible(selectors.ticketSales.firstSaleReservedIcon);
expect(result).toBeFalsy();
});
it('should mark the first sale as reserved', async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.firstSaleCheckbox)
- .waitToClick(selectors.ticketSales.moreMenu)
- .waitToClick(selectors.ticketSales.moreMenuReserve)
- .waitForClassNotPresent(selectors.ticketSales.firstSaleReservedIcon, 'ng-hide')
- .isVisible(selectors.ticketSales.firstSaleReservedIcon);
+ await page.waitToClick(selectors.ticketSales.firstSaleCheckbox);
+ await page.waitToClick(selectors.ticketSales.moreMenu);
+ await page.waitToClick(selectors.ticketSales.moreMenuReserve);
+ await page.waitForClassNotPresent(selectors.ticketSales.firstSaleReservedIcon, 'ng-hide');
+ const result = await page.isVisible(selectors.ticketSales.firstSaleReservedIcon);
expect(result).toBeTruthy();
});
it('should unmark the first sale as reserved', async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.moreMenu)
- .waitToClick(selectors.ticketSales.moreMenuUnmarkReseved)
- .waitForClassPresent(selectors.ticketSales.firstSaleReservedIcon, 'ng-hide')
- .isVisible(selectors.ticketSales.firstSaleReservedIcon);
+ await page.waitToClick(selectors.ticketSales.moreMenu);
+ await page.waitToClick(selectors.ticketSales.moreMenuUnmarkReseved);
+ await page.waitForClassPresent(selectors.ticketSales.firstSaleReservedIcon, 'ng-hide');
+ const result = await page.isVisible(selectors.ticketSales.firstSaleReservedIcon);
expect(result).toBeFalsy();
});
it('should update all sales discount', async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.moreMenu)
- .waitToClick(selectors.ticketSales.moreMenuUpdateDiscount)
- // .write(selectors.ticketSales.moreMenuUpdateDiscountInput, 100) can't find the selector on app (deleted the selector), menu option was removed?
- .write('body', '\u000d')
- .waitForTextInElement(selectors.ticketSales.totalImport, '0.00')
- .waitToGetProperty(selectors.ticketSales.totalImport, 'innerText');
+ await page.waitToClick(selectors.ticketSales.moreMenu);
+ await page.waitToClick(selectors.ticketSales.moreMenuUpdateDiscount);
+ // .write(selectors.ticketSales.moreMenuUpdateDiscountInput, 100) can't find the selector on app (deleted the selector), menu option was removed?
+ await page.write('body', '\u000d');
+ await page.waitForTextInElement(selectors.ticketSales.totalImport, '0.00');
+ const result = await page.waitToGetProperty(selectors.ticketSales.totalImport, 'innerText');
expect(result).toContain('0.00');
});
it('should log in as Production role and go to a target ticket summary', async() => {
- const url = await nightmare
- .loginAndModule('production', 'ticket')
- .accessToSearchResult(13)
- .waitForURL('/summary')
- .parsedUrl();
+ await page.loginAndModule('production', 'ticket');
+ await page.accessToSearchResult(13);
+ await page.waitForURL('/summary');
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/summary');
});
it(`should check it's state is deleted`, async() => {
- const result = await nightmare
- .waitToGetProperty(selectors.ticketDescriptor.stateLabelValue, 'innerText');
+ const result = await page.waitToGetProperty(selectors.ticketDescriptor.stateLabelValue, 'innerText');
expect(result).toEqual('State Eliminado');
});
describe('when state is preparation and loged as Production', () => {
it(`should not be able to edit the sale price`, async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton)
- .accessToSearchResult(8)
- .accessToSection('ticket.card.sale')
- .waitToClick(selectors.ticketSales.firstSalePrice)
- .exists(selectors.ticketSales.firstSalePriceInput);
+ await page.waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton);
+ await page.accessToSearchResult(8);
+ await page.accessToSection('ticket.card.sale');
+ await page.waitToClick(selectors.ticketSales.firstSalePrice);
+ const result = await page.exists(selectors.ticketSales.firstSalePriceInput);
expect(result).toBeFalsy();
});
it(`should not be able to edit the sale discount`, async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.firstSaleDiscount)
- .exists(selectors.ticketSales.firstSaleDiscountInput);
+ await page.waitToClick(selectors.ticketSales.firstSaleDiscount);
+ const result = await page.exists(selectors.ticketSales.firstSaleDiscountInput);
expect(result).toBeFalsy();
});
it(`should not be able to edit the sale state`, async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.stateMenuButton)
- .exists(selectors.ticketSales.stateMenuOptions);
+ await page.waitToClick(selectors.ticketSales.stateMenuButton);
+ const result = await page.exists(selectors.ticketSales.stateMenuOptions);
expect(result).toBeFalsy();
});
it('should log in as salesPerson then go to the sales of a target ticket', async() => {
- const url = await nightmare
- .loginAndModule('salesPerson', 'ticket')
- .accessToSearchResult(8)
- .accessToSection('ticket.card.sale')
- .waitForURL('/sale')
- .parsedUrl();
+ await page.loginAndModule('salesPerson', 'ticket');
+ await page.accessToSearchResult(8);
+ await page.accessToSection('ticket.card.sale');
+ await page.waitForURL('/sale');
+ const url = await page.parsedUrl();
expect(url.hash).toContain('/sale');
});
@@ -497,25 +447,22 @@ xdescribe('Ticket Edit sale path', () => {
describe('when state is preparation and loged as salesPerson', () => {
it(`shouldn't be able to edit the sale price`, async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.firstSalePrice)
- .exists(selectors.ticketSales.firstSalePriceInput);
+ await page.waitToClick(selectors.ticketSales.firstSalePrice);
+ const result = await page.exists(selectors.ticketSales.firstSalePriceInput);
expect(result).toBeFalsy();
});
it(`should be able to edit the sale discount`, async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.firstSaleDiscount)
- .exists(selectors.ticketSales.firstSaleDiscountInput);
+ await page.waitToClick(selectors.ticketSales.firstSaleDiscount);
+ const result = await page.exists(selectors.ticketSales.firstSaleDiscountInput);
expect(result).toBeFalsy();
});
it(`should not be able to edit the sale state`, async() => {
- const result = await nightmare
- .waitToClick(selectors.ticketSales.stateMenuButton)
- .exists(selectors.ticketSales.stateMenuOptions);
+ await page.waitToClick(selectors.ticketSales.stateMenuButton);
+ const result = await page.exists(selectors.ticketSales.stateMenuOptions);
expect(result).toBeFalsy();
});
diff --git a/e2e/paths/05-ticket/01_observations.spec.js b/e2e/paths/05-ticket/01_observations.spec.js
index cccfa8b67..d919b8ed3 100644
--- a/e2e/paths/05-ticket/01_observations.spec.js
+++ b/e2e/paths/05-ticket/01_observations.spec.js
@@ -22,9 +22,9 @@ describe('Ticket Create notes path', () => {
await page.autocompleteSearch(selectors.ticketNotes.firstNoteType, 'observation one');
await page.write(selectors.ticketNotes.firstDescription, 'description');
await page.waitToClick(selectors.ticketNotes.submitNotesButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the note is the expected one', async() => {
@@ -43,8 +43,8 @@ describe('Ticket Create notes path', () => {
it('should delete the note', async() => {
await page.waitToClick(selectors.ticketNotes.firstNoteRemoveButton);
await page.waitToClick(selectors.ticketNotes.submitNotesButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
});
diff --git a/e2e/paths/05-ticket/02_expeditions_and_log.spec.js b/e2e/paths/05-ticket/02_expeditions_and_log.spec.js
index f0accedaf..2d046e3a9 100644
--- a/e2e/paths/05-ticket/02_expeditions_and_log.spec.js
+++ b/e2e/paths/05-ticket/02_expeditions_and_log.spec.js
@@ -30,7 +30,7 @@ describe('Ticket expeditions and log path', () => {
});
it(`should confirm the expedition deleted is shown now in the ticket log`, async() => {
- await page.waitToClick(selectors.ticketLog.logButton);
+ await page.accessToSection('ticket.card.log');
const changedBy = await page
.waitToGetProperty(selectors.ticketLog.changedBy, 'innerText');
diff --git a/e2e/paths/05-ticket/04_packages.spec.js b/e2e/paths/05-ticket/04_packages.spec.js
index fd2945877..3db53587c 100644
--- a/e2e/paths/05-ticket/04_packages.spec.js
+++ b/e2e/paths/05-ticket/04_packages.spec.js
@@ -22,18 +22,18 @@ describe('Ticket Create packages path', () => {
await page.waitToClick(selectors.ticketPackages.addPackageButton);
await page.write(selectors.ticketPackages.firstQuantity, '99');
await page.waitToClick(selectors.ticketPackages.savePackagesButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Package cannot be blank');
+ expect(message.text).toBe('Package cannot be blank');
});
it(`should delete the first package and receive and error to save a new one with blank quantity`, async() => {
await page.clearInput(selectors.ticketPackages.firstQuantity);
await page.autocompleteSearch(selectors.ticketPackages.firstPackage, 'Container medical box 1m');
await page.waitToClick(selectors.ticketPackages.savePackagesButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Some fields are invalid');
+ expect(message.text).toBe('Some fields are invalid');
});
it(`should confirm the quantity input isn't invalid yet`, async() => {
@@ -49,9 +49,9 @@ describe('Ticket Create packages path', () => {
await page.clearInput(selectors.ticketPackages.firstQuantity);
await page.write(selectors.ticketPackages.firstQuantity, '-99');
await page.waitToClick(selectors.ticketPackages.savePackagesButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the first select is the expected one`, async() => {
diff --git a/e2e/paths/05-ticket/05_tracking_state.spec.js b/e2e/paths/05-ticket/05_tracking_state.spec.js
index 2623966be..34f3c4d44 100644
--- a/e2e/paths/05-ticket/05_tracking_state.spec.js
+++ b/e2e/paths/05-ticket/05_tracking_state.spec.js
@@ -26,17 +26,17 @@ describe('Ticket Create new tracking state path', () => {
it(`should attempt create a new state but receive an error if state is empty`, async() => {
await page.waitToClick(selectors.createStateView.saveStateButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('State cannot be blank');
+ expect(message.text).toBe('State cannot be blank');
});
it(`should create a new state`, async() => {
await page.autocompleteSearch(selectors.createStateView.state, '¿Fecha?');
await page.waitToClick(selectors.createStateView.saveStateButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
});
@@ -56,14 +56,14 @@ describe('Ticket Create new tracking state path', () => {
await page.waitFor(1500);
await page.autocompleteSearch(selectors.createStateView.state, 'Encajado');
await page.waitToClick(selectors.createStateView.saveStateButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual(`You don't have enough privileges`);
+ expect(message.text).toBe(`You don't have enough privileges`);
});
it(`should make sure the worker gets autocomplete uppon selecting the assigned state`, async() => {
await page.autocompleteSearch(selectors.createStateView.state, 'asignado');
- let result = await page
+ const result = await page
.waitToGetProperty(selectors.createStateView.worker, 'value');
expect(result).toEqual('salesPersonNick');
@@ -71,9 +71,9 @@ describe('Ticket Create new tracking state path', () => {
it(`should succesfully create a valid state`, async() => {
await page.waitToClick(selectors.createStateView.saveStateButton);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
});
});
diff --git a/e2e/paths/05-ticket/09_weekly.spec.js b/e2e/paths/05-ticket/09_weekly.spec.js
index 1629107fb..79722d2f7 100644
--- a/e2e/paths/05-ticket/09_weekly.spec.js
+++ b/e2e/paths/05-ticket/09_weekly.spec.js
@@ -17,7 +17,6 @@ describe('Ticket descriptor path', () => {
});
it('should count the amount of tickets in the turns section', async() => {
- await page.waitForNumberOfElements(selectors.ticketsIndex.weeklyTicket, 5);
const result = await page.countElement(selectors.ticketsIndex.weeklyTicket);
expect(result).toEqual(5);
@@ -32,9 +31,9 @@ describe('Ticket descriptor path', () => {
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
await page.waitToClick(selectors.ticketDescriptor.moreMenuAddToTurn);
await page.waitToClick(selectors.ticketDescriptor.thursdayButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should again click on the Tickets button of the top bar menu', async() => {
@@ -67,9 +66,9 @@ describe('Ticket descriptor path', () => {
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
await page.waitToClick(selectors.ticketDescriptor.moreMenuAddToTurn);
await page.waitToClick(selectors.ticketDescriptor.saturdayButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should click on the Tickets button of the top bar menu once again', async() => {
@@ -87,29 +86,36 @@ describe('Ticket descriptor path', () => {
});
it('should now search for the weekly ticket 11', async() => {
- await page.write(selectors.ticketsIndex.topbarSearch, '11');
- await page.waitToClick(selectors.ticketsIndex.searchButton);
- await page.waitForNumberOfElements(selectors.ticketsIndex.searchWeeklyResult, 1);
- const result = await page.countElement(selectors.ticketsIndex.searchWeeklyResult);
+ await page.doSearch('11');
+ const nResults = await page.countElement(selectors.ticketsIndex.searchWeeklyResult);
- expect(result).toEqual(1);
+ expect(nResults).toEqual(1);
});
it('should delete the weekly ticket 11', async() => {
await page.waitToClick(selectors.ticketsIndex.firstWeeklyTicketDeleteIcon);
await page.waitToClick(selectors.ticketsIndex.acceptDeleteTurn);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the sixth weekly ticket was deleted', async() => {
- await page.waitForContentLoaded();
- await page.clearInput('vn-searchbar');
- await page.waitToClick(selectors.ticketsIndex.searchWeeklyButton);
- await page.waitForNumberOfElements(selectors.ticketsIndex.searchWeeklyResult, 5);
- const result = await page.countElement(selectors.ticketsIndex.searchWeeklyResult);
+ await page.doSearch();
+ const nResults = await page.countElement(selectors.ticketsIndex.searchWeeklyResult);
- expect(result).toEqual(5);
+ expect(nResults).toEqual(5);
+ });
+
+ it('should update the agency then remove it afterwards', async() => {
+ await page.autocompleteSearch(selectors.ticketsIndex.firstWeeklyTicketAgency, 'Silla247');
+ let message = await page.waitForSnackbar();
+
+ expect(message.type).toBe('success');
+
+ await page.clearInput(selectors.ticketsIndex.firstWeeklyTicketAgency);
+ message = await page.waitForSnackbar();
+
+ expect(message.type).toBe('success');
});
});
diff --git a/e2e/paths/05-ticket/10_request.spec.js b/e2e/paths/05-ticket/10_request.spec.js
index 2bb0cbb73..334b8ba5e 100644
--- a/e2e/paths/05-ticket/10_request.spec.js
+++ b/e2e/paths/05-ticket/10_request.spec.js
@@ -24,9 +24,9 @@ describe('Ticket purchase request path', () => {
await page.autocompleteSearch(selectors.ticketRequests.atender, 'buyerNick');
await page.write(selectors.ticketRequests.price, '999');
await page.waitToClick(selectors.ticketRequests.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should have been redirected to the request index', async() => {
@@ -36,9 +36,9 @@ describe('Ticket purchase request path', () => {
it(`should edit the third request quantity as it's state is still new`, async() => {
await page.write(selectors.ticketRequests.thirdRequestQuantity, '9');
await page.keyboard.press('Enter');
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the new request was added', async() => {
@@ -64,9 +64,9 @@ describe('Ticket purchase request path', () => {
it('should delete the added request', async() => {
await page.waitToClick(selectors.ticketRequests.thirdRemoveRequestButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the request was deleted', async() => {
diff --git a/e2e/paths/05-ticket/11_diary.spec.js b/e2e/paths/05-ticket/11_diary.spec.js
index 5e900fd25..e4c63855a 100644
--- a/e2e/paths/05-ticket/11_diary.spec.js
+++ b/e2e/paths/05-ticket/11_diary.spec.js
@@ -1,66 +1,31 @@
import selectors from '../../helpers/selectors.js';
import getBrowser from '../../helpers/puppeteer';
-// #2026 Fallo en relocate de descriptor popover
+// #2221 Local MySQL8 crashes when rest method Items/getBalance is called
xdescribe('Ticket diary path', () => {
- let browser;
let page;
beforeAll(async() => {
- browser = await getBrowser();
- page = browser.page;
+ page = (await getBrowser()).page;
await page.loginAndModule('employee', 'ticket');
});
afterAll(async() => {
- await browser.close();
+ await page.browser().close();
});
- it('should search for a specific ticket', async() => {
- await page.write(selectors.ticketsIndex.topbarSearch, '1');
- await page.waitToClick(selectors.ticketsIndex.searchButton);
- await page.waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1);
- const result = await page.countElement(selectors.ticketsIndex.searchResult);
-
- expect(result).toEqual(1);
- });
-
- it(`should click on the search result to access to the ticket summary`, async() => {
- await page.waitForTextInElement(selectors.ticketsIndex.searchResult, 'Bat cave');
- await page.waitToClick(selectors.ticketsIndex.searchResult);
- let url = await page.expectURL('/summary'); // use waitForState instead
-
- expect(url).toBe(true);
- });
-
- it(`should navigate to the item diary from the 1st sale item id descriptor popover`, async() => {
+ it(`should navigate to item diary from ticket sale and check the lines`, async() => {
+ await page.accessToSearchResult('1');
await page.waitToClick(selectors.ticketSummary.firstSaleItemId);
- await page.waitForTransitionEnd('.vn-popover');
await page.waitToClick(selectors.ticketSummary.popoverDiaryButton);
- let url = await page.expectURL('/diary'); // use waitForState instead
+ await page.waitForState('item.card.diary');
- expect(url).toBe(true);
- });
+ const secondIdClass = await page.getClassName(selectors.itemDiary.secondTicketId);
+ const fourthBalanceClass = await page.getClassName(selectors.itemDiary.fourthBalance);
+ const firstBalanceClass = await page.getClassName(selectors.itemDiary.firstBalance);
- it(`should check the second line id is marked as message`, async() => {
- const result = await page
- .waitToGetProperty(selectors.itemDiary.secondTicketId, 'className');
-
- expect(result).toContain('message');
- });
-
- it(`should check the third line balance is marked as message`, async() => {
- const result = await page
- .waitToGetProperty(`${selectors.itemDiary.fourthBalance} > span`, 'className');
-
- expect(result).toContain('message');
- });
-
- it(`should change to the warehouse two and check there are sales marked as negative balance`, async() => {
- await page.autocompleteSearch(selectors.itemDiary.warehouse, 'Warehouse Two');
- const result = await page
- .waitToGetProperty(selectors.itemDiary.firstBalance, 'className');
-
- expect(result).toContain('balance');
+ expect(secondIdClass).toContain('message');
+ expect(fourthBalanceClass).toContain('message');
+ expect(firstBalanceClass).toContain('balance');
});
});
diff --git a/e2e/paths/05-ticket/12_descriptor.spec.js b/e2e/paths/05-ticket/12_descriptor.spec.js
index ce9f064dd..faeae0c3f 100644
--- a/e2e/paths/05-ticket/12_descriptor.spec.js
+++ b/e2e/paths/05-ticket/12_descriptor.spec.js
@@ -26,9 +26,9 @@ describe('Ticket descriptor path', () => {
await page.waitToClick(selectors.ticketDescriptor.moreMenuChangeShippedHour);
await page.pickTime(selectors.ticketDescriptor.changeShippedHour, '08:15');
await page.waitToClick(selectors.ticketDescriptor.acceptChangeHourButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Shipped hour updated');
+ expect(message.text).toBe('Shipped hour updated');
});
it(`should confirm the ticket descriptor shows the correct shipping hour`, async() => {
@@ -42,9 +42,9 @@ describe('Ticket descriptor path', () => {
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
await page.waitToClick(selectors.ticketDescriptor.moreMenuDeleteTicket);
await page.waitToClick(selectors.ticketDescriptor.acceptDeleteButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Ticket deleted');
+ expect(message.text).toBe('Ticket deleted');
});
it('should have been relocated to the ticket index', async() => {
@@ -82,12 +82,13 @@ describe('Ticket descriptor path', () => {
it('should add a ticket as stowaway', async() => {
await page.waitToClick(selectors.ticketDescriptor.addStowawayDialogFirstTicket);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
- it(`should check the state of the stowaway ticket is embarked`, async() => {
+ xit(`should check the state of the stowaway ticket is embarked`, async() => {
+ await page.wait(500);
const state = await page.waitToGetProperty(selectors.ticketDescriptor.stateLabelValue, 'innerText');
expect(state).toEqual('State Embarcando');
@@ -99,13 +100,13 @@ describe('Ticket descriptor path', () => {
});
it('should delete the stowaway', async() => {
- await page.waitForContentLoaded();
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
+ await page.waitForContentLoaded();
await page.waitToClick(selectors.ticketDescriptor.moreMenuDeleteStowawayButton);
await page.waitToClick(selectors.ticketDescriptor.acceptDeleteStowawayButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the ship buton doesn't exisist any more`, async() => {
@@ -130,13 +131,13 @@ describe('Ticket descriptor path', () => {
});
it('should invoice the ticket using the descriptor more menu', async() => {
- await page.waitForContentLoaded();
await page.waitToClick(selectors.ticketDescriptor.moreMenu);
+ await page.waitForContentLoaded();
await page.waitToClick(selectors.ticketDescriptor.moreMenuMakeInvoice);
await page.waitToClick(selectors.ticketDescriptor.acceptInvoiceOutButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Ticket invoiced');
+ expect(message.text).toBe('Ticket invoiced');
});
it(`should make sure the ticket summary have an invoiceOutFk`, async() => {
diff --git a/e2e/paths/05-ticket/13_services.spec.js b/e2e/paths/05-ticket/13_services.spec.js
index 1a32ea944..08b9219a5 100644
--- a/e2e/paths/05-ticket/13_services.spec.js
+++ b/e2e/paths/05-ticket/13_services.spec.js
@@ -32,9 +32,9 @@ describe('Ticket services path', () => {
await page.clearInput(selectors.ticketService.firstPrice);
await page.write(selectors.ticketService.firstPrice, '999');
await page.waitToClick(selectors.ticketService.saveServiceButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual(`The current ticket can't be modified`);
+ expect(message.text).toBe(`The current ticket can't be modified`);
});
});
@@ -56,9 +56,9 @@ describe('Ticket services path', () => {
it('should receive an error if you attempt to save it with empty fields', async() => {
await page.waitToClick(selectors.ticketService.saveServiceButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual(`can't be blank`);
+ expect(message.text).toBe(`can't be blank`);
});
it('should click on the add new service type to open the dialog', async() => {
@@ -71,9 +71,9 @@ describe('Ticket services path', () => {
it('should receive an error if service type is empty on submit', async() => {
await page.waitToClick(selectors.ticketService.saveServiceTypeButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual(`Name can't be empty`);
+ expect(message.text).toBe(`Name can't be empty`);
});
it('should create a new service type then add price then create the service', async() => {
@@ -81,11 +81,10 @@ describe('Ticket services path', () => {
await page.autocompleteSearch(selectors.ticketService.newServiceTypeExpense, 'Retencion');
await page.waitToClick(selectors.ticketService.saveServiceTypeButton);
await page.write(selectors.ticketService.firstPrice, '999');
- await page.waitFor(1000); // time needed for the button to be clickable
await page.waitToClick(selectors.ticketService.saveServiceButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the service description was created correctly', async() => {
@@ -120,19 +119,17 @@ describe('Ticket services path', () => {
it('should delete the service', async() => {
await page.waitToClick(selectors.ticketService.fistDeleteServiceButton);
await page.waitForNumberOfElements(selectors.ticketService.serviceLine, 0);
- await page.waitFor(1000); // without this wait it fails to click the save button
await page.waitToClick(selectors.ticketService.saveServiceButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the service was removed`, async() => {
await page.reloadSection('ticket.card.service');
- await page.waitForNumberOfElements(selectors.ticketService.serviceLine, 0);
- const result = await page.countElement(selectors.ticketService.serviceLine);
+ const nResults = await page.countElement(selectors.ticketService.serviceLine);
- expect(result).toEqual(0);
+ expect(nResults).toEqual(0);
});
});
});
diff --git a/e2e/paths/05-ticket/14_create_ticket.spec.js b/e2e/paths/05-ticket/14_create_ticket.spec.js
index 176e89930..4ce2e5156 100644
--- a/e2e/paths/05-ticket/14_create_ticket.spec.js
+++ b/e2e/paths/05-ticket/14_create_ticket.spec.js
@@ -30,9 +30,9 @@ describe('Ticket create path', () => {
await page.autocompleteSearch(selectors.createTicketView.warehouse, 'Warehouse One');
await page.autocompleteSearch(selectors.createTicketView.agency, 'Silla247');
await page.waitToClick(selectors.createTicketView.createButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should check the url is now the summary of the ticket', async() => {
diff --git a/e2e/paths/05-ticket/16_summary.spec.js b/e2e/paths/05-ticket/16_summary.spec.js
index 7ead648a2..f6808651e 100644
--- a/e2e/paths/05-ticket/16_summary.spec.js
+++ b/e2e/paths/05-ticket/16_summary.spec.js
@@ -78,14 +78,14 @@ describe('Ticket Summary path', () => {
it('should click on the SET OK button', async() => {
await page.waitToClick(selectors.ticketSummary.setOk);
- let result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the ticket state was updated', async() => {
await page.waitForSpinnerLoad();
- let result = await page.waitToGetProperty(selectors.ticketSummary.state, 'innerText');
+ const result = await page.waitToGetProperty(selectors.ticketSummary.state, 'innerText');
expect(result).toContain('OK');
});
diff --git a/e2e/paths/05-ticket/17_log.spec.js b/e2e/paths/05-ticket/17_log.spec.js
index c677d2e62..97e121460 100644
--- a/e2e/paths/05-ticket/17_log.spec.js
+++ b/e2e/paths/05-ticket/17_log.spec.js
@@ -27,14 +27,13 @@ describe('Ticket log path', () => {
await page.autocompleteSearch(selectors.ticketNotes.firstNoteType, 'observation one');
await page.write(selectors.ticketNotes.firstDescription, 'description');
await page.waitToClick(selectors.ticketNotes.submitNotesButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should navigate to the log section', async() => {
await page.accessToSection('ticket.card.log');
- await page.waitForState('ticket.card.log');
});
it('should set the viewport width to 1920 to see the table full width', async() => {
diff --git a/e2e/paths/05-ticket/18_index_payout.spec.js b/e2e/paths/05-ticket/18_index_payout.spec.js
index 749428c44..b1dc06e51 100644
--- a/e2e/paths/05-ticket/18_index_payout.spec.js
+++ b/e2e/paths/05-ticket/18_index_payout.spec.js
@@ -16,9 +16,7 @@ describe('Ticket index payout path', () => {
it('should navigate to the ticket index', async() => {
await page.loginAndModule('administrative', 'ticket');
- let url = await page.expectURL('#!/ticket/index');
-
- expect(url).toBe(true);
+ await page.waitForState('ticket.index');
});
it('should check three tickets 2 of a clinet and 1 of another', async() => {
@@ -26,9 +24,9 @@ describe('Ticket index payout path', () => {
await page.waitToClick(selectors.ticketsIndex.secondTicketCheckbox);
await page.waitToClick(selectors.ticketsIndex.sixthTicketCheckbox);
await page.waitToClick(selectors.ticketsIndex.payoutButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('You cannot make a payment on account from multiple clients');
+ expect(message.text).toBe('You cannot make a payment on account from multiple clients');
});
it('should uncheck the sixth ticket result and check the third which is from the same client then open the payout form', async() => {
@@ -42,9 +40,9 @@ describe('Ticket index payout path', () => {
it('should fill the company and bank to perform a payout', async() => {
await page.autocompleteSearch(selectors.ticketsIndex.payoutBank, 'cash');
await page.waitToClick(selectors.ticketsIndex.submitPayout);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should navigate to the client balance section and check a new balance line was entered', async() => {
diff --git a/e2e/paths/06-claim/01_basic_data.spec.js b/e2e/paths/06-claim/01_basic_data.spec.js
index 222cb558b..a255188e2 100644
--- a/e2e/paths/06-claim/01_basic_data.spec.js
+++ b/e2e/paths/06-claim/01_basic_data.spec.js
@@ -25,9 +25,9 @@ describe('Claim edit basic data path', () => {
await page.clearTextarea(selectors.claimBasicData.observation);
await page.write(selectors.claimBasicData.observation, 'edited observation');
await page.waitToClick(selectors.claimBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should have been redirected to the next section of claims as the role is salesAssistant`, async() => {
@@ -54,8 +54,8 @@ describe('Claim edit basic data path', () => {
await page.clearTextarea(selectors.claimBasicData.observation);
await page.write(selectors.claimBasicData.observation, 'Observation one');
await page.waitToClick(selectors.claimBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
});
diff --git a/e2e/paths/06-claim/02_development.spec.js b/e2e/paths/06-claim/02_development.spec.js
index 970a801ee..8efae48d4 100644
--- a/e2e/paths/06-claim/02_development.spec.js
+++ b/e2e/paths/06-claim/02_development.spec.js
@@ -26,9 +26,9 @@ describe('Claim development', () => {
await page.autocompleteSearch(selectors.claimDevelopment.secondClaimWorker, 'deliveryNick');
await page.autocompleteSearch(selectors.claimDevelopment.secondClaimRedelivery, 'Reparto');
await page.waitToClick(selectors.claimDevelopment.saveDevelopmentButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should redirect to the next section of claims as the role is salesAssistant`, async() => {
@@ -43,9 +43,9 @@ describe('Claim development', () => {
await page.autocompleteSearch(selectors.claimDevelopment.firstClaimWorker, 'adminAssistantNick');
await page.autocompleteSearch(selectors.claimDevelopment.firstClaimRedelivery, 'Cliente');
await page.waitToClick(selectors.claimDevelopment.saveDevelopmentButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the first development is the expected one', async() => {
diff --git a/e2e/paths/06-claim/03_detail.spec.js b/e2e/paths/06-claim/03_detail.spec.js
index 93d2cba4c..9d1f6eee1 100644
--- a/e2e/paths/06-claim/03_detail.spec.js
+++ b/e2e/paths/06-claim/03_detail.spec.js
@@ -21,9 +21,9 @@ xdescribe('Claim detail', () => {
it('should add the first claimable item from ticket to the claim', async() => {
await page.waitToClick(selectors.claimDetail.addItemButton);
await page.waitToClick(selectors.claimDetail.firstClaimableSaleFromTicket);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the claim contains now two items', async() => {
@@ -36,9 +36,9 @@ xdescribe('Claim detail', () => {
await page.clearInput(selectors.claimDetail.firstItemQuantityInput); // selector deleted, find new upon fixes
await page.write(selectors.claimDetail.firstItemQuantityInput, '4'); // selector deleted, find new upon fixes
await page.keyboard.press('Enter');
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the first item quantity, and the claimed total were correctly edited', async() => {
@@ -65,9 +65,9 @@ xdescribe('Claim detail', () => {
await page.waitToClick(selectors.claimDetail.secondItemDiscount);
await page.write(selectors.claimDetail.discount, '100');
await page.keyboard.press('Enter');
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should check the mana is the expected one', async() => {
@@ -79,9 +79,9 @@ xdescribe('Claim detail', () => {
it('should delete the second item from the claim', async() => {
await page.waitToClick(selectors.claimDetail.secondItemDeleteButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the claim contains now one item', async() => {
@@ -93,9 +93,9 @@ xdescribe('Claim detail', () => {
it('should add the deleted ticket from to the claim', async() => {
await page.waitToClick(selectors.claimDetail.addItemButton);
await page.waitToClick(selectors.claimDetail.firstClaimableSaleFromTicket);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should have been redirected to the next section in claims`, async() => {
diff --git a/e2e/paths/06-claim/04_claim_action.spec.js b/e2e/paths/06-claim/04_claim_action.spec.js
index a482e21c3..9897a3ef3 100644
--- a/e2e/paths/06-claim/04_claim_action.spec.js
+++ b/e2e/paths/06-claim/04_claim_action.spec.js
@@ -19,33 +19,36 @@ describe('Claim action path', () => {
it('should import the claim', async() => {
await page.waitToClick(selectors.claimAction.importClaimButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should import the second importable ticket', async() => {
- await page.waitFor(3000); // the animation adding the header element for the claimed total obscures somehow other elements for about 2 seconds
+ // the animation adding the header element for the claimed total
+ // obscures somehow other elements for about 2 seconds
+ await page.waitFor(3000);
+
await page.waitToClick(selectors.claimAction.importTicketButton);
await page.waitToClick(selectors.claimAction.secondImportableTicket);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should edit the second line destination field', async() => {
await page.waitForContentLoaded();
await page.autocompleteSearch(selectors.claimAction.secondLineDestination, 'Bueno');
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should delete the first line', async() => {
await page.waitToClick(selectors.claimAction.firstDeleteLine);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toContain('Data saved!');
+ expect(message.type).toBe('success');
});
it('should refresh the view to check the remaining line is the expected one', async() => {
@@ -57,17 +60,17 @@ describe('Claim action path', () => {
it('should delete the current first line', async() => {
await page.waitToClick(selectors.claimAction.firstDeleteLine);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should check the "is paid with mana" checkbox', async() => {
page.waitFor(3000); // can't use waitForNavigation here and needs more time than a single second to get the section ready...
await page.waitToClick(selectors.claimAction.isPaidWithManaCheckbox);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the "is paid with mana" checkbox is checked', async() => {
diff --git a/e2e/paths/06-claim/06_descriptor.spec.js b/e2e/paths/06-claim/06_descriptor.spec.js
index ee49fe245..43d046d62 100644
--- a/e2e/paths/06-claim/06_descriptor.spec.js
+++ b/e2e/paths/06-claim/06_descriptor.spec.js
@@ -40,9 +40,9 @@ describe('claim Descriptor path', () => {
it(`should delete the claim`, async() => {
await page.waitToClick(selectors.claimDescriptor.moreMenuDeleteClaim);
await page.waitToClick(selectors.claimDescriptor.acceptDeleteClaim);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Claim deleted!');
+ expect(message.text).toBe('Claim deleted!');
});
it(`should have been relocated to the claim index`, async() => {
@@ -50,11 +50,9 @@ describe('claim Descriptor path', () => {
});
it(`should search for the deleted claim to find no results`, async() => {
- await page.write(selectors.claimsIndex.searchClaimInput, claimId);
- await page.waitToClick(selectors.claimsIndex.searchButton);
- await page.waitForNumberOfElements(selectors.claimsIndex.searchResult, 0);
- const result = await page.countElement(selectors.claimsIndex.searchResult);
+ await page.doSearch(claimId);
+ const nResults = await page.countElement(selectors.claimsIndex.searchResult);
- expect(result).toEqual(0);
+ expect(nResults).toEqual(0);
});
});
diff --git a/e2e/paths/07-order/02_basic_data.spec.js b/e2e/paths/07-order/02_basic_data.spec.js
index 2c3292b61..38d6619e0 100644
--- a/e2e/paths/07-order/02_basic_data.spec.js
+++ b/e2e/paths/07-order/02_basic_data.spec.js
@@ -23,9 +23,9 @@ describe('Order edit basic data path', () => {
await page.autocompleteSearch(selectors.orderBasicData.client, 'Tony Stark');
await page.autocompleteSearch(selectors.orderBasicData.address, 'Tony Stark');
await page.waitToClick(selectors.orderBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual(`You can't make changes on the basic data of an confirmed order or with rows`);
+ expect(message.text).toBe(`You can't make changes on the basic data of an confirmed order or with rows`);
});
});
@@ -45,9 +45,9 @@ describe('Order edit basic data path', () => {
it('should not be able to change anything', async() => {
await page.write(selectors.orderBasicData.observation, 'observation');
await page.waitToClick(selectors.orderBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual(`You can't make changes on the basic data of an confirmed order or with rows`);
+ expect(message.text).toBe(`You can't make changes on the basic data of an confirmed order or with rows`);
});
});
@@ -79,9 +79,9 @@ describe('Order edit basic data path', () => {
await page.autocompleteSearch(selectors.orderBasicData.agency, 'Silla247');
await page.write(selectors.orderBasicData.observation, 'my observation');
await page.waitToClick(selectors.orderBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toContain('Data saved!');
+ expect(message.type).toBe('success');
});
it('should now confirm the client have been edited', async() => {
diff --git a/e2e/paths/07-order/03_lines.spec.js b/e2e/paths/07-order/03_lines.spec.js
index 450e1b9c9..6f87b45f0 100644
--- a/e2e/paths/07-order/03_lines.spec.js
+++ b/e2e/paths/07-order/03_lines.spec.js
@@ -26,9 +26,9 @@ describe('Order lines', () => {
it('should delete the first line in the order', async() => {
await page.waitToClick(selectors.orderLine.firstLineDeleteButton);
await page.waitToClick(selectors.orderLine.confirmButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the order subtotal has changed', async() => {
diff --git a/e2e/paths/08-route/02_basic_data.spec.js b/e2e/paths/08-route/02_basic_data.spec.js
index 66e516366..10edbcd8a 100644
--- a/e2e/paths/08-route/02_basic_data.spec.js
+++ b/e2e/paths/08-route/02_basic_data.spec.js
@@ -31,9 +31,9 @@ describe('Route basic Data path', () => {
await page.type(`${selectors.routeBasicData.startedHour} input`, '0800');
await page.type(`${selectors.routeBasicData.finishedHour} input`, '1230');
await page.waitToClick(selectors.routeBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the worker was edited', async() => {
diff --git a/e2e/paths/08-route/03_create.spec.js b/e2e/paths/08-route/03_create.spec.js
index dafccff7f..80c0071b6 100644
--- a/e2e/paths/08-route/03_create.spec.js
+++ b/e2e/paths/08-route/03_create.spec.js
@@ -17,7 +17,6 @@ describe('Route create path', () => {
describe('as employee', () => {
it('should click on the add new route button and open the creation form', async() => {
- await page.waitForContentLoaded();
await page.waitToClick(selectors.routeIndex.addNewRouteButton);
await page.waitForState('route.create');
});
@@ -25,9 +24,9 @@ describe('Route create path', () => {
it(`should attempt to create a new route but fail since employee has no access rights`, async() => {
await page.write(selectors.createRouteView.description, 'faster faster!!');
await page.waitToClick(selectors.createRouteView.submitButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Access denied');
+ expect(message.text).toBe('Access denied');
});
});
@@ -49,9 +48,9 @@ describe('Route create path', () => {
await page.autocompleteSearch(selectors.createRouteView.agency, 'Teleportation device');
await page.write(selectors.createRouteView.description, 'faster faster!!');
await page.waitToClick(selectors.createRouteView.submitButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it(`should confirm the redirection to the created route summary`, async() => {
diff --git a/e2e/paths/08-route/04_tickets.spec.js b/e2e/paths/08-route/04_tickets.spec.js
index 53b8f56c8..938c98574 100644
--- a/e2e/paths/08-route/04_tickets.spec.js
+++ b/e2e/paths/08-route/04_tickets.spec.js
@@ -19,17 +19,15 @@ xdescribe('Route basic Data path', () => {
});
it('should modify the first ticket priority', async() => {
- const result = await nightmare;
await page.write(selectors.routeTickets.firstTicketPriority, '2');
await page.keyboard.press('Enter');
- await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should confirm the buscamanButton is disabled', async() => {
- const result = await nightmare;
- await page.evaluate(selector => {
+ const result = await page.evaluate(selector => {
return document.querySelector(selector);
}, `${selectors.routeTickets.buscamanButton} :disabled`);
@@ -37,9 +35,8 @@ xdescribe('Route basic Data path', () => {
});
it('should check the first ticket checkbox and confirm the buscamanButton button is no longer disabled', async() => {
- const result = await nightmare;
await page.waitToClick(selectors.routeTickets.firstTicketCheckbox);
- await page.evaluate(selector => {
+ const result = await page.evaluate(selector => {
return document.querySelector(selector);
}, `${selectors.routeTickets.buscamanButton} :disabled`);
@@ -47,47 +44,41 @@ xdescribe('Route basic Data path', () => {
});
it('should check the route volume on the descriptor', async() => {
- const result = await nightmare;
- await page.waitToGetProperty(selectors.routeDescriptor.volume, 'innerText');
+ const result = await page.waitToGetProperty(selectors.routeDescriptor.volume, 'innerText');
expect(result).toEqual('1.1 / 18 m³');
});
it('should count how many tickets are in route', async() => {
- const result = await nightmare;
- await page.countElement('vn-route-tickets vn-textfield[ng-model="ticket.priority"]');
+ const result = await page.countElement('vn-route-tickets vn-textfield[ng-model="ticket.priority"]');
expect(result).toEqual(11);
});
it('should delete the first ticket in route', async() => {
- const result = await nightmare;
await page.waitToClick(selectors.routeTickets.firstTicketDeleteButton);
await page.waitToClick(selectors.routeTickets.confirmButton);
- await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Ticket removed from route');
+ expect(message.text).toBe('Ticket removed from route');
});
it('should again delete the first ticket in route', async() => {
- const result = await nightmare;
await page.waitToClick(selectors.routeTickets.firstTicketDeleteButton);
await page.waitToClick(selectors.routeTickets.confirmButton);
- await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Ticket removed from route');
+ expect(message.text).toBe('Ticket removed from route');
});
it('should now count how many tickets are in route to find one less', async() => {
- const result = await nightmare;
- await page.countElement('vn-route-tickets vn-textfield[ng-model="ticket.priority"]');
+ const result = await page.countElement('vn-route-tickets vn-textfield[ng-model="ticket.priority"]');
expect(result).toEqual(9);
});
it('should confirm the route volume on the descriptor has been updated by the changes made', async() => {
- const result = await nightmare;
- await page.waitToGetProperty(selectors.routeDescriptor.volume, 'innerText');
+ const result = await page.waitToGetProperty(selectors.routeDescriptor.volume, 'innerText');
expect(result).toEqual('0.9 / 18 m³');
});
diff --git a/e2e/paths/09-invoice-out/02_descriptor.spec.js b/e2e/paths/09-invoice-out/02_descriptor.spec.js
index ceb2175e2..ade121a8b 100644
--- a/e2e/paths/09-invoice-out/02_descriptor.spec.js
+++ b/e2e/paths/09-invoice-out/02_descriptor.spec.js
@@ -40,9 +40,9 @@ describe('InvoiceOut descriptor path', () => {
await page.waitToClick(selectors.invoiceOutDescriptor.moreMenu);
await page.waitToClick(selectors.invoiceOutDescriptor.moreMenuDeleteInvoiceOut);
await page.waitToClick(selectors.invoiceOutDescriptor.acceptDeleteButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('InvoiceOut deleted');
+ expect(message.text).toBe('InvoiceOut deleted');
});
it('should have been relocated to the invoiceOut index', async() => {
@@ -50,12 +50,10 @@ describe('InvoiceOut descriptor path', () => {
});
it(`should search for the deleted invouceOut to find no results`, async() => {
- await page.write(selectors.invoiceOutIndex.topbarSearch, 'T2222222');
- await page.waitToClick(selectors.invoiceOutIndex.searchButton);
- await page.waitForNumberOfElements(selectors.invoiceOutIndex.searchResult, 0);
- const result = await page.countElement(selectors.invoiceOutIndex.searchResult);
+ await page.doSearch('T2222222');
+ const nResults = await page.countElement(selectors.invoiceOutIndex.searchResult);
- expect(result).toEqual(0);
+ expect(nResults).toEqual(0);
});
it('should navigate to the ticket index', async() => {
@@ -66,17 +64,13 @@ describe('InvoiceOut descriptor path', () => {
});
it('should search for tickets with an specific invoiceOut to find no results', async() => {
- await page.waitToClick(selectors.ticketsIndex.openAdvancedSearchButton);
- await page.write(selectors.ticketsIndex.advancedSearchInvoiceOut, 'T2222222');
- await page.waitToClick(selectors.ticketsIndex.advancedSearchButton);
- await page.waitForNumberOfElements(selectors.ticketsIndex.searchResult, 0);
- const result = await page.countElement(selectors.ticketsIndex.searchResult);
+ await page.doSearch('T2222222');
+ const nResults = await page.countElement(selectors.ticketsIndex.searchResult);
- expect(result).toEqual(0);
+ expect(nResults).toEqual(0);
});
it('should now navigate to the invoiceOut index', async() => {
- await page.waitForContentLoaded();
await page.waitToClick(selectors.globalItems.applicationsMenuButton);
await page.wait(selectors.globalItems.applicationsMenuVisible);
await page.waitToClick(selectors.globalItems.invoiceOutButton);
@@ -99,9 +93,9 @@ describe('InvoiceOut descriptor path', () => {
await page.waitToClick(selectors.invoiceOutDescriptor.moreMenu);
await page.waitToClick(selectors.invoiceOutDescriptor.moreMenuBookInvoiceOut);
await page.waitToClick(selectors.invoiceOutDescriptor.acceptBookingButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('InvoiceOut booked');
+ expect(message.text).toBe('InvoiceOut booked');
});
it(`should check the invoiceOut booked in the summary data`, async() => {
diff --git a/e2e/paths/10-travel/02_basic_data_and_log.spec.js b/e2e/paths/10-travel/02_basic_data_and_log.spec.js
index 85c7231c8..c631e7131 100644
--- a/e2e/paths/10-travel/02_basic_data_and_log.spec.js
+++ b/e2e/paths/10-travel/02_basic_data_and_log.spec.js
@@ -27,17 +27,17 @@ describe('Travel basic data path', () => {
await page.pickDate(selectors.travelBasicDada.deliveryDate, lastMonth);
await page.waitToClick(selectors.travelBasicDada.save);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Landing cannot be lesser than shipment');
+ expect(message.text).toBe('Landing cannot be lesser than shipment');
});
it('should undo the changes', async() => {
await page.waitToClick(selectors.travelBasicDada.undoChanges);
await page.waitToClick(selectors.travelBasicDada.save);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('No changes to save');
+ expect(message.text).toBe('No changes to save');
});
it('should now edit the whole form then save', async() => {
@@ -50,9 +50,9 @@ describe('Travel basic data path', () => {
await page.waitToClick(selectors.travelBasicDada.delivered);
await page.waitToClick(selectors.travelBasicDada.received);
await page.waitToClick(selectors.travelBasicDada.save);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should reload the section and check the reference was saved', async() => {
diff --git a/e2e/paths/11-zone/01_basic-data.spec.js b/e2e/paths/11-zone/01_basic-data.spec.js
index 7044ab70c..f28be5194 100644
--- a/e2e/paths/11-zone/01_basic-data.spec.js
+++ b/e2e/paths/11-zone/01_basic-data.spec.js
@@ -38,9 +38,9 @@ describe('Zone basic data path', () => {
await page.write(selectors.zoneBasicData.inflation, '200');
await page.waitToClick(selectors.zoneBasicData.volumetric);
await page.waitToClick(selectors.zoneBasicData.saveButton);
- const result = await page.waitForLastSnackbar();
+ const message = await page.waitForSnackbar();
- expect(result).toEqual('Data saved!');
+ expect(message.type).toBe('success');
});
it('should now reload the section', async() => {
diff --git a/front/core/components/autocomplete/index.html b/front/core/components/autocomplete/index.html
index 725d38977..feaa47bdb 100755
--- a/front/core/components/autocomplete/index.html
+++ b/front/core/components/autocomplete/index.html
@@ -1,5 +1,6 @@
`;
- compile(html);
-
- expect($element[0].innerHTML).toContain('200.0');
+ expect(currencyFilter(200, 'EUR', 1)).toContain('200.0');
});
it('should return a TWO decimals number as per the argument', () => {
- let html = `
{{200 | currency: 'EUR': 2}}
`;
- compile(html);
-
- expect($element[0].innerHTML).toContain('200.00');
+ expect(currencyFilter(200, 'EUR', 2)).toContain('200.00');
});
it('should return a TEN decimals number as per the argument', () => {
- let html = `
{{200 | currency: 'EUR': 10}}
`;
- compile(html);
-
- expect($element[0].innerHTML).toContain('200.0000000000');
+ expect(currencyFilter(200, 'EUR', 10)).toContain('200.0000000000');
});
it('sould return nothing when the value is not set', () => {
- let html = `