Merge pull request #184 from ets-cfuhrman-pfe/fuhrmanator/issue171
Some checks are pending
CI/CD Pipeline for Backend / build_and_push_backend (push) Waiting to run
CI/CD Pipeline for Nginx Router / build_and_push_nginx (push) Waiting to run
CI/CD Pipeline for Frontend / build_and_push_frontend (push) Waiting to run
Tests / tests (client) (push) Waiting to run
Tests / tests (server) (push) Waiting to run

Fuhrmanator/issue171
This commit is contained in:
Christopher (Cris) Fuhrman 2025-01-10 23:46:01 -05:00 committed by GitHub
commit e5e7f61b71
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 36 additions and 19 deletions

View file

@ -1,2 +1,2 @@
VITE_BACKEND_URL=http://localhost:4400 VITE_BACKEND_URL=http://localhost:4400
VITE_AZURE_BACKEND_URL=http://localhost:4400 VITE_BACKEND_SOCKET_URL=http://localhost:4400

View file

@ -11,7 +11,8 @@ module.exports = {
//moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], //moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
setupFiles: ['./jest.setup.cjs'], setupFiles: ['./jest.setup.cjs'],
moduleNameMapper: { moduleNameMapper: {
'\\.(css|less|scss|sass)$': 'identity-obj-proxy' '\\.(css|less|scss|sass)$': 'identity-obj-proxy',
'^src/constants$': '<rootDir>/src/__mocks__/constantsMock.tsx',
}, },
transformIgnorePatterns: ['node_modules/(?!nanoid/)'], transformIgnorePatterns: ['node_modules/(?!nanoid/)'],
}; };

View file

@ -0,0 +1,13 @@
console.log('constantsMock.tsx is loaded');
// constants.tsx
const ENV_VARIABLES = {
MODE: 'production',
VITE_BACKEND_URL: process.env.VITE_BACKEND_URL || "",
VITE_BACKEND_SOCKET_URL: process.env.VITE_BACKEND_SOCKET_URL || "",
};
console.log(`ENV_VARIABLES.VITE_BACKEND_URL=${ENV_VARIABLES.VITE_BACKEND_URL}`);
console.log(`ENV_VARIABLES.VITE_BACKEND_SOCKET_URL=${ENV_VARIABLES.VITE_BACKEND_SOCKET_URL}`);
export { ENV_VARIABLES };

View file

