< Summary - Frontend Coverage Report (Windows)

Information
Class: src\context\MaintenanceContext.js
Assembly: Default
File(s): src\context\MaintenanceContext.js
Line coverage
95%
Covered lines: 58
Uncovered lines: 3
Coverable lines: 61
Total lines: 61
Line coverage: 95%
Branch coverage
78%
Covered branches: 11
Total branches: 14
Branch coverage: 78.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

src\context\MaintenanceContext.js

#LineLine coverage
 11import React, { createContext, useContext, useReducer } from 'react';
 12
 13// Point 5: Reducer - Central decisions center
 14// Point 2: Structure - Status based instead of multiple booleans
 15const maintenanceReducer = (state, action) => {
 116    switch (action.type) {
 117        case 'UPDATE_STOCK':
 08            return { ...state, stock: action.payload };
 119        case 'ADD_MACHINE':
 210            return { ...state, machines: [...state.machines, action.payload] };
 1111        case 'SET_MACHINES':
 212            return { ...state, machines: action.payload };
 1113        case 'SET_INVENTORY':
 214            return { ...state, inventory: action.payload, stock: action.payload.reduce((acc, item) => acc + item.quantit
 1115        case 'SET_ALERTS':
 216            return { ...state, alerts: action.payload };
 1117        case 'SET_MAINTENANCE_LOGS':
 218            return { ...state, maintenanceLogs: action.payload };
 1119        case 'SET_STATUS':
 020            return { ...state, appStatus: action.payload };
 1121        case 'REMOVE_MACHINE':
 122            return { ...state, machines: state.machines.filter(m => m.id !== action.payload) };
 1123        default:
 024            return state;
 1125    }
 1126};
 127
 128const initialState = {
 129    stock: 0,
 130    machines: [],
 131    inventory: [],
 132    alerts: [],
 133    maintenanceLogs: [],
 134    appStatus: 'idle'
 135};
 136
 137// Point 6: Context - Data teleportation
 138const MaintenanceContext = createContext(null);
 139const MaintenanceDispatchContext = createContext(null);
 140
 141// Point 7: Scaling with Reducer + Context
 142export function MaintenanceProvider({ children }) {
 2443    const [state, dispatch] = useReducer(maintenanceReducer, initialState);
 2444
 2445    return (
 2446        <MaintenanceContext.Provider value={state}>
 2447            <MaintenanceDispatchContext.Provider value={dispatch}>
 2448                {children}
 2449            </MaintenanceDispatchContext.Provider>
 2450        </MaintenanceContext.Provider>
 2451    );
 2452}
 153
 154// Custom hooks for easier access
 155export function useMaintenance() {
 11256    return useContext(MaintenanceContext);
 11257}
 158
 159export function useMaintenanceDispatch() {
 4760    return useContext(MaintenanceDispatchContext);
 4761}