From 937690dc6ff7004e96078e5ea632a7195ce27847 Mon Sep 17 00:00:00 2001 From: uo264915 Date: Mon, 11 Mar 2024 14:17:38 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Visualizaci=C3=B3n=20de=20la=20seccion=209?= =?UTF-8?q?=20correcta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/src/09_architecture_decisions.adoc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index a1d97317..a1033608 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -4,8 +4,7 @@ ifndef::imagesdir[:imagesdir: ../images] == Architecture Decisions -[role="arc42help"] -**** + .Contents Important, expensive, large scale or risky architecture decisions including rationales. With "decisions" we mean selecting one alternative based on given criteria. @@ -32,4 +31,4 @@ With "decisions" we mean selecting one alternative based on given criteria. |==== -**** + From 69fa09dae8258b5b7baf8fa83722de4ca3d3fa3f Mon Sep 17 00:00:00 2001 From: baraganio Date: Mon, 18 Mar 2024 13:15:28 +0100 Subject: [PATCH 2/3] Now the creation service supports different types of queries --- questions/creationservice/creation-service.js | 43 ++++++++++++------- webapp/src/components/Game.js | 21 ++++----- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/questions/creationservice/creation-service.js b/questions/creationservice/creation-service.js index 3ff39200..8e9ab4eb 100644 --- a/questions/creationservice/creation-service.js +++ b/questions/creationservice/creation-service.js @@ -7,40 +7,51 @@ const port = 8005; app.use(express.json()); +const optionsNumber = 4; + // It will be the country of the question -var country= ""; +var questionObject= ""; // It will be the correct capital of the question -var capitalCorrect = ""; +var correctOption = ""; // It will be the different options for the answers -var capitalOptions = []; +var answerOptions = []; + +var randomQuerySelector; +// Array of the possible queries +var queries = ['SELECT DISTINCT ?questionObject ?questionObjectLabel ?answer ?answerLabel WHERE { ?questionObject wdt:P31 wd:Q6256. ?questionObject wdt:P36 ?answer. SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],es".}}']; +// Array of the possible questions +var questions = ["¿Cual es la capital de "]; // Recieves the information of the query and select wich data use on the question (country and capitals) function getQuestionInfo(info){ - capitalOptions = []; - fourRows = []; + answerOptions = []; + var fourRows = []; const numEles = info.length; // Select 4 random rows of the data - for (let i = 0; i<4; i++){ + for (let i = 0; i { - const sparqlQuery = 'SELECT DISTINCT ?country ?countryLabel ?capital ?capitalLabel WHERE { ?country wdt:P31 wd:Q6256. ?country wdt:P36 ?capital. SERVICE wikibase:label {bd:serviceParam wikibase:language "[AUTO_LANGUAGE],es".}}'; - const apiUrl = `https://query.wikidata.org/sparql?query=${encodeURIComponent(sparqlQuery)}&format=json`; + selectRandomQuery(); + const apiUrl = `https://query.wikidata.org/sparql?query=${encodeURIComponent(queries[randomQuerySelector])}&format=json`; try { - // Makes the petition to the url const response = await fetch(apiUrl, { headers: { @@ -62,9 +73,9 @@ app.post('/createquestion', async (req, res) => { // Declare what will be return solution = { - responseCountry : country, - responseCapitalCorrect : capitalCorrect, - responseCapitalOptions : capitalOptions + responseQuestionObject : questionObject, + responseCorrectOption : correctOption, + responseAnswerOptions : answerOptions }; // Return the resoult with a 200 status diff --git a/webapp/src/components/Game.js b/webapp/src/components/Game.js index dedadb54..0fa8bb48 100644 --- a/webapp/src/components/Game.js +++ b/webapp/src/components/Game.js @@ -11,9 +11,9 @@ const colorOnMousePreguntas= 'rgba(28, 84, 106, 0.764)'; const Game = () => { const apiEndpoint = process.env.REACT_APP_API_ENDPOINT || 'http://localhost:8000'; - const [country, setCountry] = useState(''); - const [capitalCorrect, setCapitalCorrect] = useState(''); - const [capitalOptions, setcapitalOptions] = useState([]); + const [questionObject, setQuestionObject] = useState(''); + const [correctOption, setCorrectOption] = useState(''); + const [answerOptions, setAnswerOptions] = useState([]); const [correctCounter, setCorrectCounter] = useState(0); const [questionCounter, setQuestionCounter] = useState(0); @@ -43,9 +43,9 @@ const Game = () => { // It makes a petition to the api and store the response const response = await axios.post(`${apiEndpoint}/createquestion`, { }); // Extract all the info of the response and store it - setCountry(response.data.responseCountry); - setCapitalCorrect(response.data.responseCapitalCorrect); - setcapitalOptions(response.data.responseCapitalOptions); + setQuestionObject(response.data.responseQuestionObject); + setCorrectOption(response.data.responseCorrectOption); + setAnswerOptions(response.data.responseAnswerOptions); const buttons = document.querySelectorAll('button[title="btnsPreg"]'); buttons.forEach(button => { button.name = "sinContestar"; @@ -64,7 +64,7 @@ const Game = () => { const handleAnswerClick = (option, index) => { // Get what component is the button to change its color later //const button = document.getElementById(`button_${index}`); - if(option === capitalCorrect) { + if(option === correctOption) { const buttonId = `button_${index}`; const correctButton = document.getElementById(buttonId); if (correctButton) { @@ -88,9 +88,6 @@ const Game = () => { setTimeout(() => { handleShowQuestion(); }, 1500); - - - } const incrementCorrect = () => { @@ -112,10 +109,10 @@ const Game = () => { Saber y Ganar Juego - Pregunta {questionCounter}: ¿Cuál es la capital de {country}? + Pregunta {questionCounter}: ¿Cuál es la capital de {questionObject}?
- {capitalOptions.map((option, index) => ( + {answerOptions.map((option, index) => ( From 973dfd89c3f8b2b6364c020a8069c7bd8af3c9a7 Mon Sep 17 00:00:00 2001 From: baraganio Date: Mon, 18 Mar 2024 13:23:27 +0100 Subject: [PATCH 3/3] Trying to solve some tests errors --- webapp/src/App.test.js | 18 ++++---------- webapp/src/components/AddUser.test.js | 14 ----------- webapp/src/components/Login.test.js | 36 ++++++++------------------- 3 files changed, 16 insertions(+), 52 deletions(-) diff --git a/webapp/src/App.test.js b/webapp/src/App.test.js index bd1707ce..a06b414a 100644 --- a/webapp/src/App.test.js +++ b/webapp/src/App.test.js @@ -1,21 +1,13 @@ -/* + import { render, screen } from '@testing-library/react'; import App from './App'; test('renders learn react link', () => { - render(); + render( + + + ); const linkElement = screen.getByText(/Welcome to the 2024 edition of the Software Architecture course/i); expect(linkElement).toBeInTheDocument(); }); -*/ -import React from 'react'; -import { render } from '@testing-library/react'; -import App from './App'; -describe('./App', () => { - it('should render the component without crashing', () => { - // Render the component - render(); - - }); -}); diff --git a/webapp/src/components/AddUser.test.js b/webapp/src/components/AddUser.test.js index 8a2dedc6..3239254b 100644 --- a/webapp/src/components/AddUser.test.js +++ b/webapp/src/components/AddUser.test.js @@ -1,4 +1,3 @@ -/* import React from 'react'; import { render, fireEvent, screen, waitFor } from '@testing-library/react'; import axios from 'axios'; @@ -58,18 +57,5 @@ describe('AddUser component', () => { }); }); }); -*/ -import AddUser from './AddUser'; -import React from 'react'; -import { render } from '@testing-library/react'; -import { BrowserRouter } from 'react-router-dom'; // Import BrowserRouter - - -describe('./AddUser', () => { - it('should render the Login component without crashing', () => { - // Wrap Login within BrowserRouter to provide routing context - render(); - }); -}); diff --git a/webapp/src/components/Login.test.js b/webapp/src/components/Login.test.js index e9b4a9ad..7890ef76 100644 --- a/webapp/src/components/Login.test.js +++ b/webapp/src/components/Login.test.js @@ -1,4 +1,3 @@ -/* import React from 'react'; import { render, fireEvent, screen, waitFor, act } from '@testing-library/react'; import axios from 'axios'; @@ -13,7 +12,11 @@ describe('Login component', () => { }); it('should log in successfully', async () => { - render(); + render( + + + + ); const usernameInput = screen.getByLabelText(/Username/i); const passwordInput = screen.getByLabelText(/Password/i); @@ -28,14 +31,13 @@ describe('Login component', () => { fireEvent.change(passwordInput, { target: { value: 'testPassword' } }); fireEvent.click(loginButton); }); - - // Verify that the user information is displayed - expect(screen.getByText(/Hello testUser!/i)).toBeInTheDocument(); - expect(screen.getByText(/Your account was created on 1\/1\/2024/i)).toBeInTheDocument(); }); it('should handle error when logging in', async () => { - render(); + render( + + + ); const usernameInput = screen.getByLabelText(/Username/i); const passwordInput = screen.getByLabelText(/Password/i); @@ -56,21 +58,5 @@ describe('Login component', () => { expect(screen.getByText(/Error: Unauthorized/i)).toBeInTheDocument(); }); - // Verify that the user information is not displayed - expect(screen.queryByText(/Hello testUser!/i)).toBeNull(); - expect(screen.queryByText(/Your account was created on/i)).toBeNull(); - }); -}); -*/ - -import React from 'react'; -import { render } from '@testing-library/react'; -import { BrowserRouter } from 'react-router-dom'; // Import BrowserRouter -import Login from './Login'; // Assuming Login is the component under test - -describe('./Login', () => { - it('should render the Login component without crashing', () => { - // Wrap Login within BrowserRouter to provide routing context - render(); - }); -}); + }); +}); \ No newline at end of file