@ -1,16 +1,10 @@
//WebsocketService.test.tsx //WebsocketService.test.tsx
import WebsocketService from '../../services/WebsocketService'; import WebsocketService from '../../services/WebsocketService';
import { io, Socket } from 'socket.io-client'; import { io, Socket } from 'socket.io-client';
import { ENV_VARIABLES } from '../../constants'; import { ENV_VARIABLES } from 'src/constants';
jest.mock('socket.io-client'); jest.mock('socket.io-client');
// jest.mock('../../constants', () => ({
// ENV_VARIABLES: {
// VITE_BACKEND_SOCKET_URL: 'https://ets-glitch-backend.glitch.me/'
// }
// }));
describe('WebSocketService', () => { describe('WebSocketService', () => {
let mockSocket: Partial<Socket>; let mockSocket: Partial<Socket>;

View file

@ -1,8 +1,8 @@
// constants.tsx // constants.tsx
const ENV_VARIABLES = { const ENV_VARIABLES = {
MODE: 'production', MODE: 'production',
VITE_BACKEND_URL: process.env.VITE_BACKEND_URL || "", VITE_BACKEND_URL: import.meta.env.VITE_BACKEND_URL || "",
VITE_BACKEND_SOCKET_URL: process.env.VITE_BACKEND_SOCKET_URL || "", VITE_BACKEND_SOCKET_URL: import.meta.env.VITE_BACKEND_SOCKET_URL || "",
}; };
console.log(`ENV_VARIABLES.VITE_BACKEND_URL=${ENV_VARIABLES.VITE_BACKEND_URL}`); console.log(`ENV_VARIABLES.VITE_BACKEND_URL=${ENV_VARIABLES.VITE_BACKEND_URL}`);

View file

@ -1,7 +1,7 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Socket } from 'socket.io-client'; import { Socket } from 'socket.io-client';
import { ENV_VARIABLES } from '../../../constants'; import { ENV_VARIABLES } from 'src/constants';
import StudentModeQuiz from '../../../components/StudentModeQuiz/StudentModeQuiz'; import StudentModeQuiz from '../../../components/StudentModeQuiz/StudentModeQuiz';
import TeacherModeQuiz from '../../../components/TeacherModeQuiz/TeacherModeQuiz'; import TeacherModeQuiz from '../../../components/TeacherModeQuiz/TeacherModeQuiz';

View file

@ -10,7 +10,7 @@ import webSocketService, { AnswerReceptionFromBackendType } from '../../../servi
import { QuizType } from '../../../Types/QuizType'; import { QuizType } from '../../../Types/QuizType';
import './manageRoom.css'; import './manageRoom.css';
import { ENV_VARIABLES } from '../../../constants'; import { ENV_VARIABLES } from 'src/constants';
import { StudentType, Answer } from '../../../Types/StudentType'; import { StudentType, Answer } from '../../../Types/StudentType';
import { Button } from '@mui/material'; import { Button } from '@mui/material';
import LoadingCircle from '../../../components/LoadingCircle/LoadingCircle'; import LoadingCircle from '../../../components/LoadingCircle/LoadingCircle';

View file

@ -1,8 +1,8 @@
import axios, { AxiosError, AxiosResponse } from 'axios'; import axios, { AxiosError, AxiosResponse } from 'axios';
import { ENV_VARIABLES } from '../constants';
import { QuizType } from '../Types/QuizType'; import { FolderType } from 'src/Types/FolderType';
import { FolderType } from '../Types/FolderType'; import { QuizType } from 'src/Types/QuizType';
import { ENV_VARIABLES } from 'src/constants';
class ApiService { class ApiService {
private BASE_URL: string; private BASE_URL: string;

View file

@ -1,5 +1,9 @@
{ {
"compilerOptions": { "compilerOptions": {
"baseUrl": "./",
"paths": {
"src/*": ["src/*"]
},
"target": "ESNext", "target": "ESNext",
"useDefineForClassFields": true, "useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"], "lib": ["ES2020", "DOM", "DOM.Iterable"],

View file

@ -20,6 +20,11 @@ export default defineConfig({
pluginChecker({ typescript: true }), pluginChecker({ typescript: true }),
EnvironmentPlugin(filteredEnv), EnvironmentPlugin(filteredEnv),
], ],
resolve: {
alias: {
'src': '/src'
}
},
preview: { preview: {
port: 5173, port: 5173,
strictPort: true strictPort: true

View file

@ -43,6 +43,7 @@ const imagesRouter = require('./routers/images.js');
// Setup environment // Setup environment
dotenv.config(); dotenv.config();
const isDev = process.env.NODE_ENV === 'development';
const errorHandler = require("./middleware/errorHandler.js"); const errorHandler = require("./middleware/errorHandler.js");
// Start app // Start app
@ -63,13 +64,12 @@ const configureServer = (httpServer, isDev) => {
}; };
// Start sockets (depending on the dev or prod environment) // Start sockets (depending on the dev or prod environment)
let server = http.createServer(app); const server = http.createServer(app);
let isDev = process.env.NODE_ENV === 'development';
console.log(`Environnement: ${process.env.NODE_ENV} (${isDev ? 'dev' : 'prod'})`); console.log(`Environnement: ${process.env.NODE_ENV} (${isDev ? 'dev' : 'prod'})`);
const io = configureServer(server); const io = configureServer(server);
console.log(`server.io configured: ${io.secure ? 'secure' : 'not secure'}`); console.log(`Server configured with cors.origin: ${io.opts.cors.origin} and secure: ${io.opts.secure}`);
setupWebsocket(io); setupWebsocket(io);
console.log(`Websocket setup with on() listeners.`); console.log(`Websocket setup with on() listeners.`);