Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Actualizaciones #425

Merged
merged 18 commits into from
Apr 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/src/08_concepts.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ image::08-DominioV4.png["Dominio"]
==== Desarrollo

* *Implementación:* Para la creación de esta aplicación se usará el lenguaje de programación JavaScript, para el front-end se utilizará React, Node.js y la construccion de microservicios para el back-end y MongoDB para la gestion de la base de datos NoSQL.
* *Pruebas:* Se llevarán a cabo pruebas e2e y unitarias, de integración, de aceptación, de capacidad/rendimiento y de regresión, todas ellas siguiendo los principios FIRST(Fast, Independent, Repeatable, Self-Checking y Timely) para garantizar la ejecución correcta de todas las funcionalidades de la aplicación.
* *Pruebas:* Se llevarán a cabo pruebas e2e, de carga y unitarias todas ellas siguiendo los principios FIRST(Fast, Independent, Repeatable, Self-Checking y Timely) para garantizar la ejecución correcta de todas las funcionalidades de la aplicación.


==== Estilo arquitecónico
Expand Down
35 changes: 35 additions & 0 deletions docs/src/12_testing.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
ifndef::imagesdir[:imagesdir: ../images]

[[section-glossary]]
== Testing
Se llevarán a cabo pruebas unitarias, E2E y de carga para garantizar la ejecución correcta de todas las funcionalidades de la aplicación.

=== Tests Unitarios

En nuestro proyecto, los tests unitarios son fundamentales para garantizar la correcta funcionalidad de cada componente del código. Cada función, método o clase será probado exhaustivamente para asegurar su integridad y rendimiento.

Para lograr esto, seguimos los principios FIRST:

|===
|Principio | Descripción

|Fast (Rápido)
|Los tests unitarios se ejecutan rápidamente, proporcionando retroalimentación inmediata sobre la integridad del código.

|Independent (Independiente)
|Cada test es independiente de los demás, evitando dependencias y permitiendo su ejecución en cualquier orden.

|Repeatable (Repetible)
|Los resultados de los tests son consistentes y predecibles, independientemente de cuántas veces se ejecuten o del entorno de ejecución.

|Self-Checking (Autoverificable)
|Los tests determinan automáticamente si han pasado o fallado, sin necesidad de intervención humana para su validación.

|Timely (Oportuno)
|La creación y ampliación de tests se realiza durante todo el desarrollo del proyecto, garantizando una cobertura adecuada en todo momento.
|===

=== E2E. Tests de integración
uscaremos garantizar que la aplicación sea fácil de usar para proporcionar una experiencia satisfactoria al usuario. Nos centraremos en verificar diversas funcionalidades, desde la jugabilidad hasta acciones como el registro, inicio de sesión y cambios en los ajustes. Simularemos interacciones que haría un usuario real para asegurar que la aplicación sea intuitiva y funcione correctamente.

=== Tests de carga
File renamed without changes.
6 changes: 2 additions & 4 deletions gatewayservice/gateway-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,13 +112,11 @@ app.get('/getAllGeneratedQuestions', async (req, res) => {

app.get('/getRecords/:userId', async (req, res) => {
try {

const userId = req.params.userId;

const userId = encodeURIComponent(req.params.userId);
const recordsResponse = await axios.get(`${recordServiceUrl}/getRecords/${userId}`);
res.json(recordsResponse.data);
} catch (error) {
res.status(500).json({ error: 'Error interno del servidor' });
res.status(500).json({ error: 'Error interno del servidor' });
}
});

Expand Down
3 changes: 2 additions & 1 deletion questions/generatedquestservice/generatedquest-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ mongoose.connect(mongoUri);
const doesQuestionExist = async (questionBody) => {
//devuelve true si la pregunta ya existe
try {
const safeQuestionBody = questionBody.toString();
const existingQuestion = await GeneratedQuestion.findOne({
generatedQuestionBody: { $eq: questionBody }
generatedQuestionBody: safeQuestionBody
});

return !!existingQuestion; // Convertir el resultado en un booleano
Expand Down
4 changes: 2 additions & 2 deletions webapp/src/components/Game.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ const Game = ({ username, totalQuestions, timeLimit, themes }) => {
const [error, setError] = useState('');
const [correctQuestions, setCorrectQuestions] = useState(0);
const [timer, setTimer] = useState(0);
const [themesSelected, setThemesSelected] = useState(themes);
const [themesSelected] = useState(themes);
const [numberClics, setNumberClics] = useState(0);
const [finished, setFinished] = useState(false);
const [selectedAnswer, setSelectedAnswer] = useState('');
const [setSelectedAnswer] = useState('');
const [selectedOption, setSelectedOption] = useState(null); // Opción seleccionada actualmente
const [almacenado, setAlmacenado] = useState(false);
const pricePerQuestion = 25;
Expand Down
2 changes: 1 addition & 1 deletion webapp/src/components/RankingList.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import { render, screen, waitFor, act } from '@testing-library/react';
import { render, screen, act } from '@testing-library/react';
import RankingList from './RankingList';
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
Expand Down
2 changes: 0 additions & 2 deletions webapp/src/components/UsersList.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ import React, { useState, useEffect } from 'react';
import axios from 'axios';
import PropTypes from 'prop-types';

//import { Container, Typography, TextField, Button, Snackbar } from '@mui/material';

const UsersList = ({ setError }) => {

const [listUsers, setListUsers] = useState([]);
Expand Down
2 changes: 1 addition & 1 deletion webapp/src/components/UsersList.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import { render, waitFor, screen, act } from '@testing-library/react';
import { render, screen, act } from '@testing-library/react';
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import UsersList from './UsersList';
Expand Down