From bc0d6abe758ba02571b8fd58b54202d56427f9b4 Mon Sep 17 00:00:00 2001 From: Maddie Kasula Date: Thu, 4 Apr 2019 15:21:23 -0700 Subject: [PATCH 1/5] Default stage extras to 'yes' for express courses --- .../teacherDashboard/teacherSectionsRedux.js | 7 +++++-- .../teacherDashboard/teacherSectionsReduxTest.js | 11 +++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/apps/src/templates/teacherDashboard/teacherSectionsRedux.js b/apps/src/templates/teacherDashboard/teacherSectionsRedux.js index 891e496136026..3d1757ab5f23d 100644 --- a/apps/src/templates/teacherDashboard/teacherSectionsRedux.js +++ b/apps/src/templates/teacherDashboard/teacherSectionsRedux.js @@ -668,12 +668,15 @@ export default function teacherSections(state = initialState, action) { } } - // Selecting Course 1-4 or A-F should auto-enable Stage Extras. + // Selecting the following courses should auto-enable Stage Extras: + // Course 1-4, A-F, Express, and Pre-reader Express if (action.props.scriptId) { const script = state.validAssignments[assignmentId(null, action.props.scriptId)]; stageExtraSettings.stageExtras = !!( - script && /course[1-4a-f]/.test(script.script_name) + script && + (/course[1-4a-f]/.test(script.script_name) || + /express/.test(script.script_name)) ); } diff --git a/apps/test/unit/templates/teacherDashboard/teacherSectionsReduxTest.js b/apps/test/unit/templates/teacherDashboard/teacherSectionsReduxTest.js index 1aed39f8ca112..8fe276bab447e 100644 --- a/apps/test/unit/templates/teacherDashboard/teacherSectionsReduxTest.js +++ b/apps/test/unit/templates/teacherDashboard/teacherSectionsReduxTest.js @@ -210,6 +210,14 @@ const validScripts = [ assignment_family_name: 'coursea', version_year: '2017', is_stable: true + }, + { + id: 37, + name: 'Express Course', + script_name: 'express-2018', + category: 'other', + position: null, + category_priority: 3 } ]; @@ -637,6 +645,9 @@ describe('teacherSectionsRedux', () => { state = reducer(state, editSectionProperties({scriptId: 36})); expect(state.sectionBeingEdited.stageExtras).to.equal(true); + + state = reducer(state, editSectionProperties({scriptId: 37})); + expect(state.sectionBeingEdited.stageExtras).to.equal(true); }); }); From 8f90e7861bd51c14273e4b42e8723fe319033c5f Mon Sep 17 00:00:00 2001 From: Maddie Kasula Date: Fri, 5 Apr 2019 15:23:16 -0700 Subject: [PATCH 2/5] Return stage_extras_available for scripts from assignable_info --- dashboard/app/models/script.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/dashboard/app/models/script.rb b/dashboard/app/models/script.rb index 0f08901cc98be..6b08379ee3a77 100644 --- a/dashboard/app/models/script.rb +++ b/dashboard/app/models/script.rb @@ -1442,6 +1442,7 @@ def assignable_info info[:category] = I18n.t("data.script.category.#{info[:category]}_category_name", default: info[:category]) info[:supported_locales] = supported_locale_names + info[:stage_extras_available] = stage_extras_available info end From e6b90ca9d73e9031c4f4835be41e11b5ebbe211e Mon Sep 17 00:00:00 2001 From: Maddie Kasula Date: Fri, 5 Apr 2019 15:24:20 -0700 Subject: [PATCH 3/5] Use script.stage_extras_available from server in EDIT_SECTION_PROPERTIES action --- .../teacherDashboard/teacherSectionsRedux.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/apps/src/templates/teacherDashboard/teacherSectionsRedux.js b/apps/src/templates/teacherDashboard/teacherSectionsRedux.js index 3d1757ab5f23d..ab97f2ddb9ede 100644 --- a/apps/src/templates/teacherDashboard/teacherSectionsRedux.js +++ b/apps/src/templates/teacherDashboard/teacherSectionsRedux.js @@ -414,6 +414,7 @@ function newSectionData(id, courseId, scriptId, loginType) { } const defaultVersionYear = '2017'; +const defaultStageExtras = false; // Fields to copy from the assignmentInfo when creating an assignmentFamily. export const assignmentFamilyFields = [ @@ -653,8 +654,6 @@ export default function teacherSections(state = initialState, action) { } if (action.type === EDIT_SECTION_PROPERTIES) { - const stageExtraSettings = {}; - if (!state.sectionBeingEdited) { throw new Error( 'Cannot edit section properties; no section is' + @@ -668,16 +667,14 @@ export default function teacherSections(state = initialState, action) { } } - // Selecting the following courses should auto-enable Stage Extras: - // Course 1-4, A-F, Express, and Pre-reader Express + const stageExtraSettings = {}; if (action.props.scriptId) { const script = state.validAssignments[assignmentId(null, action.props.scriptId)]; - stageExtraSettings.stageExtras = !!( - script && - (/course[1-4a-f]/.test(script.script_name) || - /express/.test(script.script_name)) - ); + if (script) { + stageExtraSettings.stageExtras = + script.stage_extras_available || defaultStageExtras; + } } return { From cdc786aac6c2634988da6e5b6a684aeb76e902de Mon Sep 17 00:00:00 2001 From: Maddie Kasula Date: Fri, 5 Apr 2019 15:31:36 -0700 Subject: [PATCH 4/5] Unit test script.assignable_info with stage_extras_available --- dashboard/test/models/script_test.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dashboard/test/models/script_test.rb b/dashboard/test/models/script_test.rb index 47fe89cf88fa2..98f640d5b0197 100644 --- a/dashboard/test/models/script_test.rb +++ b/dashboard/test/models/script_test.rb @@ -1360,12 +1360,13 @@ def populate_cache_and_disconnect_db end test "assignable_info: returns assignable info for a script" do - script = create(:script, name: 'fake-script', hidden: true) + script = create(:script, name: 'fake-script', hidden: true, stage_extras_available: true) assignable_info = script.assignable_info assert_equal("fake-script *", assignable_info[:name]) assert_equal("fake-script", assignable_info[:script_name]) assert_equal("other", assignable_info[:category]) + assert(assignable_info[:stage_extras_available]) end test "assignable_info: correctly translates script info" do From 0b3674a5fd66f7f936a2a7cf9dafa614fb715fba Mon Sep 17 00:00:00 2001 From: Maddie Kasula Date: Mon, 8 Apr 2019 11:05:39 -0700 Subject: [PATCH 5/5] Update teacherSectionsRedux tests to include stage_extras_available for scripts --- .../teacherDashboard/teacherSectionsReduxTest.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/test/unit/templates/teacherDashboard/teacherSectionsReduxTest.js b/apps/test/unit/templates/teacherDashboard/teacherSectionsReduxTest.js index 8fe276bab447e..146b8484fe536 100644 --- a/apps/test/unit/templates/teacherDashboard/teacherSectionsReduxTest.js +++ b/apps/test/unit/templates/teacherDashboard/teacherSectionsReduxTest.js @@ -170,7 +170,8 @@ const validScripts = [ script_name: 'course3', category: 'other', position: null, - category_priority: 3 + category_priority: 3, + stage_extras_available: true }, { id: 112, @@ -217,7 +218,8 @@ const validScripts = [ script_name: 'express-2018', category: 'other', position: null, - category_priority: 3 + category_priority: 3, + stage_extras_available: true } ]; @@ -635,7 +637,7 @@ describe('teacherSectionsRedux', () => { ).to.throw(); }); - it('switching to non-CSF course assignment turns off stage extras', () => { + it('switching script assignment updates stage extras value from script', () => { let state = reducer( editingNewSectionState, setValidAssignments(validCourses, validScripts)