booleancl / booleancl/G01-2021-fullstack-javascript-final
Crear Sistema de descuentos
- Vorherrschende Sprache
- JavaScript
- Sterne
- 0
- Forks
- 6
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
**Criterios de Aceptación**
```
Característica: Página principal
Mostrar precio y precio rebajado de cada producto
Escenario: precio y precio con descuento de cada producto
Dado el usuario autenticado en la página principal
Luego el usuario ve la información del precio y el precio rebajado de cada producto
```
**Requerimientos técnicos**
- [ ] Crear endpoint llamado `/api/enable_hot_sale`. este Debe ser de tipo POST y aceptar el siguiente cuerpo:
```javascript
{
"enabled": true | false,
"percentageDiscount": number
}
```
---
- [ ] Crear una migración llamada `create-hot-sale` con los campos `enabled` y `percentageDiscount`. Agrega por defecto los valores `false` y `0` respectivamente.
> Tip: No olvides correr el comando `npx sequelize-cli db:migrate` y el comando `npx sequelize-cli db:seed:all`. para este último debes haber creado algun fixture con la información por defecto de esta tabla.
---
- [ ] Modificar el endpoint que devuelve los productos para que detecte si `hot_sale` está activa. En este caso se debe agregar un nuevo campo a la respuesta llamado `priceWithDiscount` en el cuál debe estar aplicado el descuento desde la tabla. El descuento se debe aplicar a todos los productos.
> Tip: Para modificar el valor leído desde la base de datos y poder modificar el JSON de respuesta utilizar la opción `raw: true` al utilizar `findAll` de Sequelize. Más info en [este link](https://sequelize.org/master/class/lib/model.js~Model.html#static-method-findAll)
---
- [ ] Modificar el código Frontend para mostrar el precio y el precio con descuento como muestra la siguiente imagen:

> Tip: Para escribir una prueba para este caso puedes utilizar `cy.request('POST'. 'http://localhost:3000/api/enable_hot_sale', body)` para activar y desactivar la funcionalidad. utiliza esto utilizando `before()` y `after()` en la prueba. No olvides el principio FIRS. Más detalle en [este link](https://docs.cypress.io/api/commands/request#Send-a-POST-request-with-a-JSON-body)
---
*Notas*
Se espera que al menos 1 de los criterios de aceptación esté automatizado
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Es werden keine Dateien genannt. Beginne damit, die Product API, die Sequelize-Migration und die Seed-Einstiegspunkte sowie die Produktanzeige im Frontend zu finden; verfolge anschließend, wie Product-Responses die Seite erreichen. Verwende den angegebenen POST-Endpunkt und das Cypress-Request-Setup, um zu überprüfen, dass das Aktivieren des Verkaufs für jedes Produkt den reduzierten Preis hinzufügt, während das Deaktivieren die normale Response wiederherstellt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cypress, javascript
- Bereich
- api, database, frontend, full-stack, testing
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100