diff --git a/lgbtq_connect/includes/admin/admin_script.js b/lgbtq_connect/includes/admin/admin_script.js index 64eb14b2..e21debca 100644 --- a/lgbtq_connect/includes/admin/admin_script.js +++ b/lgbtq_connect/includes/admin/admin_script.js @@ -373,13 +373,13 @@ function abrirModalEdicao(dados) { // Preenche os campos do formulário com os dados fornecidos document.getElementById('editId').value = dados.id; document.getElementById('editNome').value = dados.nome; - document.getElementById('editEmail').value = dados.email; + document.getElementById('editEmail').value = dados.email; // Email não é filtrado document.getElementById('editServico').value = dados.servico; document.getElementById('editDescricao').value = dados.descricao; - document.getElementById('editLatitude').value = dados.latitude; - document.getElementById('editLongitude').value = dados.longitude; + document.getElementById('editLatitude').value = parseFloat(dados.latitude); + document.getElementById('editLongitude').value = parseFloat(dados.longitude); - initMapEdit(dados.latitude, dados.longitude, dados.nome, dados.servico, dados.descricao); + initMapEdit(parseFloat(dados.latitude), parseFloat(dados.longitude), dados.nome, dados.servico, dados.descricao); // Exibe o modal de edição popup.style.display = "flex"; @@ -388,7 +388,7 @@ function abrirModalEdicao(dados) { // Atualiza o tamanho do mapa e define a visualização após um pequeno atraso para garantir que o modal tenha sido completamente exibido setTimeout(function() { mapEdit.invalidateSize(); - mapEdit.setView([dados.latitude, dados.longitude], 13); + mapEdit.setView([parseFloat(dados.latitude), parseFloat(dados.longitude)], 13); }, 200); modal.scrollIntoView({ behavior: 'smooth' }); @@ -401,6 +401,43 @@ function abrirModalEdicao(dados) { }; } +// Função para filtrar caracteres especiais e exibir um alerta + function filtrarCaracteresEspeciais(texto, campo) { + const regex = /[!#$%&()*+\/<=>?@[\\\]_{|}]/; + if (regex.test(texto)) { + alert(`O campo ${campo} contém caracteres especiais que não são permitidos.`); + return false; // Retorna false se caracteres especiais forem encontrados + } + return true; +} + +// Função para adicionar o event listener ao formulário + function adicionarListenerFormulario() { + const form = document.getElementById('editForm'); + if (form) { + form.addEventListener('submit', function(event) { + const id = document.getElementById('editId').value; + const nome = document.getElementById('editNome').value; + const email = document.getElementById('editEmail').value; + const servico = document.getElementById('editServico').value; + const descricao = document.getElementById('editDescricao').value; + + // Verifica cada campo para caracteres especiais + if (!filtrarCaracteresEspeciais(id, 'ID') || + !filtrarCaracteresEspeciais(nome, 'Nome') || + !filtrarCaracteresEspeciais(servico, 'Serviço') || + !filtrarCaracteresEspeciais(descricao, 'Descrição')) { + event.preventDefault(); // Impede o envio do formulário + alert('Um ou mais campos contêm caracteres especiais que não são permitidos.'); + } + }); + } else { + console.warn('O formulário com o ID "editForm" não foi encontrado.'); + } +} +// Chama a função para adicionar o listener ao formulário quando o DOM estiver pronto +document.addEventListener('DOMContentLoaded', adicionarListenerFormulario); + function fecharEditor() { document.getElementById('editPopup').style.display = "none"; document.getElementById('editModal').style.display = "none"; diff --git a/lgbtq_connect/includes/admin/pagina_administracao.php b/lgbtq_connect/includes/admin/pagina_administracao.php index cd149683..8d1ccfb1 100644 --- a/lgbtq_connect/includes/admin/pagina_administracao.php +++ b/lgbtq_connect/includes/admin/pagina_administracao.php @@ -88,8 +88,8 @@ function mostrar_dados() {
- -
+ +
diff --git a/tests/js/filtro_admin.test.js b/tests/js/filtro_admin.test.js index 5936ba26..f2a8480d 100644 --- a/tests/js/filtro_admin.test.js +++ b/tests/js/filtro_admin.test.js @@ -1,63 +1,72 @@ -import {Filtro} from '../../lgbtq_connect/includes/admin/admin_script.js'; +import { Filtro } from '../../lgbtq_connect/includes/admin/admin_script.js'; describe("filtro (página do admin)", () => { - let arr = []; + let arr; let arr_filtrada; - let formulario1 = { + const formulario1 = { nome: "Cabana", situacao: "Aprovado", servico: "entretenimento" - } - let formulario2 = { + }; + const formulario2 = { nome: "pizza", situacao: "Negado", - servico: "bar/restaurante" - } - let formulario3 = { + servico: "bar/restaurante" + }; + const formulario3 = { nome: "Escola", situacao: "Pendente", servico: "ensino" - } + }; - arr.push(formulario1, formulario2, formulario3); - test('filtro por nome está funcionando', () => { + beforeEach(() => { + // Reset the array and filters before each test + arr = [formulario1, formulario2, formulario3]; Filtro.reiniciarFiltro(); - Filtro.nome="Cabana "; + + // Simulate the DOM elements + document.body.innerHTML = ` +
+ + + +
+ `; + }); + + test('filtro por nome está funcionando', () => { + Filtro.nome = "Cabana "; arr_filtrada = Filtro.realizarFiltragem(arr); expect(arr_filtrada).toContain(formulario1); expect(arr_filtrada).toHaveLength(1); - }) + }); test('filtro por status está funcionando', () => { - Filtro.reiniciarFiltro(); - Filtro.status="Pendente"; + Filtro.status = "Pendente"; arr_filtrada = Filtro.realizarFiltragem(arr); expect(arr_filtrada).toContain(formulario3); expect(arr_filtrada).toHaveLength(1); - }) + }); test('filtro por serviço está funcionando', () => { - Filtro.reiniciarFiltro(); - Filtro.servico="ensino" - arr_filtrada = Filtro.realizarFiltragem(arr) + Filtro.servico = "ensino"; + arr_filtrada = Filtro.realizarFiltragem(arr); expect(arr_filtrada).toContain(formulario3); expect(arr_filtrada).toHaveLength(1); - }) + }); test('todos os filtros ao mesmo tempo estão funcionando com valores não-nulos', () => { - Filtro.reiniciarFiltro(); - Filtro.nome=" Cabana "; - Filtro.status="Aprovado"; - Filtro.servico="entretenimento" - arr_filtrada = Filtro.realizarFiltragem(arr) + Filtro.nome = "Cabana "; + Filtro.status = "Aprovado"; + Filtro.servico = "entretenimento"; + arr_filtrada = Filtro.realizarFiltragem(arr); expect(arr_filtrada).toContain(formulario1); expect(arr_filtrada).toHaveLength(1); - }) + }); test('todos os filtros ao mesmo tempo estão funcionando com valores nulos', () => { - Filtro.reiniciarFiltro(); - arr_filtrada = Filtro.realizarFiltragem(arr) + arr_filtrada = Filtro.realizarFiltragem(arr); expect(arr_filtrada).toHaveLength(3); - }) -}) \ No newline at end of file + }); +}); diff --git a/tests/js/ordenacao_admin.test.js b/tests/js/ordenacao_admin.test.js index b7ada2ec..73fe61a2 100644 --- a/tests/js/ordenacao_admin.test.js +++ b/tests/js/ordenacao_admin.test.js @@ -1,78 +1,92 @@ -import {Ordenador} from '../../lgbtq_connect/includes/admin/admin_script.js'; +import { Ordenador } from '../../lgbtq_connect/includes/admin/admin_script.js'; describe("ordenador (página do admin)", () => { - let arr = []; + let arr; + let formulario1, formulario2, formulario3; - let formulario1 = { - "id": 1, - "nome": "Cabana", - "email": "exemplo1@gmail.com", - "latitude": 50.2, - "longitude": 20.3, - "data_hora": "2024-01-01 00:00:00", - "servico": "entretenimento", - "descricao": "Bom demais", - "situacao": "Aprovado" - } + beforeEach(() => { + // Simulate the DOM elements + document.body.innerHTML = ` +
+ + + +
+ `; - let formulario2 = { - "id": 1, - "nome": "Pizza", - "email": "exemplo2@gmail.com", - "latitude": 50.2, - "longitude": 20.3, - "data_hora": "2024-01-02 00:00:00", - "servico": "bar/restaurante", - "descricao": "Bom demais", - "situacao": "Aprovado" - } + // Reset the data before each test + formulario1 = { + "id": 1, + "nome": "Cabana", + "email": "exemplo1@gmail.com", + "latitude": 50.2, + "longitude": 20.3, + "data_hora": "2024-01-01 00:00:00", + "servico": "entretenimento", + "descricao": "Bom demais", + "situacao": "Aprovado" + }; - let formulario3 = { - "id": 1, - "nome": "Hamburguer", - "email": "exemplo3@gmail.com", - "latitude": 50.2, - "longitude": 20.3, - "data_hora": "2024-01-01 00:00:01", - "servico": "bar/restaurante", - "descricao": "Bom demais", - "situacao": "Aprovado" - } + formulario2 = { + "id": 2, + "nome": "Pizza", + "email": "exemplo2@gmail.com", + "latitude": 50.2, + "longitude": 20.3, + "data_hora": "2024-01-02 00:00:00", + "servico": "bar/restaurante", + "descricao": "Bom demais", + "situacao": "Aprovado" + }; + + formulario3 = { + "id": 3, + "nome": "Hamburguer", + "email": "exemplo3@gmail.com", + "latitude": 50.2, + "longitude": 20.3, + "data_hora": "2024-01-01 00:00:01", + "servico": "bar/restaurante", + "descricao": "Bom demais", + "situacao": "Aprovado" + }; + + arr = [formulario1, formulario2, formulario3]; + }); - arr.push(formulario1, formulario2, formulario3); test('ordenação por nome está funcionando', () => { Ordenador.coluna = "nome"; Ordenador.ordem = "asc"; - arr = Ordenador.realizarOrdenacao(arr); - expect(arr[0]).toBe(formulario1); + let sortedArrAsc = Ordenador.realizarOrdenacao(arr); + expect(sortedArrAsc[0]).toBe(formulario1); Ordenador.ordem = "desc"; - arr = Ordenador.realizarOrdenacao(arr); - expect(arr[0]).toBe(formulario2); - }) + let sortedArrDesc = Ordenador.realizarOrdenacao(arr); + expect(sortedArrDesc[0]).toBe(formulario2); + }); test('ordenação por email está funcionando', () => { Ordenador.coluna = "email"; Ordenador.ordem = "asc"; - arr = Ordenador.realizarOrdenacao(arr); - expect(arr[0]).toBe(formulario1); + let sortedArrAsc = Ordenador.realizarOrdenacao(arr); + expect(sortedArrAsc[0]).toBe(formulario1); Ordenador.ordem = "desc"; - arr = Ordenador.realizarOrdenacao(arr); - expect(arr[0]).toBe(formulario3); - }) + let sortedArrDesc = Ordenador.realizarOrdenacao(arr); + expect(sortedArrDesc[0]).toBe(formulario3); + }); test('ordenação por data e hora está funcionando', () => { Ordenador.coluna = "data_hora"; Ordenador.ordem = "asc"; - arr = Ordenador.realizarOrdenacao(arr); - expect(arr[0]).toBe(formulario1); + let sortedArrAsc = Ordenador.realizarOrdenacao(arr); + expect(sortedArrAsc[0]).toBe(formulario1); Ordenador.ordem = "desc"; - arr = Ordenador.realizarOrdenacao(arr); - expect(arr[0]).toBe(formulario2); - }) -}) \ No newline at end of file + let sortedArrDesc = Ordenador.realizarOrdenacao(arr); + expect(sortedArrDesc[0]).toBe(formulario2); + }); +}); diff --git a/tests/js/tabela_admin.test.js b/tests/js/tabela_admin.test.js index 2c7f2b4d..5d5eb81c 100644 --- a/tests/js/tabela_admin.test.js +++ b/tests/js/tabela_admin.test.js @@ -1,76 +1,92 @@ -import {Tabela} from '../../lgbtq_connect/includes/admin/admin_script.js'; +import { Tabela } from '../../lgbtq_connect/includes/admin/admin_script.js'; describe("manipulação da tabela do admin", () => { - let arr=[]; + let arr; - let formulario1 = { - "id": 1, - "nome": "Cabana", - "email": "exemplo1@gmail.com", - "latitude": 50.2, - "city": "Cidade das boas", - "road": "Rua das boas", - "longitude": 20.3, - "data_hora": "2024-01-01 00:00:00", - "servico": "entretenimento", - "descricao": "Bom demais", - "situacao": "Aprovado" - } + beforeEach(() => { + // Simulate the DOM elements + document.body.innerHTML = ` +
+ + + +
+ + + + + + + + + + + + + + + +
Nome Email LatitudeLongitudeServiçoDescriçãoData e hora StatusAções
+ `; - arr.push(formulario1); - - test('a geração de linhas está funcionando', () => { - document.body.innerHTML = - '' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' ' + - ' '; + // Define the test data + arr = [ + { + "id": 1, + "nome": "Cabana", + "email": "exemplo1@gmail.com", + "latitude": 50.2, + "city": "Cidade das boas", + "road": "Rua das boas", + "longitude": 20.3, + "data_hora": "2024-01-01 00:00:00", + "servico": "entretenimento", + "descricao": "Bom demais", + "situacao": "Aprovado" + } + ]; + }); + test('a geração de linhas está funcionando', () => { const tabela = document.getElementById('tabela'); const tabelaObj = new Tabela(arr, tabela); tabelaObj.gerarLinhas(); + const tbody = document.getElementById("tabela-body"); + // Verifica se o nome está correto - expect(document.getElementById("formulario-1-nome").innerHTML).toBe("Cabana"); + expect(tbody.querySelector("#formulario-1-nome").textContent).toBe("Cabana"); // Verifica se o email está correto - expect(document.getElementById("formulario-1-email").innerHTML).toBe("exemplo1@gmail.com"); + expect(tbody.querySelector("#formulario-1-email").textContent).toBe("exemplo1@gmail.com"); - // Verifica se a latitude está correta - expect(document.getElementById("formulario-1-cidade").innerHTML).toBe("Cidade das boas"); + // Verifica se a cidade está correta + expect(tbody.querySelector("#formulario-1-cidade").textContent).toBe("Cidade das boas"); - // Verifica se a longitude está correta - expect(document.getElementById("formulario-1-rua").innerHTML).toBe("Rua das boas"); + // Verifica se a rua está correta + expect(tbody.querySelector("#formulario-1-rua").textContent).toBe("Rua das boas"); - // Verifica se a data e hora está correta - expect(document.getElementById("formulario-1-data_hora").innerHTML).toBe("01/01/2024 00:00:00"); + // Verifica se a data e hora estão corretas + expect(tbody.querySelector("#formulario-1-data_hora").textContent).toBe("01/01/2024 00:00:00"); // Verifica se o serviço está correto - expect(document.getElementById("formulario-1-servico").innerHTML).toBe("entretenimento"); + expect(tbody.querySelector("#formulario-1-servico").textContent).toBe("entretenimento"); // Verifica se a descrição está correta - expect(document.getElementById("formulario-1-descricao").innerHTML).toBe("Bom demais"); + expect(tbody.querySelector("#formulario-1-descricao").textContent).toBe("Bom demais"); // Verifica se a situação está correta - expect(document.getElementById("formulario-1-situacao").innerHTML).toBe("Aprovado"); - }) + expect(tbody.querySelector("#formulario-1-situacao").textContent).toBe("Aprovado"); + }); test('a exclusão de linhas está funcionando', () => { + const tabela = document.getElementById('tabela'); const tabelaObj = new Tabela(arr, tabela); + tabelaObj.gerarLinhas(); // Gera as linhas primeiro + tabelaObj.excluirLinhas(); // Em seguida, exclui as linhas - tabelaObj.excluirLinhas(); - expect(tabela.querySelector("tbody").innerHTML).toBe(""); - }) -}) \ No newline at end of file + const tbody = document.getElementById("tabela-body"); + expect(tbody.innerHTML).toBe(""); + }); +});
Nome Email LatitudeLongitudeServiçoDescriçãoData e hora StatusAções