import 'reflect-metadata'; import { PERMISSION_KEY } from '../auth/decorators/permission.decorator'; import { OccupanciesController } from './occupancies.controller'; describe('OccupanciesController permissions', () => { it('requires occupancy:delete for single and batch archive actions', () => { expect(Reflect.getMetadata(PERMISSION_KEY, OccupanciesController.prototype.remove)).toEqual([ 'occupancy:delete', ]); expect( Reflect.getMetadata(PERMISSION_KEY, OccupanciesController.prototype.batchRemove), ).toEqual(['occupancy:delete']); }); it('keeps read-only endpoints on occupancy:view', () => { expect(Reflect.getMetadata(PERMISSION_KEY, OccupanciesController.prototype.findAll)).toEqual([ 'occupancy:view', ]); expect( Reflect.getMetadata(PERMISSION_KEY, OccupanciesController.prototype.exportExcel), ).toEqual(['occupancy:view']); expect( Reflect.getMetadata(PERMISSION_KEY, OccupanciesController.prototype.downloadTemplate), ).toEqual(['occupancy:view']); }); it('requires occupancy:purge on permanent delete routes', () => { expect(Reflect.getMetadata(PERMISSION_KEY, OccupanciesController.prototype.purge)).toEqual([ 'occupancy:purge', ]); expect( Reflect.getMetadata(PERMISSION_KEY, OccupanciesController.prototype.batchPurge), ).toEqual(['occupancy:purge']); }); });