From 5c74896a06874daa764ad3f1efef8b6abb0077c7 Mon Sep 17 00:00:00 2001 From: Jason Gillett Date: Mon, 26 Aug 2024 13:59:43 -0600 Subject: [PATCH] Make assignment list assignTo tray checkpoint aware closes VICE-4298 flag=discussion_checkpoints Data will not be displayed correctly. that is handled in VICE-4299 Test Plan 1. Open the assignto tray from the assignment index page 2. Verify checkpointed discussion display correct inputs Change-Id: I97a4eed9946fb4d415e027776615c350c117908b Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/356004 Tested-by: Service Cloud Jenkins Reviewed-by: Caleb Guanzon QA-Review: Chawn Neal Product-Review: Jason Gillett --- spec/selenium/assignments/assignments_spec.rb | 39 +++++++++++++------ .../backbone/views/AssignmentListItemView.jsx | 4 ++ .../jst/AssignmentListItem.handlebars | 2 + 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/spec/selenium/assignments/assignments_spec.rb b/spec/selenium/assignments/assignments_spec.rb index 73ebd0f7092..2bd7d36646a 100644 --- a/spec/selenium/assignments/assignments_spec.rb +++ b/spec/selenium/assignments/assignments_spec.rb @@ -1463,32 +1463,49 @@ describe "assignments" do context "with discussion_checkpoints" do before :once do - Account.site_admin.enable_feature! :discussion_checkpoints - end + course_with_teacher({ user: @teacher, active_course: true, active_enrollment: true }) - it "does not show points possible and due date fields for checkpointed assignments" do - course_with_teacher_logged_in(active_all: true, course: @course) - checkpointed_discussion = DiscussionTopic.create_graded_topic!(course: @course, title: "checkpointed discussion") + Account.site_admin.enable_feature! :discussion_checkpoints + @checkpointed_discussion = DiscussionTopic.create_graded_topic!(course: @course, title: "checkpointed discussion") Checkpoints::DiscussionCheckpointCreatorService.call( - discussion_topic: checkpointed_discussion, + discussion_topic: @checkpointed_discussion, checkpoint_label: CheckpointLabels::REPLY_TO_TOPIC, dates: [{ type: "everyone", due_at: 2.days.from_now }], points_possible: 6 ) Checkpoints::DiscussionCheckpointCreatorService.call( - discussion_topic: checkpointed_discussion, + discussion_topic: @checkpointed_discussion, checkpoint_label: CheckpointLabels::REPLY_TO_ENTRY, dates: [{ type: "everyone", due_at: 3.days.from_now }], points_possible: 7, replies_required: 2 ) + end + + it "does not show points possible and due date fields for checkpointed assignments" do + user_session(@teacher) get "/courses/#{@course.id}/assignments" - f("div#assignment_#{checkpointed_discussion.assignment.id} button.al-trigger").click + f("div#assignment_#{@checkpointed_discussion.assignment.id} button.al-trigger").click f("li a.edit_assignment").click - expect(f("input#assign_#{checkpointed_discussion.assignment.id}_assignment_name")).to be_present - expect(f("body")).not_to contain_jqcss "label[for='#{checkpointed_discussion.assignment.id}_assignment_due_at']" - expect(f("body")).not_to contain_jqcss "label[for='#{checkpointed_discussion.assignment.id}_assignment_points']" + expect(f("input#assign_#{@checkpointed_discussion.assignment.id}_assignment_name")).to be_present + expect(f("body")).not_to contain_jqcss "label[for='#{@checkpointed_discussion.assignment.id}_assignment_due_at']" + expect(f("body")).not_to contain_jqcss "label[for='#{@checkpointed_discussion.assignment.id}_assignment_points']" + end + + it "displays the correct date input fields in the assign to tray" do + user_session(@teacher) + get "/courses/#{@course.id}/assignments" + + fj("#assign_#{@checkpointed_discussion.assignment.id}_manage_link").click + wait_for_ajaximations + + f("#assignment_#{@checkpointed_discussion.assignment.id} .assign-to-link").click + wait_for_assign_to_tray_spinner + + expect(module_item_assign_to_card.first).not_to contain_css(due_date_input_selector) + expect(module_item_assign_to_card.first).to contain_css(reply_to_topic_due_date_input_selector) + expect(module_item_assign_to_card.first).to contain_css(required_replies_due_date_input_selector) end end end diff --git a/ui/features/assignment_index/backbone/views/AssignmentListItemView.jsx b/ui/features/assignment_index/backbone/views/AssignmentListItemView.jsx index b0f3cb825ea..0889a7d62f9 100644 --- a/ui/features/assignment_index/backbone/views/AssignmentListItemView.jsx +++ b/ui/features/assignment_index/backbone/views/AssignmentListItemView.jsx @@ -480,6 +480,7 @@ export default AssignmentListItemView = (function () { tool.base_url + `&discussion_topics[]=${__guard__(this.model.get('discussion_topic'), x => x.id)}`) }) + data.item_assignment_type = "discussion_topic" } else { const isNewQuizzes = this.model.isQuizLTIAssignment() const isShareToCommons = (tool) => tool.canvas_icon_class === 'icon-commons' @@ -614,6 +615,7 @@ export default AssignmentListItemView = (function () { itemType="assignment" locale={ENV.LOCALE || 'en'} timezone={ENV.TIMEZONE || 'UTC'} + isCheckpointed={itemProps.isCheckpoint} {...itemProps} />, document.getElementById('assign-to-mount-point') @@ -629,12 +631,14 @@ export default AssignmentListItemView = (function () { const itemContentId = e.target.getAttribute('data-assignment-id') const pointsPossible = this.model.get('points_possible') const iconType = e.target.getAttribute('data-assignment-type') + const isCheckpoint = e.target.getAttribute('data-assignment-has-checkpoint') this.renderItemAssignToTray(true, returnFocusTo, { courseId, itemName, itemContentId, pointsPossible, iconType, + isCheckpoint, }) } diff --git a/ui/features/assignment_index/jst/AssignmentListItem.handlebars b/ui/features/assignment_index/jst/AssignmentListItem.handlebars index 31ab9fe0bb3..d53378a99a8 100644 --- a/ui/features/assignment_index/jst/AssignmentListItem.handlebars +++ b/ui/features/assignment_index/jst/AssignmentListItem.handlebars @@ -252,6 +252,7 @@ data-assignment-context-id="{{courseId}}" data-assignment-id="{{id}}" data-assignment-type="{{item_assignment_type}}" + data-assignment-has-checkpoint="{{isCheckpoint}}" title="<%= {{#t}}Assign this Assignment{{/t}} %>" aria-label="{{#t}}Assign To...{{/t}}" data-focus-returns-to="assign_{{id}}_manage_link" @@ -426,6 +427,7 @@ data-assignment-context-id="{{courseId}}" data-assignment-id="{{id}}" data-assignment-type="{{item_assignment_type}}" + data-assignment-has-checkpoint="{{isCheckpoint}}" title="<%= {{#t}}Assign this Assignment{{/t}} %>" aria-label="{{#t}}Assign To...{{/t}}" data-focus-returns-to="assign_{{id}}_manage_link"