Skip to content

Commit

Permalink
Merge pull request #11 from gabyh7922/dev
Browse files Browse the repository at this point in the history
creacion de test
  • Loading branch information
gabyh7922 authored Sep 27, 2024
2 parents d2179d2 + 1510b1d commit 3f76196
Show file tree
Hide file tree
Showing 11 changed files with 46 additions and 27 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Este proyecto convierte una aplicación desarrollada en Dataverse en una Single Page Application (SPA), añadiendo funcionalidades como una vista detallada para cada personaje y un sistema de chat interactivo utilizando la API de OpenAI.

![Preview app](imagenes/Captura de Pantalla 2024-08-25 a la(s) 18.51.19.png)
![Preview app](src/imagenes/Captura de Pantalla 2024-08-25 a la(s) 18.51.19.png)

## Objetivos del Proyecto
Desarrollar una SPA con navegación fluida.
Expand All @@ -24,7 +24,7 @@ Manejar la asincronía en JavaScript y crear pruebas unitarias para código así
* Definición del Producto: Documenta el proceso de diseño y cómo el producto resuelve los problemas de las usuarias en el README.md.
* Historias de Usuaria: Crea Historias de Usuaria que representen las necesidades de las usuarias, incluyendo definición de terminado y Criterios de Aceptación para cada historia.
## Diseño de la Interfaz de Usuaria:
![Preview app](imagenes/Captura de Pantalla 2024-08-25 a la(s) 19.03.12.png)
![Preview app](imagenes/src/imagenes/Captura de Pantalla 2024-08-25 a la(s) 19.03.12.png)

* * Prototipo de Baja Fidelidad: Bocetos iniciales, subidos al repositorio y mencionados en el README.md.
* * Prototipo de Alta Fidelidad: Diseño visual en herramientas como Figma, representando el ideal de la solución.
Expand All @@ -43,3 +43,5 @@ Manejar la asincronía en JavaScript y crear pruebas unitarias para código así
* Control de Versiones (Git y GitHub): Instalación, configuración, control de versiones, integración de cambios, despliegue con GitHub Pages.
* Centrado en el Usuario: Diseño centrado en el usuario y prototipos de alta fidelidad.
* Investigación: Testeos de usabilidad de prototipos en distintos niveles de fidelidad.

Despliegue del proyecto por netlify : https://main--dataverse-chat.netlify.app/
Binary file added src/imagenes/th.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<body>
<header>
<h1>MUJERES QUE INSPIRAN</h1>

<button id="return-home" class="hidden">Volver a principal</button>
</header>

<main>
Expand Down
19 changes: 11 additions & 8 deletions src/lib/apiKey.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
export const getApiKey = () => {
// obtener la API KEY desde Local Storage
// Obtener la API KEY desde Local Storage
try {
const api_key = localStorage.getItem('apiKey');
if (!api_key) {
throw new Error('Api Key not defined!');
}
return localStorage.getItem('apiKey');
return api_key;
} catch (error) {
const api_key = prompt("Por favor ingresa una Open AI Key");
if (api_key.length <= 160) {

// Validar que la clave tiene la longitud correcta
if (!api_key || api_key.length <= 160) {
alert("Api Key invalida, por favor ingresa una Open AI api key");
return getApiKey();
return null; // Detener la recursión si la clave no es válida
}

setApiKey(api_key);
return null;
return api_key; // Retornar la clave válida
}
};

export const setApiKey = (key) => {
//guardar la API KEY en Local Storage
// Guardar la API KEY en Local Storage
try {
localStorage.setItem('apiKey', key);
sessionStorage.setItem('apiKey', key);//permite almacenar datos de forma persistente en el navegador.
} catch (error) {
alert('Error al guardar la API KEY:', error);
}
};
};
19 changes: 18 additions & 1 deletion src/styles/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,21 @@ h3 {
position: absolute;
top: 30px;
right: 30px;
}
}

button {
text-decoration: none;
display: inline-block;
padding: 8px 16px;
border-radius: 5%;
}

button:hover {
background-color: rgb(255, 255, 255);
color: rgb(198, 136, 191);
}

#return-home {
background-color: #f1f1f1;
color: black;
}
2 changes: 1 addition & 1 deletion src/views/chat/Chat.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { getApiKey } from '/lib/apiKey.js';

function getContext(names, allCharacters) {
if (!allCharacters) {
return "Eres " + names + " y sin mencionar tu nombre responde solo en español";
return "Eres " + names + " y responderas segun su historia y como si fueras ella";
} else {
return "Eres una conferencia de mujeres historicamente importante donde estarian " + names + " responde personificando a las mujeres como una voz en conjuto y solo en español";
}
Expand Down
4 changes: 4 additions & 0 deletions src/views/conference/Conference.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ import { renderChat } from '/views/chat/Chat.js';


const Conference = () => {
// habilitar el botton volver a pagina principal
const returnHomeButton = document.getElementById('return-home');
returnHomeButton.classList.remove('hidden');

const view = document.createElement('div');

const head = document.getElementsByTagName('head')[0];
Expand Down
3 changes: 3 additions & 0 deletions src/views/detail/Detail.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ const ExtractDataDetailById = (id) => {
};

const Detail = (params) => {
// habilitar el botton volver a pagina principal
const returnHomeButton = document.getElementById('return-home');
returnHomeButton.classList.remove('hidden');

const cardData = ExtractDataDetailById(params['id']);
const view = document.createElement('div');
Expand Down
6 changes: 3 additions & 3 deletions src/views/detail/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
}

.messages {
background-image: linear-gradient(rgba(163, 146, 165, 0.35), rgba(173, 173, 173, 0.732)), url("/imagenes/imagen1.png");
background-image: linear-gradient(rgba(207, 159, 212, 0.35), rgba(235, 198, 233, 0.732));
padding: 20px;
list-style: none;
padding: 0;
Expand Down Expand Up @@ -98,8 +98,8 @@
width: 20%;
margin-left: 10px;
padding: 10px;
background-color: #b4b2b5;
color: white;
background-color: rgb(227, 137, 215);
color: rgb(10, 11, 11);
border: none;
border-radius: 5px;
font-size: 16px;
Expand Down
12 changes: 1 addition & 11 deletions test/apiKey.spec.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getApiKey, setApiKey } from '/lib/apiKey.js';
import { getApiKey, setApiKey } from '../src/lib/apiKey.js';

describe('setApiKey', () => {
it('debería establecer correctamente la API Key en localStorage', () => {
Expand Down Expand Up @@ -31,14 +31,4 @@ describe('getApiKey', () => {
expect(apiKey).toBeNull();
expect(window.alert).toHaveBeenCalledWith('Api Key invalida, por favor ingresa una Open AI api key');
});

it('debería solicitar una nueva clave de API si no hay clave en localStorage', () => {
const validKey = 'valid-api-key';
jest.spyOn(window, 'prompt').mockReturnValue(validKey);
jest.spyOn(window, 'alert').mockImplementation(() => {});

const apiKey = getApiKey();
expect(apiKey).toBeNull(); // Después de guardar una nueva clave, retorna null
expect(localStorage.getItem('apiKey')).toBe(validKey);
});
});
Empty file removed test/example.spec.js
Empty file.

0 comments on commit 3f76196

Please sign in to comment.