From fcff21bc915a967029cfb1b1e59de33e187d09be Mon Sep 17 00:00:00 2001 From: Hiroki Terashima Date: Tue, 13 Aug 2024 08:29:59 -0700 Subject: [PATCH] refactor(TeacherProjectService): Move moveObjectUp/Down to array.ts --- .../edit-advanced-component.component.ts | 5 +- ...it-component-default-feedback.component.ts | 5 +- .../services/teacherProjectService.spec.ts | 62 +++---------------- .../components/AbstractComponentAuthoring.ts | 5 +- src/assets/wise5/common/array/array.spec.ts | 53 +++++++++++++++- src/assets/wise5/common/array/array.ts | 16 +++++ .../wise5/services/teacherProjectService.ts | 19 +----- src/messages.xlf | 62 +++++++++---------- 8 files changed, 118 insertions(+), 109 deletions(-) diff --git a/src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts b/src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts index 3c9cea77c49..50855761e40 100644 --- a/src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts +++ b/src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts @@ -4,6 +4,7 @@ import { Component } from '../../../assets/wise5/common/Component'; import { NotebookService } from '../../../assets/wise5/services/notebookService'; import { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService'; import { TeacherNodeService } from '../../../assets/wise5/services/teacherNodeService'; +import { moveObjectDown, moveObjectUp } from '../../../assets/wise5/common/array/array'; @Directive() export abstract class EditAdvancedComponentComponent { @@ -48,12 +49,12 @@ export abstract class EditAdvancedComponentComponent { } moveObjectUp(objects: any[], index: number): void { - this.teacherProjectService.moveObjectUp(objects, index); + moveObjectUp(objects, index); this.componentChanged(); } moveObjectDown(objects: any[], index: number): void { - this.teacherProjectService.moveObjectDown(objects, index); + moveObjectDown(objects, index); this.componentChanged(); } } diff --git a/src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts b/src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts index f3476421805..152d68e38eb 100644 --- a/src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts +++ b/src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts @@ -2,6 +2,7 @@ import { Component, Input } from '@angular/core'; import { Subject, Subscription } from 'rxjs'; import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; import { TeacherProjectService } from '../../../../assets/wise5/services/teacherProjectService'; +import { moveObjectDown, moveObjectUp } from '../../../../assets/wise5/common/array/array'; @Component({ selector: 'edit-component-default-feedback', @@ -37,12 +38,12 @@ export class EditComponentDefaultFeedback { } moveDefaultFeedbackUp(index: number): void { - this.ProjectService.moveObjectUp(this.componentContent.defaultFeedback, index); + moveObjectUp(this.componentContent.defaultFeedback, index); this.componentChanged(); } moveDefaultFeedbackDown(index: number): void { - this.ProjectService.moveObjectDown(this.componentContent.defaultFeedback, index); + moveObjectDown(this.componentContent.defaultFeedback, index); this.componentChanged(); } diff --git a/src/app/services/teacherProjectService.spec.ts b/src/app/services/teacherProjectService.spec.ts index 1e57289e529..9c710ea1617 100644 --- a/src/app/services/teacherProjectService.spec.ts +++ b/src/app/services/teacherProjectService.spec.ts @@ -16,7 +16,6 @@ let http: HttpTestingController; let demoProjectJSON: any; let scootersProjectJSON: any; let teacherProjectJSON: any; -let objects; const scootersProjectJSONString = JSON.stringify(demoProjectJSON_import); const scootersProjectName = 'scooters'; @@ -29,9 +28,14 @@ const wiseBaseURL = '/wise'; describe('TeacherProjectService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [StudentTeacherCommonServicesModule], - providers: [DeleteNodeService, TeacherProjectService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] -}); + imports: [StudentTeacherCommonServicesModule], + providers: [ + DeleteNodeService, + TeacherProjectService, + provideHttpClient(withInterceptorsFromDi()), + provideHttpClientTesting() + ] + }); http = TestBed.inject(HttpTestingController); service = TestBed.inject(TeacherProjectService); configService = TestBed.inject(ConfigService); @@ -79,8 +83,6 @@ describe('TeacherProjectService', () => { getOldToNewIds(); replaceOldIds(); replaceIds(); - moveObjectUp(); - moveObjectDown(); removeNodeIdFromTransitions(); }); @@ -750,54 +752,6 @@ function replaceIds() { }); } -function moveObjectUp() { - describe('moveObjectUp()', () => { - beforeEach(() => { - objects = [1, 2, 3]; - }); - moveObjectUpTopElement(); - moveObjectUpNotTopElement(); - }); -} - -function moveObjectUpTopElement() { - it('should not move an object up when the object is the top element', () => { - service.moveObjectUp(objects, 0); - expect(objects).toEqual([1, 2, 3]); - }); -} - -function moveObjectUpNotTopElement() { - it('should move an object up when the object is not the top element', () => { - service.moveObjectUp(objects, 1); - expect(objects).toEqual([2, 1, 3]); - }); -} - -function moveObjectDown() { - describe('moveObjectDown()', () => { - beforeEach(() => { - objects = [1, 2, 3]; - }); - moveObjectDownNotBottomElement(); - moveObjectDownIsBottomElement(); - }); -} - -function moveObjectDownNotBottomElement() { - it('should move an object down when the object is not the bottom element', () => { - service.moveObjectDown(objects, 1); - expect(objects).toEqual([1, 3, 2]); - }); -} - -function moveObjectDownIsBottomElement() { - it('should not move an object down when the object is the bottom element', () => { - service.moveObjectDown(objects, 2); - expect(objects).toEqual([1, 2, 3]); - }); -} - function removeNodeIdFromTransitions() { describe('removeNodeIdFromTransitions()', () => { beforeEach(() => { diff --git a/src/assets/wise5/authoringTool/components/AbstractComponentAuthoring.ts b/src/assets/wise5/authoringTool/components/AbstractComponentAuthoring.ts index 45baa89d086..b4f86df4f63 100644 --- a/src/assets/wise5/authoringTool/components/AbstractComponentAuthoring.ts +++ b/src/assets/wise5/authoringTool/components/AbstractComponentAuthoring.ts @@ -5,6 +5,7 @@ import { ProjectAssetService } from '../../../../app/services/projectAssetServic import { ConfigService } from '../../services/configService'; import { TeacherProjectService } from '../../services/teacherProjectService'; import { TeacherNodeService } from '../../services/teacherNodeService'; +import { moveObjectDown, moveObjectUp } from '../../common/array/array'; @Directive() export abstract class AbstractComponentAuthoring { @@ -114,12 +115,12 @@ export abstract class AbstractComponentAuthoring { } moveObjectUp(objects: any[], index: number): void { - this.projectService.moveObjectUp(objects, index); + moveObjectUp(objects, index); this.componentChanged(); } moveObjectDown(objects: any[], index: number): void { - this.projectService.moveObjectDown(objects, index); + moveObjectDown(objects, index); this.componentChanged(); } } diff --git a/src/assets/wise5/common/array/array.spec.ts b/src/assets/wise5/common/array/array.spec.ts index ef3494eebcb..3981b0868e2 100644 --- a/src/assets/wise5/common/array/array.spec.ts +++ b/src/assets/wise5/common/array/array.spec.ts @@ -1,4 +1,10 @@ -import { arraysContainSameValues, CSVToArray, reduceByUniqueId } from './array'; +import { + arraysContainSameValues, + CSVToArray, + moveObjectDown, + moveObjectUp, + reduceByUniqueId +} from './array'; import csvArraySample from './arraySample'; import { getIntersectOfArrays } from './array'; @@ -94,3 +100,48 @@ describe('reduceByUniqueId', () => { expect(result[2].id).toEqual(3); }); }); + +let objects; +describe('moveObjectUp()', () => { + beforeEach(() => { + objects = [1, 2, 3]; + }); + moveObjectUpTopElement(); + moveObjectUpNotTopElement(); +}); + +function moveObjectUpTopElement() { + it('should not move an object up when the object is the top element', () => { + moveObjectUp(objects, 0); + expect(objects).toEqual([1, 2, 3]); + }); +} + +function moveObjectUpNotTopElement() { + it('should move an object up when the object is not the top element', () => { + moveObjectUp(objects, 1); + expect(objects).toEqual([2, 1, 3]); + }); +} + +describe('moveObjectDown()', () => { + beforeEach(() => { + objects = [1, 2, 3]; + }); + moveObjectDownNotBottomElement(); + moveObjectDownIsBottomElement(); +}); + +function moveObjectDownNotBottomElement() { + it('should move an object down when the object is not the bottom element', () => { + moveObjectDown(objects, 1); + expect(objects).toEqual([1, 3, 2]); + }); +} + +function moveObjectDownIsBottomElement() { + it('should not move an object down when the object is the bottom element', () => { + moveObjectDown(objects, 2); + expect(objects).toEqual([1, 2, 3]); + }); +} diff --git a/src/assets/wise5/common/array/array.ts b/src/assets/wise5/common/array/array.ts index cd3d324a2ff..b674c6ad1c3 100644 --- a/src/assets/wise5/common/array/array.ts +++ b/src/assets/wise5/common/array/array.ts @@ -95,3 +95,19 @@ export function reduceByUniqueId(objArr: any[]): any[] { } return result; } + +export function moveObjectUp(objects: any[], index: number): void { + if (index !== 0) { + const object = objects[index]; + objects.splice(index, 1); + objects.splice(index - 1, 0, object); + } +} + +export function moveObjectDown(objects: any[], index: number): void { + if (index !== objects.length - 1) { + const object = objects[index]; + objects.splice(index, 1); + objects.splice(index + 1, 0, object); + } +} diff --git a/src/assets/wise5/services/teacherProjectService.ts b/src/assets/wise5/services/teacherProjectService.ts index f62d564c64c..9a348ecc11e 100644 --- a/src/assets/wise5/services/teacherProjectService.ts +++ b/src/assets/wise5/services/teacherProjectService.ts @@ -26,7 +26,8 @@ export class TeacherProjectService extends ProjectService { public errorSavingProject$: Observable = this.errorSavingProjectSource.asObservable(); private nodeTypeSelected: WritableSignal = signal(null); private notAllowedToEditThisProjectSource: Subject = new Subject(); - public notAllowedToEditThisProject$: Observable = this.notAllowedToEditThisProjectSource.asObservable(); + public notAllowedToEditThisProject$: Observable = + this.notAllowedToEditThisProjectSource.asObservable(); private projectSavedSource: Subject = new Subject(); public projectSaved$: Observable = this.projectSavedSource.asObservable(); private savingProjectSource: Subject = new Subject(); @@ -3063,22 +3064,6 @@ export class TeacherProjectService extends ProjectService { this.projectSavedSource.next(); } - moveObjectUp(objects: any[], index: number): void { - if (index !== 0) { - const object = objects[index]; - objects.splice(index, 1); - objects.splice(index - 1, 0, object); - } - } - - moveObjectDown(objects: any[], index: number): void { - if (index !== objects.length - 1) { - const object = objects[index]; - objects.splice(index, 1); - objects.splice(index + 1, 0, object); - } - } - getNodesInOrder(): any[] { return Object.entries(this.idToOrder) .map((entry: any) => { diff --git a/src/messages.xlf b/src/messages.xlf index 59982d2fe1d..7420ebd494c 100644 --- a/src/messages.xlf +++ b/src/messages.xlf @@ -814,7 +814,7 @@ Are you sure you want to delete this default feedback? src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts - 50 + 51 @@ -21558,7 +21558,7 @@ If this problem continues, let your teacher know and move on to the next activit src/assets/wise5/services/teacherProjectService.ts - 100 + 101 @@ -21569,11 +21569,11 @@ If this problem continues, let your teacher know and move on to the next activit src/assets/wise5/services/teacherProjectService.ts - 112 + 113 src/assets/wise5/services/teacherProjectService.ts - 154 + 155 @@ -21584,11 +21584,11 @@ If this problem continues, let your teacher know and move on to the next activit src/assets/wise5/services/teacherProjectService.ts - 113 + 114 src/assets/wise5/services/teacherProjectService.ts - 155 + 156 @@ -21606,7 +21606,7 @@ If this problem continues, let your teacher know and move on to the next activit src/assets/wise5/services/teacherProjectService.ts - 122 + 123 @@ -21617,7 +21617,7 @@ If this problem continues, let your teacher know and move on to the next activit src/assets/wise5/services/teacherProjectService.ts - 123 + 124 @@ -21628,7 +21628,7 @@ If this problem continues, let your teacher know and move on to the next activit src/assets/wise5/services/teacherProjectService.ts - 124 + 125 @@ -21845,145 +21845,145 @@ If this problem continues, let your teacher know and move on to the next activit First Lesson src/assets/wise5/services/teacherProjectService.ts - 60 + 61 First Step src/assets/wise5/services/teacherProjectService.ts - 78 + 79 Notes src/assets/wise5/services/teacherProjectService.ts - 114 + 115 src/assets/wise5/services/teacherProjectService.ts - 156 + 157 Final Report src/assets/wise5/services/teacherProjectService.ts - 131 + 132 Final summary report of what you learned in this unit src/assets/wise5/services/teacherProjectService.ts - 132 + 133 Use this space to write your final report using evidence from your notebook. src/assets/wise5/services/teacherProjectService.ts - 133 + 134 <h3>This is a heading</h3><p>This is a paragraph.</p> src/assets/wise5/services/teacherProjectService.ts - 134 + 135 Teacher Notebook src/assets/wise5/services/teacherProjectService.ts - 142 + 143 teacher notes src/assets/wise5/services/teacherProjectService.ts - 164 + 165 src/assets/wise5/services/teacherProjectService.ts - 165 + 166 Teacher Notes src/assets/wise5/services/teacherProjectService.ts - 166 + 167 src/assets/wise5/services/teacherProjectService.ts - 173 + 174 Notes for the teacher as they're running the WISE unit src/assets/wise5/services/teacherProjectService.ts - 174 + 175 Use this space to take notes for this unit src/assets/wise5/services/teacherProjectService.ts - 175 + 176 <p>Use this space to take notes for this unit</p> src/assets/wise5/services/teacherProjectService.ts - 176 + 177 All steps after this one will not be visitable until src/assets/wise5/services/teacherProjectService.ts - 948 + 949 All steps after this one will not be visible until src/assets/wise5/services/teacherProjectService.ts - 951 + 952 All other steps will not be visitable until src/assets/wise5/services/teacherProjectService.ts - 954 + 955 All other steps will not be visible until src/assets/wise5/services/teacherProjectService.ts - 957 + 958 This step will not be visitable until src/assets/wise5/services/teacherProjectService.ts - 960 + 961 This step will not be visible until src/assets/wise5/services/teacherProjectService.ts - 963 + 964