diff --git a/src/app/teacher/select-runs-controls/select-runs-controls.component.html b/src/app/teacher/select-runs-controls/select-runs-controls.component.html
index 42c5747951..61b6fcaa62 100644
--- a/src/app/teacher/select-runs-controls/select-runs-controls.component.html
+++ b/src/app/teacher/select-runs-controls/select-runs-controls.component.html
@@ -20,8 +20,9 @@
-
+
+
0" class="secondary-text" i18n>{{ numSelectedRuns }} selected
diff --git a/src/app/teacher/teacher-run-list/teacher-run-list.component.spec.ts b/src/app/teacher/teacher-run-list/teacher-run-list.component.spec.ts
index 299f8803df..0fa4900f82 100644
--- a/src/app/teacher/teacher-run-list/teacher-run-list.component.spec.ts
+++ b/src/app/teacher/teacher-run-list/teacher-run-list.component.spec.ts
@@ -196,24 +196,21 @@ function showArchivedChanged(): void {
function runSelectedStatusChanged(): void {
describe('runSelectedStatusChanged()', () => {
describe('one run is selected', () => {
- it('should show 1 run selected and indeterminate for the select all checkbox', async () => {
+ it('should show indeterminate for the select all checkbox', async () => {
await clickRunListeItemCheckboxes([0]);
expect(await runListHarness.isSelectRunsCheckboxIndeterminate()).toBeTrue();
- expect(await runListHarness.getNumSelectedRunListItems()).toEqual(1);
});
});
describe('two runs are selected', () => {
- it('should show 2 runs selected and indeterminate for the select all checkbox', async () => {
+ it('should show indeterminate for the select all checkbox', async () => {
await clickRunListeItemCheckboxes([0, 1]);
expect(await runListHarness.isSelectRunsCheckboxIndeterminate()).toBeTrue();
- expect(await runListHarness.getNumSelectedRunListItems()).toEqual(2);
});
});
describe('all runs are selected', () => {
- it('should show 3 runs selected and checked for the select all checkbox', async () => {
+ it('should show checked for the select all checkbox', async () => {
await clickRunListeItemCheckboxes([0, 1, 2]);
expect(await runListHarness.isSelectRunsCheckboxChecked()).toBeTrue();
- expect(await runListHarness.getNumSelectedRunListItems()).toEqual(3);
});
});
});
@@ -235,7 +232,7 @@ function selectAllRunsCheckboxClicked(): void {
function selectAllRuns() {
describe('select all runs checkbox is not checked and it is clicked', () => {
- it('it should select all runs', async () => {
+ it('should select all runs', async () => {
await expectRunsIsSelected([false, false, false]);
expect(await runListHarness.isSelectRunsCheckboxChecked()).toBeFalse();
await runListHarness.checkSelectRunsCheckbox();
@@ -247,7 +244,7 @@ function selectAllRuns() {
function unselectAllRuns() {
describe('select all runs checkbox is checked and it is clicked', () => {
- it('it should unselect all runs', async () => {
+ it('should unselect all runs', async () => {
await runListHarness.checkSelectRunsCheckbox();
await expectRunsIsSelected([true, true, true]);
expect(await runListHarness.isSelectRunsCheckboxChecked()).toBeTrue();
@@ -260,7 +257,7 @@ function unselectAllRuns() {
function someSelectedUnselectAllRuns() {
describe('select all runs checkbox is indeterminate checked and it is clicked', () => {
- it('it should unselect all runs', async () => {
+ it('should unselect all runs', async () => {
await runListHarness.clickRunListItemCheckbox(0);
await expectRunsIsSelected([true, false, false]);
expect(await runListHarness.isSelectRunsCheckboxIndeterminate()).toBeTrue();
@@ -273,26 +270,58 @@ function someSelectedUnselectAllRuns() {
function selectRunsOptionChosen(): void {
describe('selectRunsOptionChosen()', () => {
- it('when all is chosen, it should select all runs2', async () => {
+ selectAllRunsOptionChosen();
+ selectNoneOptionChosen();
+ selectCompletedOptionChosen();
+ selectRunningOptionChosen();
+ selectScheduledOptionChosen();
+ });
+}
+
+function selectAllRunsOptionChosen(): void {
+ describe('when all is chosen', () => {
+ it('should select all runs', async () => {
await runListHarness.clickSelectRunsMenuButton('All');
await expectRunsIsSelected([true, true, true]);
});
- it('when none is chosen, it should select no runs', async () => {
+ });
+}
+
+function selectNoneOptionChosen(): void {
+ describe('when none is chosen', () => {
+ it('should select no runs', async () => {
await runListHarness.clickSelectRunsMenuButton('None');
await expectRunsIsSelected([false, false, false]);
});
- describe('when a run is completed', () => {
- beforeEach(() => {
- setRun2Completed();
- });
- it('when running is chosen, it should select running runs', async () => {
- await runListHarness.clickSelectRunsMenuButton('Running');
- await expectRunsIsSelected([true, false, true]);
- });
- it('when completed is chosen, it should select completed runs', async () => {
- await runListHarness.clickSelectRunsMenuButton('Completed');
- await expectRunsIsSelected([false, true, false]);
- });
+ });
+}
+
+function selectCompletedOptionChosen(): void {
+ describe('when completed is chosen', () => {
+ it('should select completed runs', async () => {
+ setRun2Completed();
+ await runListHarness.clickSelectRunsMenuButton('Completed');
+ await expectRunsIsSelected([false, true, false]);
+ });
+ });
+}
+
+function selectRunningOptionChosen(): void {
+ describe('when running is chosen', () => {
+ it('should select running runs', async () => {
+ setRun2Completed();
+ await runListHarness.clickSelectRunsMenuButton('Running');
+ await expectRunsIsSelected([true, false, true]);
+ });
+ });
+}
+
+function selectScheduledOptionChosen(): void {
+ describe('when scheduled is chosen', () => {
+ it('it should select scheduled runs', async () => {
+ setRun3Scheduled();
+ await runListHarness.clickSelectRunsMenuButton('Scheduled');
+ await expectRunsIsSelected([true, false, false]);
});
});
}
@@ -308,6 +337,17 @@ function setRun2Completed(): void {
component.ngOnInit();
}
+function setRun3Scheduled(): void {
+ getRunsSpy.and.returnValue(
+ of([
+ new TeacherRunStub(1, run1StartTime, null, run1Title),
+ new TeacherRunStub(2, run2StartTime, null, run2Title),
+ new TeacherRunStub(3, currentTime + 86400000, null, run3Title)
+ ])
+ );
+ component.ngOnInit();
+}
+
function runArchiveStatusChanged(): void {
describe('runArchiveStatusChanged()', () => {
archiveRunNoLongerInActiveView();
@@ -316,33 +356,37 @@ function runArchiveStatusChanged(): void {
}
function archiveRunNoLongerInActiveView() {
- it('when a run is archived, it should no longer be displayed in the active view', async () => {
- expect(await runListHarness.isShowingArchived()).toBeFalse();
- expect(await runListHarness.getNumRunListItems()).toEqual(3);
- await runListHarness.clickRunListItemMenuArchiveButton(1);
- expect(await runListHarness.isShowingArchived()).toBeFalse();
- expect(await runListHarness.getNumRunListItems()).toEqual(2);
- await expectRunTitles([run3Title, run1Title]);
+ describe('when a run is archived', () => {
+ it('it should no longer be displayed in the active view', async () => {
+ expect(await runListHarness.isShowingArchived()).toBeFalse();
+ expect(await runListHarness.getNumRunListItems()).toEqual(3);
+ await runListHarness.clickRunListItemMenuArchiveButton(1);
+ expect(await runListHarness.isShowingArchived()).toBeFalse();
+ expect(await runListHarness.getNumRunListItems()).toEqual(2);
+ await expectRunTitles([run3Title, run1Title]);
+ });
});
}
function unarchiveRunNoLongerInArchivedView() {
- it('when a run is unarchived, it should no longer be displayed in the archived view', async () => {
- getRunsSpy.and.returnValue(
- of([
- new TeacherRunStub(1, run1StartTime, null, run1Title),
- new TeacherRunStub(2, run2StartTime, null, run2Title, ['archived']),
- new TeacherRunStub(3, run3StartTime, null, run3Title)
- ])
- );
- component.ngOnInit();
- await runListHarness.showArchived();
- expect(await runListHarness.isShowingArchived()).toBeTrue();
- expect(await runListHarness.getNumRunListItems()).toEqual(1);
- await expectRunTitles([run2Title]);
- await runListHarness.clickRunListItemMenuUnarchiveButton(0);
- expect(await runListHarness.isShowingArchived()).toBeTrue();
- expect(await runListHarness.getNumRunListItems()).toEqual(0);
+ describe('when a run is unarchived', () => {
+ it('it should no longer be displayed in the archived view', async () => {
+ getRunsSpy.and.returnValue(
+ of([
+ new TeacherRunStub(1, run1StartTime, null, run1Title),
+ new TeacherRunStub(2, run2StartTime, null, run2Title, ['archived']),
+ new TeacherRunStub(3, run3StartTime, null, run3Title)
+ ])
+ );
+ component.ngOnInit();
+ await runListHarness.showArchived();
+ expect(await runListHarness.isShowingArchived()).toBeTrue();
+ expect(await runListHarness.getNumRunListItems()).toEqual(1);
+ await expectRunTitles([run2Title]);
+ await runListHarness.clickRunListItemMenuUnarchiveButton(0);
+ expect(await runListHarness.isShowingArchived()).toBeTrue();
+ expect(await runListHarness.getNumRunListItems()).toEqual(0);
+ });
});
}
@@ -356,7 +400,7 @@ function noRuns(): void {
it('should display a message', async () => {
expect(await runListHarness.isShowingArchived()).toBeFalse();
expect(await runListHarness.getNoRunsMessage()).toContain(
- "Looks like you don't have any active WISE units in your classes."
+ "Hey there! Looks like you don't have any active classroom units."
);
});
});
@@ -365,7 +409,7 @@ function noRuns(): void {
await runListHarness.showArchived();
expect(await runListHarness.isShowingArchived()).toBeTrue();
expect(await runListHarness.getNoRunsMessage()).toContain(
- "Looks like you don't have any archived WISE units."
+ "Looks like you don't have any archived classroom units."
);
});
});
diff --git a/src/app/teacher/teacher-run-list/teacher-run-list.component.ts b/src/app/teacher/teacher-run-list/teacher-run-list.component.ts
index d440c8c942..cee5f2d539 100644
--- a/src/app/teacher/teacher-run-list/teacher-run-list.component.ts
+++ b/src/app/teacher/teacher-run-list/teacher-run-list.component.ts
@@ -220,12 +220,15 @@ export class TeacherRunListComponent implements OnInit {
case 'none':
run.selected = false;
break;
- case 'running':
- run.selected = !run.isCompleted(this.configService.getCurrentServerTime());
- break;
case 'completed':
run.selected = run.isCompleted(this.configService.getCurrentServerTime());
break;
+ case 'running':
+ run.selected = run.isActive(this.configService.getCurrentServerTime());
+ break;
+ case 'scheduled':
+ run.selected = run.isScheduled(this.configService.getCurrentServerTime());
+ break;
}
});
this.runSelectedStatusChanged();