Skip to content

Commit

Permalink
Merge branch 'develop' into Despliegue
Browse files Browse the repository at this point in the history
  • Loading branch information
UO271728 committed May 3, 2022
2 parents 4c46993 + 45a5b2b commit 89424bb
Show file tree
Hide file tree
Showing 36 changed files with 1,282 additions and 440 deletions.
81 changes: 45 additions & 36 deletions docs/06_runtime_view.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -49,75 +49,84 @@ Alice <-- Bob: another authentication Response
=== Compra de productos
[plantuml,"ComprarProducto",png]
----
actor Usuario
actor Usuario #green
database BaseDeDatos as "Base de datos" #blue
database Pod as "Pod del usuario" #yellow
database GeoCoder as "GeoCoder" #yellow
Usuario -> DeDe: Abre el carrito
DeDe <-- BaseDeDatos: Devuelve contenido del carrito del usuario
Usuario <-- DeDe: Muestra lista de juguetes del carrito
Usuario -> DeDe: Presiona botón realizar pedido
DeDe <-- DeDe: Devuelve contenido del carrito del usuario
Usuario <-- DeDe: Muestra pantalla de pago
Usuario -> DeDe: Presiona botón de obtención de dirección POD
DeDe -> Pod: Se solicita la dirección del usuario
Usuario -> Pod: Inicia sesión en Pod y añade su dirección en la sección "notes" del mismo
DeDe <-- Pod: Devuelve la dirección del usuario
DeDe -> DeDe: Muestra la dirección y se calculan gastos de envío (API GeoCode)
Usuario <-- DeDe: Muestra el precio y la dirección.
Usuario -> DeDe: Recorre pantallas de pago hasta confirmar el pedido.
Usuario -> DeDe: Continua con el proceso de compra
DeDe -> GeoCoder: Solicita el calculo de los gastos de envío
DeDe <-- GeoCoder: Se devuelven los gastos de envío.
DeDe -> DeDe: Muestra la dirección y los gastos de envío
Usuario -> DeDe: Continua con la revisión de compra
DeDe -> DeDe: Muestra el resumen del pedido
Usuario -> DeDe: Finaliza el pedido
----

=== Añadir productos
[plantuml,"AñadirProducto",png]
----
actor Admin
actor Admin #green
database BaseDeDatos as "Base de datos" #blue
Admin -> Dede: Accede a la página para añadir productos
Admin -> Dede: Rellena la pagina
Admin -> Dede: Accede a la página para iniciar sesión
Admin -> Dede: Rellena la pagina con una cuenta de administrador
Admin <- Dede: La aplicación redirige al usuario a la página principal
Admin -> Dede: Accede a la sección "Añadir producto" y rellena los datos
Dede -> BaseDeDatos: Añade el nuevo producto
BaseDeDatos -> Dede: Devuelve la nueva lista de productos
Dede -> Admin: Muestra todos los productos
----

=== Eliminar productos
[plantuml,"EliminarProducto",png]
----
actor Admin
database BaseDeDatos as "Base de datos" #blue
Admin -> Dede: Accede a la página para eliminar productos
Admin -> Dede: Escoge el producto a eliminar
Dede -> BaseDeDatos: Elimina el producto
BaseDeDatos -> Dede: Devuelve la lista actualizada de productos
Dede -> Admin: Muestra todos los productos
----

=== Filtrar productos
[plantuml,"FiltrarProducto",png]
----
actor Usuario
database BaseDeDatos as "Base de datos" #blue
Usuario -> Dede: Escribe un texto en el cuadro de búsqueda y pulsa 'filtrar'
BaseDeDatos --> Dede: Devuelve los juguetes que coincidan con la búsqueda
actor Usuario #green
Usuario -> Dede: Navega a la sección de juguete y presiona uno de los botones de filtrado por categorías
Dede --> Dede: La aplicación hace un filtrado de todo el listado de los juguetes quedándose solo con la categoría especificada
Usuario <- Dede: Muestra los juguetes encontrados con el filtro
----

=== Iniciar sesión
[plantuml,"InicioSesion",png]
----
actor Usuario
actor Usuario #green
database BaseDeDatos as "Base de datos" #blue
Usuario -> Dede: Accede a la página y presiona el botón de registro
Usuario -> Dede: Rellena el formulario de registro/inicio sesión
BaseDeDatos <-- Dede: Se almacena el usuario recién registrado como cliente, si es nuevo, si no ya estaría
Usuario <- Dede: Se muestra la página principal de la aplicación
Usuario -> Dede: Accede a la página y presiona el botón "Registrarse"
Usuario <- Dede: Se despliega un formulario de inicio de sesión aportado por la API Auth0
Usuario -> Dede: Rellena el formulario
BaseDeDatos <-- Dede: Se almacena el usuario recién registrado como cliente en la base de datos (si no está ya almacenado)
Usuario <- Dede: Se muestra la página principal de la aplicación, con unas opciones u otras en función del rol del usuario (se usa el localStorage)
----

