diff --git a/SAS/TMSS/frontend/tmss_webapp/sonar-project.properties b/SAS/TMSS/frontend/tmss_webapp/sonar-project.properties index cfb3890494dd6ae4b5e47db50efbc466fb51a616..9d26bdeeae3b9b397d314e2d05bc763f8c70d731 100644 --- a/SAS/TMSS/frontend/tmss_webapp/sonar-project.properties +++ b/SAS/TMSS/frontend/tmss_webapp/sonar-project.properties @@ -10,9 +10,9 @@ sonar.javascript.lcov.reportPaths=build/gnucxx11_opt/SAS/TMSS/frontend/tmss_weba #pipeline fails when the quality gate does not pass the standards sonar.qualitygate.wait=true sonar.qualitygate.timeout=1000 -sonar.coverage.exclusions=**/*.test.js,**/setupTests.js,**/__mocks__/*.data.js,**/__mocks__/*.json,**/*.scss,index.js -sonar.cpd.exclusions==**/*.test.js,**/setupTests.js,**/__mocks__/*.data.js,**/__mocks__/*.json,**/*.scss,index.js -sonar.exclusions==**/*.test.js,**/setupTests.js,**/__mocks__/*.data.js,**/__mocks__/*.json,**/*.scss,index.js +sonar.coverage.exclusions=**/*.test.js,**/setupTests.js,**/__mocks__/*.data.js,**/__mocks__/*.json,**/*.scss,index.js,**/tests/*.js +sonar.cpd.exclusions==**/*.test.js,**/setupTests.js,**/__mocks__/*.data.js,**/__mocks__/*.json,**/*.scss,index.js,**/tests/*.js +sonar.exclusions==**/*.test.js,**/setupTests.js,**/__mocks__/*.data.js,**/__mocks__/*.json,**/*.scss,index.js,**/tests/*.js # This is the name and version displayed in the SonarCloud UI. #sonar.projectName=TMSS Frontend #sonar.projectVersion=1.0 diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/ActionComponents.js b/SAS/TMSS/frontend/tmss_webapp/src/components/ActionComponents.js deleted file mode 100644 index 777784715bc34c41fd5cf29f0dfddafe3a365334..0000000000000000000000000000000000000000 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/ActionComponents.js +++ /dev/null @@ -1,73 +0,0 @@ -export { - Alert, - Badge, - Breadcrumb, - BreadcrumbItem, - Button, - ButtonDropdown, - ButtonGroup, - ButtonToolbar, - CardBody, - CardColumns, - CardDeck, - CardFooter, - CardGroup, - CardImg, - CardImgOverlay, - CardLink, - CardSubtitle, - CardText, - CardTitle, - Carousel, - CarouselCaption, - CarouselControl, - CarouselIndicators, - CarouselItem, - Col, - Collapse, - Container, - Dropdown, - DropdownItem, - DropdownMenu, - DropdownToggle, - Fade, - Form, - FormFeedback, - FormGroup, - FormText, - Input, - InputGroup, - InputGroupButtonDropdown, - InputGroupText, - Jumbotron, - Label, - ListGroup, - ListGroupItem, - ListGroupItemHeading, - ListGroupItemText, - Media, - Modal, - ModalBody, - ModalFooter, - ModalHeader, - NavbarBrand, - NavbarToggler, - NavItem, - NavLink, - Pagination, - PaginationItem, - PaginationLink, - Popover, - PopoverBody, - PopoverHeader, - Row, - TabContent, - Table, - TabPane, - Tooltip, - UncontrolledAlert, - UncontrolledButtonDropdown, - UncontrolledDropdown, - UncontrolledCollapse, - UncontrolledTooltip -} from 'reactstrap'; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/DynamicScheduler.js b/SAS/TMSS/frontend/tmss_webapp/src/components/DynamicScheduler.js index d936682fe1405f1d4088d5c3945cf6ec8bf3f02c..d27a81e9b3a22ff320e8773e38677571a142b606 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/DynamicScheduler.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/DynamicScheduler.js @@ -53,9 +53,9 @@ export default class DynamicScheduler extends Component { dynamicScheduler.value = this.currentStatus; let response = await UtilService.updateDynamicSchedulerStatus(dynamicScheduler); if(response) { - appGrowl.show({severity: 'success', summary: 'Success', detail: 'Dynamic Scheduling is turned '+((this.currentStatus === true)?'On' : 'Off')+' successfully!'}); + appGrowl?.show({severity: 'success', summary: 'Success', detail: 'Dynamic Scheduling is turned '+((this.currentStatus === true)?'On' : 'Off')+' successfully!'}); } else { - appGrowl.show({severity: 'error', summary: 'Error', detail: 'Dynamic Scheduling is not updated successfully.'}); + appGrowl?.show({severity: 'error', summary: 'Error', detail: 'Dynamic Scheduling is not updated successfully.'}); } if(this.props.callBack) { this.props.callBack(this.currentStatus, this.state.scheduleType); @@ -67,9 +67,9 @@ export default class DynamicScheduler extends Component { fixedScheduler.value = this.currentStatus; let response = await UtilService.updateFixedTimeSchedulerStatus(fixedScheduler); if(response) { - appGrowl.show({severity: 'success', summary: 'Success', detail: 'Fixed Time Scheduling is turned '+((this.currentStatus === true)?'On' : 'Off')+' successfully!'}); + appGrowl?.show({severity: 'success', summary: 'Success', detail: 'Fixed Time Scheduling is turned '+((this.currentStatus === true)?'On' : 'Off')+' successfully!'}); } else { - appGrowl.show({severity: 'error', summary: 'Error', detail: 'Fixed Scheduling is not updated successfully.'}); + appGrowl?.show({severity: 'error', summary: 'Error', detail: 'Fixed Scheduling is not updated successfully.'}); } if(this.props.callBack) { this.props.callBack(this.currentStatus, this.state.scheduleType); @@ -86,11 +86,6 @@ export default class DynamicScheduler extends Component { this.setState({showDialog: true, scheduleType: scheduleType}) } - showConfirmDialogFixedScheduler(e) { - this.currentStatusFixed = e.value; - this.setState({showDialogFixed: true}) - } - /** * Close the Confirmation dialog */ @@ -104,22 +99,19 @@ export default class DynamicScheduler extends Component { <> <div className="p-field p-grid"> <label className='col-lg-8 col-md-8 col-sm-12' htmlFor="autodeletion" style={{marginRight: '10px', marginLeft: '1em'}}>Dynamic Scheduling :</label> - {/* <label htmlFor="onLabel" style={{ marginRight: '0.25em', color: 'black'}}>OFF</label> */} <div className='col-lg-2 col-md-2 col-sm-12'> - <InputSwitch disabled={dynamicScheduler.setting?!dynamicScheduler.setting:true} + <InputSwitch disabled={dynamicScheduler?.setting?!dynamicScheduler.setting:true} checked={this.state.dsStatus} onChange={(e) => this.showConfirmDialog(e, 'dynamic')} - tooltip={`Dynamic Scheduling is turned ${this.state.dsStatus?'On':'Off'}. ${dynamicScheduler.setting?'Click':"Don't have permission"} to turn it ${this.state.dsStatus? "'Off'" : "'On'"}`} + tooltip={`Dynamic Scheduling is turned ${this.state.dsStatus?'On':'Off'}. ${dynamicScheduler?.setting?'Click':"Don't have permission"} to turn it ${this.state.dsStatus? "'Off'" : "'On'"}`} tooltipOptions={this.tooltipOptions}/> </div> </div> - {/* <label htmlFor="onLabel" style={{marginLeft: '0.25em', color: 'black'}}>ON</label> */} <div className="p-field p-grid"> <label className='col-lg-8 col-md-8 col-sm-12' htmlFor="autodeletion" style={{marginRight: '10px', marginLeft: '1em'}}>Fixed Scheduling :</label> <div className='col-lg-2 col-md-2 col-sm-12'> - {/* <label htmlFor="onLabel" style={{ marginRight: '0.25em', color: 'black'}}>OFF</label> */} - <InputSwitch disabled={dynamicScheduler.setting?!dynamicScheduler.setting:true} + <InputSwitch disabled={dynamicScheduler?.setting?!dynamicScheduler.setting:true} checked={this.state.fsStatus} onChange={(e) => this.showConfirmDialog(e, 'fixed')} - tooltip={`Fixed Time Scheduling is turned ${this.state.fsStatus?'On':'Off'}. ${dynamicScheduler.setting?'Click':"Don't have permission"} to turn it ${this.state.fsStatus? "'Off'" : "'On'"}`} + tooltip={`Fixed Time Scheduling is turned ${this.state.fsStatus?'On':'Off'}. ${dynamicScheduler?.setting?'Click':"Don't have permission"} to turn it ${this.state.fsStatus? "'Off'" : "'On'"}`} tooltipOptions={this.tooltipOptions}/> </div> </div> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/create.js index 0d6e2ef64e7ee69b0e08816280b71d6f179896b7..63ab6be7a84f6dd3a0a88b0fe18d86c76e3ee3fb 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/create.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/create.js @@ -215,7 +215,7 @@ export class CycleCreate extends Component { newValue = _.trim(eventValue); } //If value entered is not one decimal number then don't change the value and keep previous value. - cycleQuota[key] = (newValue === "NaN" || !/^[0-9]*(\.[0-9]{0,1})?$/.exec(newValue)) ? previousValue : (newValue); + cycleQuota[key] = (newValue == "NaN" || !/^[0-9]*(\.[0-9]{0,1})?$/.exec(newValue)) ? previousValue : (newValue); } else { cycleQuota[key] = ''; } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/edit.js index 03b37c334f7bb35f8d306bb68a48622bcca90817..06889624e81c8d15e520c8f33302a9908492a02b 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/edit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Cycle/edit.js @@ -246,7 +246,7 @@ export class CycleEdit extends Component { newValue = _.trim(eventValue); } //If value entered is not one decimal number then don't change the value and keep previous value. - cycleQuota[key] = (newValue==="NaN" || !/^[0-9]*(\.[0-9]{0,1})?$/.exec(newValue))?previousValue:(newValue); + cycleQuota[key] = (newValue=="NaN" || !/^[0-9]*(\.[0-9]{0,1})?$/.exec(newValue))?previousValue:(newValue); } else { cycleQuota[key] = ''; } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js index 6ddcd6698c3ed89c7e5a19bfe1247792d05651fd..d7f4976dcddd3a427109fafa1f3c6cc2f61a8ad9 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/create.js @@ -271,7 +271,7 @@ export class ProjectCreate extends Component { newValue = _.trim(eventValue); } //If value entered is not one decimal number then don't change the value and keep previous value. - projectQuota[key] = (newValue==="NaN" || !/^[0-9]*(\.[0-9]{0,1})?$/.exec(newValue))?previousValue:(newValue); + projectQuota[key] = (newValue=="NaN" || !/^[0-9]*(\.[0-9]{0,1})?$/.exec(newValue))?previousValue:(newValue); } else { projectQuota[key] = ''; } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.js index ed8426db6b6407e64692ce8f0e4310ec98f5d986..e10463f59e2290bba577a97ad5f972e98d686cf6 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Project/edit.js @@ -308,7 +308,7 @@ export class ProjectEdit extends Component { newValue = _.trim(eventValue); } //If value entered is not one decimal number then don't change the value and keep previous value. - projectQuota[key] = (newValue==="NaN" || !/^[0-9]*(\.[0-9]{0,1})?$/.exec(newValue))?previousValue:(newValue); + projectQuota[key] = (newValue=="NaN" || !/^[0-9]*(\.[0-9]{0,1})?$/.exec(newValue))?previousValue:(newValue); } else { projectQuota[key] = ''; } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.task.relation.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.task.relation.js index b61ed9589c320bb0858f6ebc34b2d5cd9450d479..cf285ff1d7a7cfda8be1c535f4a18a8a9e46441e 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.task.relation.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/Scheduling.task.relation.js @@ -34,21 +34,21 @@ const TaskRelations = (props) => { setConfirmDialog({ ...stateConfrimDialog }); return false; } - const taskActionMode = (task, isGroup) => { + const taskActionMode = (task ) => { let tempTask = UtilService.findObject(taskRelationDraft, task, 'id', 'id'); let tempTaskPosition = UtilService.findObjectIndex(taskRelationDraft, task, 'id', 'id'); - let taskAction = addOrDeleteAction(tempTask, task, isGroup); + let taskAction = addOrDeleteAction(tempTask, task ); taskRelationDraft[tempTaskPosition] = taskAction; setTaskRelationDraft([...taskRelationDraft]); } - const confirmTasks = (modeObj, task, isGroup) => { + const confirmTasks = (modeObj, task ) => { const relationGroup = { ...ingestRelation }; if (modeObj.mode === 'single') { let tasCanIngest = !relationGroup[modeObj.group][modeObj.pos].canIngest; relationGroup[modeObj.group][modeObj.pos].canIngest = tasCanIngest; setIngestRelation(relationGroup); task.canIngest = tasCanIngest; - taskActionMode(task, isGroup); + taskActionMode(task ); } else { if (modeObj.isSelected) { @@ -57,7 +57,7 @@ const TaskRelations = (props) => { else { modeObj.findRelGroup.map(task => task.canIngest = true); } - modeObj.findRelGroup.forEach(task => taskActionMode(task, isGroup)); + modeObj.findRelGroup.forEach(task => taskActionMode(task )); setIngestRelation(relationGroup); } if (!actionToggle(taskRelationDraft)) { diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js index c453c8290f4b17fb318423c70b26f1ccd7dd5c9a..91ec3f13732d0cf6da2476afa8f2d8483b94e53b 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js @@ -1220,7 +1220,6 @@ it.skip("test IM+BF Observation (Solar Campaign strategy) edit", async () => { await act( async() => { fireEvent.change(angle1El, { target: { value: '72h31m49.09s' } }); await new Promise((r) => setTimeout(r, 150)); - 'how to make this work' }); expect(content.getByText("Not a valid input. Mimimum: 00:00:00.0000hours or 0 or 00:00:00.0000degrees, Maximum:23:59:59.9999hours or 6.2831 or 359:59:59.9999degrees.")).toBeVisible(); expect(content.queryByTestId('save-btn')).toBeDisabled(); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/services/workflow.service.js b/SAS/TMSS/frontend/tmss_webapp/src/services/workflow.service.js index 56c5b3afcb993b936b87dc3714ae99868e76e337..3f984b0188b92f946a2f461ce5c499827862d65c 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/services/workflow.service.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/services/workflow.service.js @@ -140,7 +140,7 @@ const WorkflowService = { api += (filters === '')? '' : filters+'&'; api += (orderBy === '')? '' : orderBy+'&'; api += 'limit='+limit+'&offset=' - api += (offset === '') ? 0 : offset; + api += (offset == '') ? 0 : offset; response = await axios.get(api); } catch(error) { console.log(error); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/tests/DynamicScheduler.test.js b/SAS/TMSS/frontend/tmss_webapp/src/tests/DynamicScheduler.test.js new file mode 100644 index 0000000000000000000000000000000000000000..8c711df193c4487c53083f3a3632e55f362e0a98 --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/tests/DynamicScheduler.test.js @@ -0,0 +1,83 @@ +import { render, act, fireEvent,screen } from '@testing-library/react'; +import { MockAxiosSecurity } from './axiosmocks.'; +import MockAdapter from 'axios-mock-adapter'; +import axios from 'axios'; + + +import DynamicScheduler from '../components/DynamicScheduler'; +import PermissionStackUtil from '../authenticate/permission.stack.handler'; + + +function MakePrimaryMock(schedularvalue =true,saveStatusCode=200) { + let mock = new MockAdapter(axios); + mock.onGet("/api/subsystem/scheduler").reply(200,{ "name": "scheduler", "url": "https://tmss.lofar.eu/api/subsystem/scheduler", "created_at": "2022-10-03T08:55:11.449584", "description": "The scheduler subsystem takes care of scheduling all scheduling_units taking into account all their constraints and station availability", "status": "https://tmss.lofar.eu/api/subsystem_status/active", "status_value": "active", "tags": []} ); + mock.onGet("/api/setting/fixed_time_scheduling_enabled").reply(200,{ value:schedularvalue}); + mock.onGet("/api/setting/dynamic_scheduling_enabled").reply(200,{ value: schedularvalue}); + mock.onPatch("/api/setting/dynamic_scheduling_enabled").reply(saveStatusCode,{value:!schedularvalue}); + mock.onPatch("/api/setting/fixed_time_scheduling_enabled").reply(saveStatusCode,{value:!schedularvalue}); + + return mock; +} +describe('DynamicScheduler ', () => { + it('Renders DynamicScheduler without Security , With Data', async () => { + MockAxiosSecurity(MakePrimaryMock(true)); + let component + await act(async () => { component = render(<DynamicScheduler />); }); + expect(component.asFragment).toMatchSnapshot("After Creation"); + }); +}); + +describe('DynamicScheduler With proper authorization ', () => { + + it('Renders DynamicScheduler with Data With Security', async () => { + MockAxiosSecurity(MakePrimaryMock(false),200,true); + await PermissionStackUtil.getPermissions(true); + let component + await act(async () => { component = render(<DynamicScheduler />); }); + expect(component.asFragment()).toMatchSnapshot("After Permission Creation"); + }); + + it('Renders DynamicScheduler with Data With Security schedulars not active', async () => { + + await DynamicTest(200,""); + }); + + it('Renders DynamicScheduler with Data With Security schedulars not active error saving', async () => { + await DynamicTest(500," error saving"); + }); + +}); + + +async function DynamicTest(statusresult, SnapAppender) { + MockAxiosSecurity(MakePrimaryMock(false,statusresult),true); + await PermissionStackUtil.getPermissions(true); + let component; + let callbackfn = jest.fn(); + await act(async () => { component = render(<DynamicScheduler callBack= {callbackfn} />); }); + expect(component.asFragment()).toMatchSnapshot("After Permission Creation schedular not active + SnapAppender"); + + let aswitch = component.queryAllByRole('switch'); + await act(async () => { fireEvent.click(aswitch[0]); }); + const dialog = screen.getByTestId('confirm_dialog'); + expect(dialog).toBeInTheDocument(); + const submitButton = screen.getByText('Yes'); + await act(async () => { fireEvent.click(submitButton); }); + expect(component.asFragment()).toMatchSnapshot("After Permission Creation With Dialog " +SnapAppender); + + + // then fire the next switch + await act(async () => { fireEvent.click(aswitch[1]); }); + const submitButtontwo = screen.getByText('Yes'); + await act(async () => { fireEvent.click(submitButtontwo); }); + expect(component.asFragment()).toMatchSnapshot("After Permission Creation With Dialog Fixed Schedular" +SnapAppender) ; + if (statusresult==200) expect(callbackfn).toHaveBeenCalled(); + + // change and then cancel + await act(async () => { fireEvent.click(aswitch[1]); }); + let cancelButtonNo = screen.getByText('No'); + await act(async () => { fireEvent.click(cancelButtonNo); }); + + expect(component.asFragment()).toMatchSnapshot("After Cancel Action" +SnapAppender); +} + diff --git a/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/DynamicScheduler.test.js.snap b/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/DynamicScheduler.test.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..a3d57c7287191955816e5f2baaa88e49db4dc96c --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/DynamicScheduler.test.js.snap @@ -0,0 +1,793 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`DynamicScheduler Renders DynamicScheduler without Security , With Data: After Creation 1`] = `[Function]`; + +exports[`DynamicScheduler With proper authorization Renders DynamicScheduler with Data With Security schedulars not active error saving: After Cancel Action error saving 1`] = ` +<DocumentFragment> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Dynamic Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Fixed Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="custom-dlg p-grid" + data-testid="confirm_dialog" + style="opacity: 1;" + /> +</DocumentFragment> +`; + +exports[`DynamicScheduler With proper authorization Renders DynamicScheduler with Data With Security schedulars not active error saving: After Permission Creation With Dialog error saving 1`] = ` +<DocumentFragment> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Dynamic Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Fixed Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="false" + class="p-inputswitch p-component p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="false" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="custom-dlg p-grid" + data-testid="confirm_dialog" + style="opacity: 1;" + /> +</DocumentFragment> +`; + +exports[`DynamicScheduler With proper authorization Renders DynamicScheduler with Data With Security schedulars not active error saving: After Permission Creation With Dialog Fixed Schedular error saving 1`] = ` +<DocumentFragment> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Dynamic Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Fixed Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="custom-dlg p-grid" + data-testid="confirm_dialog" + style="opacity: 1;" + /> +</DocumentFragment> +`; + +exports[`DynamicScheduler With proper authorization Renders DynamicScheduler with Data With Security schedulars not active error saving: After Permission Creation schedular not active + SnapAppender 1`] = ` +<DocumentFragment> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Dynamic Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="false" + class="p-inputswitch p-component p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="false" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Fixed Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="false" + class="p-inputswitch p-component p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="false" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="custom-dlg p-grid" + data-testid="confirm_dialog" + style="opacity: 1;" + /> +</DocumentFragment> +`; + +exports[`DynamicScheduler With proper authorization Renders DynamicScheduler with Data With Security schedulars not active: After Cancel Action 1`] = ` +<DocumentFragment> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Dynamic Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Fixed Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="custom-dlg p-grid" + data-testid="confirm_dialog" + style="opacity: 1;" + /> +</DocumentFragment> +`; + +exports[`DynamicScheduler With proper authorization Renders DynamicScheduler with Data With Security schedulars not active: After Permission Creation With Dialog 1`] = ` +<DocumentFragment> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Dynamic Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Fixed Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="false" + class="p-inputswitch p-component p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="false" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="custom-dlg p-grid" + data-testid="confirm_dialog" + style="opacity: 1;" + /> +</DocumentFragment> +`; + +exports[`DynamicScheduler With proper authorization Renders DynamicScheduler with Data With Security schedulars not active: After Permission Creation With Dialog Fixed Schedular 1`] = ` +<DocumentFragment> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Dynamic Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Fixed Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="true" + class="p-inputswitch p-component p-inputswitch-checked p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="true" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="custom-dlg p-grid" + data-testid="confirm_dialog" + style="opacity: 1;" + /> +</DocumentFragment> +`; + +exports[`DynamicScheduler With proper authorization Renders DynamicScheduler with Data With Security schedulars not active: After Permission Creation schedular not active + SnapAppender 1`] = ` +<DocumentFragment> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Dynamic Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="false" + class="p-inputswitch p-component p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="false" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Fixed Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="false" + class="p-inputswitch p-component p-disabled" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="false" + data-pc-section="hiddeninput" + disabled="" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="custom-dlg p-grid" + data-testid="confirm_dialog" + style="opacity: 1;" + /> +</DocumentFragment> +`; + +exports[`DynamicScheduler With proper authorization Renders DynamicScheduler with Data With Security: After Permission Creation 1`] = ` +<DocumentFragment> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Dynamic Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="false" + class="p-inputswitch p-component" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="false" + data-pc-section="hiddeninput" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="p-field p-grid" + > + <label + class="col-lg-8 col-md-8 col-sm-12" + for="autodeletion" + style="margin-right: 10px; margin-left: 1em;" + > + Fixed Scheduling : + </label> + <div + class="col-lg-2 col-md-2 col-sm-12" + > + <div + aria-checked="false" + class="p-inputswitch p-component" + data-pc-name="inputswitch" + data-pc-section="root" + role="checkbox" + > + <div + class="p-hidden-accessible" + data-pc-section="hiddeninputwrapper" + > + <input + aria-checked="false" + data-pc-section="hiddeninput" + role="switch" + type="checkbox" + /> + </div> + <span + class="p-inputswitch-slider" + data-pc-section="slider" + /> + </div> + </div> + </div> + <div + class="custom-dlg p-grid" + data-testid="confirm_dialog" + style="opacity: 1;" + /> +</DocumentFragment> +`; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/app.test.js.snap b/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/app.test.js.snap index f5a60272b2d384a456507333596e05c3d105f5f9..43caaff8baf94674b7dfb4f923a0782be55315c0 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/app.test.js.snap +++ b/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/app.test.js.snap @@ -522,33 +522,32 @@ exports[`App renders the App component with Valid Credentials: After Logout 1`] <div class=\\"rct-sidebar\\" style=\\"width: 150px; height: 280px;\\"> <div style=\\"width: 150px;\\"> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-27\\" target=\\"_new\\"> Dec 27 - Wed </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-28\\" target=\\"_new\\"> Dec 28 - Thu </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-28\\" target=\\"_new\\"> Dec 28 - Thu </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-29\\" target=\\"_new\\"> Dec 29 - Fri </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-29\\" target=\\"_new\\"> Dec 29 - Fri </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-30\\" target=\\"_new\\"> Dec 30 - Sat </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-30\\" target=\\"_new\\"> Dec 30 - Sat </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2023-12-31\\" target=\\"_new\\"> Dec 31 - Sun </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2023-12-31\\" target=\\"_new\\"> Dec 31 - Sun </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-01\\" target=\\"_new\\"> Jan 01 - Mon </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-01\\" target=\\"_new\\"> Jan 01 - Mon </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-02\\" target=\\"_new\\"> Jan 02 - Tue </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-02\\" target=\\"_new\\"> Jan 02 - Tue </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-03\\" target=\\"_new\\"> Jan 03 - Wed </a></div> </div> </div> </div> <div class=\\"rct-scroll\\" style=\\"width: -150px; height: 300px; cursor: default; position: relative;\\"> <div style=\\"position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px;\\"> - <div style=\\"position: absolute; top: 0px; bottom: 0px; width: 2px; pointer-events: none; left: -81.36726119515272px; z-index: 998;\\"></div> <div class=\\"rct-vertical-lines\\"> - <div class=\\"rct-vl \\" style=\\"pointer-events: none; top: 0px; left: 54000.62500723388px; width: -54750.63368788991px; height: 280px;\\"></div> + <div class=\\"rct-vl \\" style=\\"pointer-events: none; top: 0px; left: 54150.62674336509px; width: -54750.63368788991px; height: 280px;\\"></div> </div> <div class=\\"rct-horizontal-lines\\"> <div class=\\"rct-hl-even \\" style=\\"width: -150px; height: 40px;\\"></div> @@ -939,33 +938,32 @@ exports[`App renders the App component with Valid Credentials: After Menu Toggle <div class=\\"rct-sidebar\\" style=\\"width: 150px; height: 280px;\\"> <div style=\\"width: 150px;\\"> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-27\\" target=\\"_new\\"> Dec 27 - Wed </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-28\\" target=\\"_new\\"> Dec 28 - Thu </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-28\\" target=\\"_new\\"> Dec 28 - Thu </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-29\\" target=\\"_new\\"> Dec 29 - Fri </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-29\\" target=\\"_new\\"> Dec 29 - Fri </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-30\\" target=\\"_new\\"> Dec 30 - Sat </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-30\\" target=\\"_new\\"> Dec 30 - Sat </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2023-12-31\\" target=\\"_new\\"> Dec 31 - Sun </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2023-12-31\\" target=\\"_new\\"> Dec 31 - Sun </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-01\\" target=\\"_new\\"> Jan 01 - Mon </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-01\\" target=\\"_new\\"> Jan 01 - Mon </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-02\\" target=\\"_new\\"> Jan 02 - Tue </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-02\\" target=\\"_new\\"> Jan 02 - Tue </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-03\\" target=\\"_new\\"> Jan 03 - Wed </a></div> </div> </div> </div> <div class=\\"rct-scroll\\" style=\\"width: -150px; height: 300px; cursor: default; position: relative;\\"> <div style=\\"position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px;\\"> - <div style=\\"position: absolute; top: 0px; bottom: 0px; width: 2px; pointer-events: none; left: -81.3655250639475px; z-index: 998;\\"></div> <div class=\\"rct-vertical-lines\\"> - <div class=\\"rct-vl \\" style=\\"pointer-events: none; top: 0px; left: 54000.62500723388px; width: -54750.63368788991px; height: 280px;\\"></div> + <div class=\\"rct-vl \\" style=\\"pointer-events: none; top: 0px; left: 54150.62674336509px; width: -54750.63368788991px; height: 280px;\\"></div> </div> <div class=\\"rct-horizontal-lines\\"> <div class=\\"rct-hl-even \\" style=\\"width: -150px; height: 40px;\\"></div> @@ -1344,33 +1342,32 @@ exports[`App renders the App component with Valid Credentials: After Menu Toggle <div class=\\"rct-sidebar\\" style=\\"width: 150px; height: 280px;\\"> <div style=\\"width: 150px;\\"> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-27\\" target=\\"_new\\"> Dec 27 - Wed </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-28\\" target=\\"_new\\"> Dec 28 - Thu </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-28\\" target=\\"_new\\"> Dec 28 - Thu </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-29\\" target=\\"_new\\"> Dec 29 - Fri </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-29\\" target=\\"_new\\"> Dec 29 - Fri </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-30\\" target=\\"_new\\"> Dec 30 - Sat </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-30\\" target=\\"_new\\"> Dec 30 - Sat </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2023-12-31\\" target=\\"_new\\"> Dec 31 - Sun </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2023-12-31\\" target=\\"_new\\"> Dec 31 - Sun </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-01\\" target=\\"_new\\"> Jan 01 - Mon </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-01\\" target=\\"_new\\"> Jan 01 - Mon </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-02\\" target=\\"_new\\"> Jan 02 - Tue </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-02\\" target=\\"_new\\"> Jan 02 - Tue </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-03\\" target=\\"_new\\"> Jan 03 - Wed </a></div> </div> </div> </div> <div class=\\"rct-scroll\\" style=\\"width: -150px; height: 300px; cursor: default; position: relative;\\"> <div style=\\"position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px;\\"> - <div style=\\"position: absolute; top: 0px; bottom: 0px; width: 2px; pointer-events: none; left: -81.3655250639475px; z-index: 998;\\"></div> <div class=\\"rct-vertical-lines\\"> - <div class=\\"rct-vl \\" style=\\"pointer-events: none; top: 0px; left: 54000.62500723388px; width: -54750.63368788991px; height: 280px;\\"></div> + <div class=\\"rct-vl \\" style=\\"pointer-events: none; top: 0px; left: 54150.62674336509px; width: -54750.63368788991px; height: 280px;\\"></div> </div> <div class=\\"rct-horizontal-lines\\"> <div class=\\"rct-hl-even \\" style=\\"width: -150px; height: 40px;\\"></div> @@ -1749,33 +1746,32 @@ exports[`App renders the App component with Valid Credentials: After Menu item c <div class=\\"rct-sidebar\\" style=\\"width: 150px; height: 280px;\\"> <div style=\\"width: 150px;\\"> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-27\\" target=\\"_new\\"> Dec 27 - Wed </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-28\\" target=\\"_new\\"> Dec 28 - Thu </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-28\\" target=\\"_new\\"> Dec 28 - Thu </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-29\\" target=\\"_new\\"> Dec 29 - Fri </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-29\\" target=\\"_new\\"> Dec 29 - Fri </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-30\\" target=\\"_new\\"> Dec 30 - Sat </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">52</span><a href=\\"/constraint/view/2023-12-30\\" target=\\"_new\\"> Dec 30 - Sat </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2023-12-31\\" target=\\"_new\\"> Dec 31 - Sun </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2023-12-31\\" target=\\"_new\\"> Dec 31 - Sun </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-01\\" target=\\"_new\\"> Jan 01 - Mon </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-odd\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-01\\" target=\\"_new\\"> Jan 01 - Mon </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-02\\" target=\\"_new\\"> Jan 02 - Tue </a></div> </div> <div class=\\"rct-sidebar-row rct-sidebar-row-even\\" style=\\"height: 40px; line-height: 40px;\\"> - <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-02\\" target=\\"_new\\"> Jan 02 - Tue </a></div> + <div class=\\"group-renderer\\"><span class=\\"week\\">1</span><a href=\\"/constraint/view/2024-01-03\\" target=\\"_new\\"> Jan 03 - Wed </a></div> </div> </div> </div> <div class=\\"rct-scroll\\" style=\\"width: -150px; height: 300px; cursor: default; position: relative;\\"> <div style=\\"position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px;\\"> - <div style=\\"position: absolute; top: 0px; bottom: 0px; width: 2px; pointer-events: none; left: -81.3655250639475px; z-index: 998;\\"></div> <div class=\\"rct-vertical-lines\\"> - <div class=\\"rct-vl \\" style=\\"pointer-events: none; top: 0px; left: 54000.62500723388px; width: -54750.63368788991px; height: 280px;\\"></div> + <div class=\\"rct-vl \\" style=\\"pointer-events: none; top: 0px; left: 54150.62674336509px; width: -54750.63368788991px; height: 280px;\\"></div> </div> <div class=\\"rct-horizontal-lines\\"> <div class=\\"rct-hl-even \\" style=\\"width: -150px; height: 40px;\\"></div> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/systemevent.list.test.js.snap b/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/systemevent.list.test.js.snap index ae9ca7a260099d36646cbc53f201bc84f50211af..68b9a3b76fadb252534f63158c4589e0ca0af59c 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/systemevent.list.test.js.snap +++ b/SAS/TMSS/frontend/tmss_webapp/src/tests/__snapshots__/systemevent.list.test.js.snap @@ -1521,7 +1521,7 @@ exports[`Systen Event List System Event Renders correctly with data 1`] = ` <div style="box-sizing: border-box; flex: 150 0 auto; min-width: 60px; width: 150px;" > - 2023-12-27 13:29:07 + 2023-12-28 00:07:29 </div> </td> <td @@ -1530,7 +1530,7 @@ exports[`Systen Event List System Event Renders correctly with data 1`] = ` <div style="box-sizing: border-box; flex: 150 0 auto; min-width: 60px; width: 150px;" > - 2023-12-27 13:29:07 + 2023-12-28 00:07:29 </div> </td> <td @@ -1691,7 +1691,7 @@ exports[`Systen Event List System Event Renders correctly with data 1`] = ` <div style="box-sizing: border-box; flex: 150 0 auto; min-width: 60px; width: 150px;" > - 2023-12-27 13:29:07 + 2023-12-28 00:07:29 </div> </td> <td @@ -1700,7 +1700,7 @@ exports[`Systen Event List System Event Renders correctly with data 1`] = ` <div style="box-sizing: border-box; flex: 150 0 auto; min-width: 60px; width: 150px;" > - 2023-12-27 13:29:07 + 2023-12-28 00:07:29 </div> </td> <td @@ -1861,7 +1861,7 @@ exports[`Systen Event List System Event Renders correctly with data 1`] = ` <div style="box-sizing: border-box; flex: 150 0 auto; min-width: 60px; width: 150px;" > - 2023-12-27 13:29:07 + 2023-12-28 00:07:29 </div> </td> <td @@ -1870,7 +1870,7 @@ exports[`Systen Event List System Event Renders correctly with data 1`] = ` <div style="box-sizing: border-box; flex: 150 0 auto; min-width: 60px; width: 150px;" > - 2023-12-27 13:29:07 + 2023-12-28 00:07:29 </div> </td> <td diff --git a/SAS/TMSS/frontend/tmss_webapp/src/tests/axiosmocks..js b/SAS/TMSS/frontend/tmss_webapp/src/tests/axiosmocks..js index a620473c402bead109c663c1d25be7b1d976ccf0..7965c24db6a67ec7f804edfe09c2f4ffa818e6ad 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/tests/axiosmocks..js +++ b/SAS/TMSS/frontend/tmss_webapp/src/tests/axiosmocks..js @@ -20,9 +20,11 @@ export function MockAxiosBadSecurity(mock) { if (mock==null) mock = new MockAdapter(axios); return MockAxiosSecurity(mock,500) } -export function MockAxiosSecurity(mock, statusCode=200) { +export function MockAxiosSecurity(mock, statusCode=200,iswWithSchedularWrite) { if (mock==null) mock = new MockAdapter(axios); + let AllowedSchedular="GET" + if (iswWithSchedularWrite) AllowedSchedular="GET, PATCH" mock.onGet("/api/scheduling_set/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, copy"}); @@ -37,16 +39,16 @@ export function MockAxiosSecurity(mock, statusCode=200) { mock.onGet("/api/reservation/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE"}); mock.onGet("/api/task_relation_draft/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE"}); mock.onGet("/api/task_relation_blueprint/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE"}); - - mock.onGet("/api/system_event/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE"}); - mock.onGet("/api/setting/fixed_time_scheduling_enabled/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":"GET"}); - mock.onGet("/api/setting/dynamic_scheduling_enabled/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":"GET"}); + mock.onGet("/api/setting/fixed_time_scheduling_enabled/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":AllowedSchedular}); + mock.onGet("/api/setting/dynamic_scheduling_enabled/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":AllowedSchedular}); mock.onGet("/api/project/?fields=name&limit=1").reply(statusCode, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, friend, my_roles, report"}); return mock; } + + const FakeSun = { data: { "CS002": {