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 = `
+
+
+
+
+
+
+ Latitude |
+ Longitude |
+ Serviço |
+ Descrição |
+
+ Status |
+ Ações |
+
+
+
+
+ `;
- arr.push(formulario1);
-
- test('a geração de linhas está funcionando', () => {
- document.body.innerHTML =
- '
' +
- ' ' +
- ' ' +
- ' ' +
- ' ' +
- ' Latitude | ' +
- ' Longitude | ' +
- ' Serviço | ' +
- ' Descrição | ' +
- ' ' +
- ' Status | ' +
- ' Ações | ' +
- '
' +
- ' ' +
- ' ';
+ // 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("");
+ });
+});