=== Cierre de sesión
[plantuml,"CierreSesión",png]
----
actor Usuario
database BaseDeDatos as "Base de datos" #blue
Usuario -> Dede: Accede a la página y presiona el botón de registro
Usuario -> Dede: Rellena el formulario de registro/inicio sesión
BaseDeDatos <-- Dede: Se almacena el usuario recién registrado como cliente si es nuevo, si no ya estaría
Usuario -> Dede: Accede a la página y presiona el botón "Registrarse"
Usuario -> Dede: Rellena el formulario de registro/inicio sesión que aporta Auth0
BaseDeDatos <-- Dede: Se almacena el usuario recién registrado como cliente en la base de datos (si no está ya almacenado)
Usuario <- Dede: Se muestra la página principal de la aplicación
Usuario -> Dede: Presiona el botón de desconectarse
Usuario -> Dede: Presiona el botón de "Desconectarse"
Usuario <- Dede: Se muestra la página principal de la aplicación con las funciones de un usuario normal
----

=== Histórico de pedidos
[plantuml,"HistóricoPedidos",png]
----
actor Usuario
database BaseDeDatos as "Base de datos" #blue
Usuario -> Dede: Accede a la página y presiona el botón "Registrarse"
Usuario -> Dede: Rellena el formulario de registro/inicio sesión que aporta Auth0
BaseDeDatos <-- Dede: Se almacena el usuario recién registrado como cliente en la base de datos (si no está ya almacenado)
Usuario <- Dede: Se muestra la página principal de la aplicación
----
Usuario -> Dede: Presiona el botón de "Historial Pedidos"
Usuario <- Dede: Se muestra una página con un registro de los pedidos del usuario iniciado en sesión
----

