mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-08-28 07:09:23 +00:00
111 lines
3.6 KiB
TypeScript
111 lines
3.6 KiB
TypeScript
![]() |
import { describe, expect, test } from 'vitest';
|
||
|
import { renderHook, act } from '@testing-library/react';
|
||
|
import { useChangePermissionsParameters, defaultParameters, ChangePermissionsParameters } from './useChangePermissionsParameters';
|
||
|
|
||
|
describe('useChangePermissionsParameters', () => {
|
||
|
test('should initialize with default parameters', () => {
|
||
|
const { result } = renderHook(() => useChangePermissionsParameters());
|
||
|
|
||
|
expect(result.current.parameters).toStrictEqual(defaultParameters);
|
||
|
});
|
||
|
|
||
|
test('should update individual boolean parameters', () => {
|
||
|
const { result } = renderHook(() => useChangePermissionsParameters());
|
||
|
|
||
|
act(() => {
|
||
|
result.current.updateParameter('preventAssembly', true);
|
||
|
});
|
||
|
|
||
|
expect(result.current.parameters.preventAssembly).toBe(true);
|
||
|
expect(result.current.parameters.preventPrinting).toBe(false); // Other parameters should remain unchanged
|
||
|
|
||
|
act(() => {
|
||
|
result.current.updateParameter('preventPrinting', true);
|
||
|
});
|
||
|
|
||
|
expect(result.current.parameters.preventPrinting).toBe(true);
|
||
|
expect(result.current.parameters.preventAssembly).toBe(true);
|
||
|
});
|
||
|
|
||
|
test('should update all permission parameters', () => {
|
||
|
const { result } = renderHook(() => useChangePermissionsParameters());
|
||
|
|
||
|
const permissionKeys = Object.keys(defaultParameters) as Array<keyof ChangePermissionsParameters>;
|
||
|
|
||
|
// Set all to true
|
||
|
act(() => {
|
||
|
permissionKeys.forEach(key => {
|
||
|
result.current.updateParameter(key, true);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
permissionKeys.forEach(key => {
|
||
|
expect(result.current.parameters[key]).toBe(true);
|
||
|
});
|
||
|
|
||
|
// Set all to false
|
||
|
act(() => {
|
||
|
permissionKeys.forEach(key => {
|
||
|
result.current.updateParameter(key, false);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
permissionKeys.forEach(key => {
|
||
|
expect(result.current.parameters[key]).toBe(false);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
test('should reset parameters to defaults', () => {
|
||
|
const { result } = renderHook(() => useChangePermissionsParameters());
|
||
|
|
||
|
// First, change some parameters
|
||
|
act(() => {
|
||
|
result.current.updateParameter('preventAssembly', true);
|
||
|
result.current.updateParameter('preventPrinting', true);
|
||
|
result.current.updateParameter('preventModify', true);
|
||
|
});
|
||
|
|
||
|
expect(result.current.parameters.preventAssembly).toBe(true);
|
||
|
expect(result.current.parameters.preventPrinting).toBe(true);
|
||
|
expect(result.current.parameters.preventModify).toBe(true);
|
||
|
|
||
|
// Then reset
|
||
|
act(() => {
|
||
|
result.current.resetParameters();
|
||
|
});
|
||
|
|
||
|
expect(result.current.parameters).toStrictEqual(defaultParameters);
|
||
|
});
|
||
|
|
||
|
test('should return correct endpoint name', () => {
|
||
|
const { result } = renderHook(() => useChangePermissionsParameters());
|
||
|
|
||
|
expect(result.current.getEndpointName()).toBe('add-password');
|
||
|
});
|
||
|
|
||
|
test('should always validate as true', () => {
|
||
|
const { result } = renderHook(() => useChangePermissionsParameters());
|
||
|
|
||
|
// Default state should be valid
|
||
|
expect(result.current.validateParameters()).toBe(true);
|
||
|
|
||
|
// Set some restrictions - should still be valid
|
||
|
act(() => {
|
||
|
result.current.updateParameter('preventAssembly', true);
|
||
|
result.current.updateParameter('preventPrinting', true);
|
||
|
});
|
||
|
|
||
|
expect(result.current.validateParameters()).toBe(true);
|
||
|
|
||
|
// Set all restrictions - should still be valid
|
||
|
act(() => {
|
||
|
const permissionKeys = Object.keys(defaultParameters) as Array<keyof ChangePermissionsParameters>;
|
||
|
permissionKeys.forEach(key => {
|
||
|
result.current.updateParameter(key, true);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
expect(result.current.validateParameters()).toBe(true);
|
||
|
});
|
||
|
});
|