Binary file modified docs/images/modeloDominio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file added restapi/.env
Empty file.
2 changes: 1 addition & 1 deletion restapi/routes/juguete.router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jugueteRouter.post("/", async (req: Request, res: Response) => {
categoria: req.body.categoria,
stock: req.body.stock
};
//console.log(nuevoJuguete);
console.log(nuevoJuguete);
let juguete = await Juguete.findOne({ nombre: nuevoJuguete.nombre });
if (juguete) {
res.send("Este juguete ya existe");
Expand Down
1 change: 1 addition & 0 deletions restapi/routes/usuario.router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ usuarioRouter.get("/:email", async(req:Request,res:Response) =>{
res.send(usuario);
} else{
res.status(500).send("No existe ese usuario");

}
} catch(error){
res.status(500).send("se ha producido un error");
Expand Down
5 changes: 1 addition & 4 deletions restapi/tests/usuario.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,8 @@ afterAll(async () => {

describe('user ', () => {
it("Se puede añadir un usuario", async() =>{
var dni:String = "7178958B";
var nombre:String = "nombrePrueba";
var apellidos:String = "apellidosPrueba";
var email:String = "[email protected]";
const response:Response = await request(app).post('/usuario').send({dni:dni,nombre:nombre,apellidos:apellidos,email:email});
const response:Response = await request(app).post('/usuario').send({email:email});
expect(response.statusCode).toBe(200);
expect(response.text).toEqual("Usuario añadido correctamente");
})
Expand Down
5 changes: 5 additions & 0 deletions webapp/e2e/features/orders-history.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Feature: Seeing my orders history
Scenario: The orders history has orders
Given A user with some orders
When I click the orders history button
Then Orders must be seen
2 changes: 2 additions & 0 deletions webapp/e2e/jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ export default {
moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"],

preset: "jest-puppeteer",

watchman: false,

testTimeout : 60000

Expand Down
21 changes: 15 additions & 6 deletions webapp/e2e/steps/add-to-cart.steps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ defineFeature(feature, test => {

browser = process.env.GITHUB_ACTIONS
? await puppeteer.launch()
: await puppeteer.launch({ headless: true });
: await puppeteer.launch({ headless: true, slowMo:100 });
//: await puppeteer.launch({ headless: true });
page = await browser.newPage();

Expand Down Expand Up @@ -42,14 +42,23 @@ defineFeature(feature, test => {

//Clickamos el boton que despliega el carrito
const addToCart =await page.$('button#botonAnadirAlCarrito');
await addToCart!.click();
await addToCart!.click();
await addToCart!.evaluate(a => {
if(a instanceof HTMLElement) {
a.click();
}
});



//Clickamos el boton que despliega el carrito
const botonCarrito2 =await page.$('button#botonCarritoDesplegar');
await botonCarrito2!.click();
});
const botonCarrito =await page.$('button#botonCarritoDesplegar');
await botonCarrito!.evaluate(a => {
if(a instanceof HTMLElement) {
a.click();
}
});
}
);

then('The cart should have an item', async () => {
//En consecuencia, debería aparecer la palabra precio.
Expand Down
74 changes: 74 additions & 0 deletions webapp/e2e/steps/orders-history.steps.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import { defineFeature, loadFeature } from 'jest-cucumber';
import puppeteer from "puppeteer";

const feature = loadFeature('./features/orders-history.feature');

let page: puppeteer.Page;
let browser: puppeteer.Browser;

defineFeature(feature, test => {

jest.setTimeout(100000);
beforeAll(async () => {

browser = process.env.GITHUB_ACTIONS
? await puppeteer.launch()
: await puppeteer.launch({ headless: false, slowMo: 50 });
//: await puppeteer.launch({ headless: true });
page = await browser.newPage();

await page
.goto("http://localhost:3000/productos", {
waitUntil: "networkidle0",
})
.catch(() => { });
});
test('The orders history has orders', ({ given, when, then }) => {
let email: string;
let password: string;

given('A user with some orders', async () => {
email = "[email protected]";
password = "Prueba1!";
//Iniciamos en sesión auth0
const registerButton = await page.$('button#registerButton');
await registerButton!.evaluate(a => {
if (a instanceof HTMLElement) {
a.click();
}
});
await page.waitForNavigation();

await expect(page).toClick("a");

await expect(page).toFill("input[name='email']", email);
await expect(page).toFill("input[name='password']", password);
await expect(page).toClick("button[name='submit']");
await page.waitForNavigation();

});

when('I click the orders history button', async () => {

await delay(1500);
//Nos desplazamos a pedidos
await expect(page).toClick("a[href='pedidos']");
await page.waitForNavigation();
});

then('Orders must be seen', async () => {
await delay(1500);
//En consecuencia, debería aparecer la palabra bakugan, ya que este usuario de prueba tenia un pedido con bakugans
await expect(page).toMatch('Bakugan', {timeout:6000})
});
})

afterAll(async () => {
browser.close()
})

});

function delay(ms:number){
return new Promise( resolve => setTimeout(resolve, ms));
}
23 changes: 17 additions & 6 deletions webapp/e2e/steps/pay-process.steps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ defineFeature(feature, test => {
beforeAll(async () => {
browser = process.env.GITHUB_ACTIONS
? await puppeteer.launch()
: await puppeteer.launch({ headless: true, slowMo: 50 });
: await puppeteer.launch({ headless: true, slowMo: 100 });
// : await puppeteer.launch({ headless: true });
page = await browser.newPage();

Expand All @@ -31,10 +31,14 @@ defineFeature(feature, test => {
password = "Prueba1!";
//Iniciamos en sesión auth0
const registerButton =await page.$('button#registerButton');
await registerButton!.click();
await registerButton!.evaluate(a => {
if(a instanceof HTMLElement) {
a.click();
}
});
await page.waitForNavigation();

await expect(page).toClick("a");
//await expect(page).toClick("a");

await expect(page).toFill("input[name='email']", email);
await expect(page).toFill("input[name='password']", password);
Expand All @@ -46,11 +50,18 @@ defineFeature(feature, test => {

//Clickamos el primer boton añadir al carrito que encontremos
const addToCart =await page.$('button#botonAnadirAlCarrito');
await addToCart!.click();
await addToCart!.click();
await addToCart!.evaluate(a => {
if(a instanceof HTMLElement) {
a.click();
}
});
//Clickamos el boton que despliega el carrito
const botonCarrito2 =await page.$('button#botonCarritoDesplegar');
await botonCarrito2!.click();
await botonCarrito2!.evaluate(a => {
if(a instanceof HTMLElement) {
a.click();
}
});
});

when('We press the order button', async () => {
Expand Down
54 changes: 0 additions & 54 deletions webapp/e2e/steps/register-form.steps.ts

This file was deleted.

Loading

0 comments on commit 89424bb

Please sign in to comment.