Commit Graph

23070 Commits

Author SHA1 Message Date
Caleb Guanzon 63c8517942 respect granular course content permissions in announcements ui
flag=granular_permissions_manage_course_content
fixes VICE-3285

Since the permission explainer test specifically specifies
that announcement locking and deleting should really
affect announcements locking and deleting,

we should make it so

this fix will also work with the manage course content
combined permission

test plan:
- turn on the
granular_permissions_manage_course_content feature flag

verify the following in the course announcements index:
- the delete row item menu option only shows for roles with
the manage_course_content_delete permission
- the lock/allow row item menu option only shows for roles with
the manage_course_content_edit permission
- if user has neither of these 2 permissions, the
announcement rows do not show a checkbox, and does
not show a manage menu

Change-Id: Ia4b2eee6461b6a85ae71a8b8e5af15586b7aad23
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310593
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Jason Gillett <jason.gillett@instructure.com>
2023-02-08 17:07:25 +00:00
Aaron Ogata 0aca0be810 allow additional columns to be ignored through Consul
refs AE-124

When running pre-deploy migrations that add a new column, if an application server loads the schema on a shard where the migration has already run, and tries to run queries on a shard where the migration has not already run, it can lead to errors. Fix this by allowing ignored_columns to append to its value dynamically through Consul.

Change-Id: I3b13e0fd2ac066e1439d3d314d71f2ebd8938e0c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310561
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
2023-02-08 17:05:57 +00:00
Chris Soto fe4f7009d4 setting nq grade to nil not showing submissions
when a new quiz has multiple submissions and a teacher sets the grade
of a submission to nil, the teacher will no longer be able to see that
submission version in speedgrader or individual gradebook. this change
will now show nil submissions only when the workflow_state is "graded"

fixes EVAL-2136
flag=none

test plan:
- as teacher, create an auto graded new quiz and allow multiple
  submissions
- as student, take the quiz multiple times
- as teacher, go to gradebook and mark the grade for the new quiz
  to empty
- as teacher, go to speedgrader and verify that you can still see
  all the submissions

Change-Id: Ib9c4a8668c7c24d63357afba4d7b3b2942e21c82
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309194
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Cameron Ray <cameron.ray@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
QA-Review: Cameron Ray <cameron.ray@instructure.com>
Product-Review: Jody Sailor
2023-02-08 17:00:17 +00:00
Chawn Neal de91b4e1bf Set ConversationMessageParticipant root_account_ids on create
fixes VICE-3181
flag = none

description:
the cmp.root_account_ids are tied to the convo.root_account_ids.
if the convo.root_account_ids are updated
then the cmp.convo.root_account_ids will be set.

However, they are not set on create, this is what this ticket addresses.

Test Plan:
1. the specs are straightforward.
2. Create a message with Conversation.
3. Use rails console and see cmp.root_account_ids are:
 a. match convo.root_account_ids. (most important)
 b. not nil

Change-Id: I481849db52c991cf260bf519310ba2111c7a8058
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310604
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
2023-02-08 15:59:02 +00:00
Omar Gerardo Soto-Fortuño bda150e266 Populate missing root_account_ids for Communication Channels
closes VICE-3182
flag=none

test plan:
  - Specs pass

qa risk: low

Change-Id: I9fea3003c97a6e62f4f3a917491cfd77aa4fdb8c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310495
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Migration-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Jason Gillett <jason.gillett@instructure.com>
2023-02-07 21:09:17 +00:00
Chris Soto 86bcd543c9 update content participation on publish/unpublish
when changing an assignment between published and unpublished, the
content participation counts should also be updated. this change also
verifies that deleting/restoring an assignment then publishing the
assignment should also update badge count.

fixes EVAL-2850
flag=visibility_feedback_student_grades_page
flag=assignments_2_student

test plan:
- as teacher, create an assignment and publish
- as teacher, grade assignment for a student
- as student, reload the home tab and check that the badge count on the
  grades tab is set to 1
- as teacher, unpublish the assignment
- as student, reload the home tab and check that the badge count on the
  grades tab is now set to 0 (not there)
- as teacher, publish assignment again
- as student, view badge count on grades tab. it should be set to 1
- as teacher, delete assignment
- as student, view the badge count on grades tab. it should be set to 0
- as teacher, restore assignment from
  canvas.docker/courses/{id}/undelete
- as teacher, publish assignment again
- as student, view the badge count on grades tab. it should be 1 again

Change-Id: I26fc1ca24139e1c64b4ae6a46bb74bfffe84523e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309377
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
Reviewed-by: Cameron Ray <cameron.ray@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
2023-02-06 22:31:47 +00:00
Caleb Guanzon a97fd5ecbe sort child_topics by context_name
flag=react_discussions_post
fixes VICE-3324

test plan:
- create a group discussion assigned to more than 10 groups
(this way you have 1, 2, ...10. 11)

- visit the discussion
- click on the group switcher icon button on the top left
- verify groups list is sorted as 1, 10, 11, ... 2, and so on

Change-Id: I107ed738483c5351e4cae00bb878089ee71f6986
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310361
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
2023-02-06 21:32:55 +00:00
Cameron Ray e01240ddaa include comment attempt in submission API
flag=none
Refs EVAL-2874

test plan:
- As a student attempt an assignment multiple times
- As a teacher add different comments to each of those attempts
- Make an API request
  - http://canvas.docker//api/v1/courses/:course_id/assignments/:assignment_id/submissions/:submission_id?include[]=submission_comments
- Note that the comments array should include the correct attempt number

Change-Id: Ib91c37191fd1c63e121102e509ff5889961a4348
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310127
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
Reviewed-by: Christopher Soto <christopher.soto@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Cameron Ray <cameron.ray@instructure.com>
2023-02-06 18:09:06 +00:00
Jeremy Stanley 7959d416a3 don't fail integrity_check when md5 is missing (local/s3)
test plan:
 - with a local or S3 (not InstFS) file, opened in Rails console
   with .open(integrity_check: true)
   - should work if the md5 is present and correct
   - should raise a CorruptedDownload if the md5 is incorrect
   - should work if the md5 is missing

flag=none
closes gh-2147
closes FOO-3360

Change-Id: Ibe1c65af8f618343cdc399217c30d15bb1f53ca9
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310294
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2023-02-04 16:57:08 +00:00
Jeremy Stanley d96fb4e4f1 move LTI IDs when merging into an unused User record
if the destination user doesn't have any enrollments or
account memberships or an LTI context id (as is the case
in consortium home_account moves), move the lti_context_id,
lti_id, and uuid to the new user record. this way new
enrollments and global nav launches will continue to use
the previous LTI IDs, and the calendar feed will continue
to work

test plan:
 - have an auto-merge consortium set up
 - have a user enrolled in courses in two separate shards
   (course A in Account A and course B in Account B)
   with an LTI tool that can be launched in course context
   or global nav
 - use a SIS import with home_account=true to move the user
   to a different shard in the consortium
 - ensure when the tool is launched from any of course A,
   course B, Account A, or Account B, the student's
   original lti_context_id is supplied to the LTI tool
 - probably repeat the above with an LTI 1.3 tool,
   which uses a separate ID column
 - splitting the merged users should move the ids back
   where they came from

(this reverts 5695313027)

[pin-commit-multiple_root_accounts=0310a2265dde906935c99642d26e72bada1ea573]

flag=none
refs FOO-3153
closes FOO-3355

Change-Id: I7d1e61faf2498aff4fc5820609d54050ee1a31de
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310292
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2023-02-03 22:24:50 +00:00
Tucker McKnight 2f1c1c3322 spec: Call deepLinkingResponsHandler with no title
The `title` field is optional, so we should have
at least one test that does not have a `title` on the
content_item object.

We may need to do more of this in the future,
so I added a function that spits out a default content_item,
which you can add optionally add fields to.

test plan:
- specs pass

fixes INTEROP-7937

Change-Id: I4d5cd6447783d987b7126416ee514e49a00e1209
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310069
Reviewed-by: Steve Mcgee <steve.mcgee@instructure.com>
QA-Review: Steve Mcgee <steve.mcgee@instructure.com>
Product-Review: Tucker Mcknight <tmcknight@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2023-02-03 21:34:20 +00:00
Mysti Lilla 1547e8dbe0 Change spec file to Jest
refs MAT-1152
flag=none

Test plan
- Specs pass (and we're sure this file ran)

Change-Id: I69c26c8c2a7a277ee865b0491bb13ff0f71591db
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310185
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
QA-Review: Jake Oeding <jake.oeding@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
2023-02-03 18:51:48 +00:00
Caleb Guanzon b29cea30cb point entry specific notifications to entry
flag=react_discussions_post
fixes VICE-3308

notification message url now has both
- #entry for old discussions
and
- ?entry_id for new discussions

also fixed all html emails
to make use of footer link
instead of displaying the
raw url, we should only
display the raw url on the plain
text version of the email

test plan:
- mention someone in a reply
- as an admin, view /users/id/messages of
the person mentioned
- click on the footer link
"Click here to join the conversation"
- verify that on the discussion page,
you are taken to the highlighted entry in focus

- report a reply as offensive
- as an admin, view a teacher's /messages page
- click on the footer link of the reported
reply notification message
- verify that on the discussion page,
the reported entry is highlighted and
visible

- repeat for new announcement replies and new discussion replies
(you don't really have to. i strengthened the notification tests.)

Change-Id: I30597d602186ac8c14422773695797b5683e1373
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310174
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Jason Gillett <jason.gillett@instructure.com>
2023-02-03 01:50:53 +00:00
Jonathan Guardado bd7bdc6294 update student pace in table after publishing
Use the right context id for filtering student enrollments

closes LS-3691
flag= course_paces_redesign

test plan
- Go to the course pacing page
- Select the Student tab
- Publish a student pace
- Expect the pace contexts table to reflect the updates in the
student pace

Change-Id: Id1475e1cf9347a8ae877b167e7823c88f36e665a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310272
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Robin Kuss <rkuss@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Jonathan Guardado <jonathan.guardado@instructure.com>
2023-02-02 22:21:38 +00:00
Jackson Howe a6f35da3a7 Revert "Respect prevent_course_availability_editing_by_teachers in API"
This reverts commit 069987a056.

Reason for revert: this prevents teachers from editing any course settings in an account where prevent_course_availability_editing_by_teachers is enabled.

Change-Id: Idd042af11f175981a3e5c3d51c0e840e71abc6ed
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/308988
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: Eric Saupe <eric.saupe@instructure.com>
Product-Review: Jackson Howe <jackson.howe@instructure.com>
2023-02-02 17:57:04 +00:00
Jeremy Stanley 5695313027 Revert "move LTI IDs when merging into an unused User record"
This reverts commit 26007bda68.

Reason for revert: deadlocks detected during SIS imports

Change-Id: Ic8f6fa693496654957c5cb6993393855321212d5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/308986
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2023-02-02 17:39:23 +00:00
Derek Williams f61c29b8da bring proxy submission into individual gradebook
closes EVAL-2822
flag=proxy_file_uploads

test plan:
- turn on proxy_file_uploads siteAdmin FF
- grant Teachers permission with proxy_assignment_submission
- create an assigment on a course with file_upload submissions
- as a teacher, navigate individual gradebook
- select the student and the newly created assignment
- notice 'Submit for Student' button
- upload a file and see that it saves to the student's folder
- click 'submit' to save the submission
- after success, ensure the text above the grade input now reads
"Submitted by <proxy> on <submitted_at datetime>"

Change-Id: I71422add6328ecaf8d15567244547f66d6e67a65
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309148
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
2023-02-02 14:25:50 +00:00
Martin Yosifov 13ab51c4f5 Update AS graphql endpoint to return workflow state of artifact
closes OUT-5374
flag=outcome_alignment_summary

Test plan:
- Enable Improved Outcomes Management FF
- Enable Outcome Alignment Summary FF
- Go to Course > Outcomes and copy course id from URL
- Create an outcome and a rubric and align them
- Create published assignment and align it with the rubric
- Create unpublished classic quiz and align it with the rubric
- Open Devtools -> Network, reload the outcomes page and
copy the outcome id from the graphql respose
- Open in browser canvas.docker/graphiql
- Execute query below replacing the outcome id and
the contextId with previously retrieved values
query MyQuery {
  learningOutcome(id: "1") {
    alignments(contextId: "2", contextType: "Course") {
      title
      assignmentContentType
      assignmentWorkflowState
    }
  }
}
- Verify that the outcome alignment to the assignment
returns assignmentWorkflowState "published"
- Verify that the outcome alignment to the classic quiz
returns assignmentWorkflowState "unpublished"
- Verify that the outcome alignment to the rubric
returns assignmentWorkflowState null

Change-Id: I7a3368c0ad6a722431b2e91e4a54286f847a9ebc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309788
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Dave Wenzlick <david.wenzlick@instructure.com>
QA-Review: Dave Wenzlick <david.wenzlick@instructure.com>
Product-Review: Kyle Rosenbaum <krosenbaum@instructure.com>
2023-02-02 03:29:32 +00:00
Aaron Shafovaloff 3c73dac5d3 Move Gradebook search component insertion points
Also improves TypeScript coverage of API responses

Test plan:
  - In the Gradebook, ensure that the search filters
    for both students and assignments are present
    - Verify that one can search for students and
      assignments by name/title
  - Verify this for a course with a large number of
    students and assignments
  - With enhanced Gradebook filters disabled
    - Enable a filter: Click "View", "Filters", then select
      a filter
    - Verify that the filter UI is visible in the Gradebook

flag=none

Refs EVAL-2612
Refs EVAL-2853

Change-Id: I698477062916fec51348b82935e431b8c321ed28
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309385
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Cameron Ray <cameron.ray@instructure.com>
Product-Review: Cameron Ray <cameron.ray@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
2023-02-01 22:11:33 +00:00
Chris Soto 35fc950356 peer reviews a2 comment visibility
peer reviews for a2 is showing comments by other peer reviewers.
this fix will only show comments by the current_user

fixes EVAL-2832
flag=assignments_2_student
flag=visibility_feedback_student_grades_page

test plan:
- create a peer review assignment
- have 3 students in course
- assign 2 students to peer review the same student
- act as all 3 students and submit for them
- as one of the reviewers, leave a comment on the peer review
- as the other reviewer, navigate to the peer review page. you should
  not see any comments besides the ones this user posts
- as this reviewer leave a comment and refresh. verify you only see your
  own comment

Change-Id: I0dcfd99c71c9efdba0610cb5ecf4b76fae665bcc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309605
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
2023-02-01 19:46:37 +00:00
Jacob Burroughs 48d17872bf Set root_account_ids for student view students
fixes FOO-3156

Change-Id: Ibd93e097544e7b5da082cdcf4429e97c83a24bed
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/304309
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Isaac Moore <isaac.moore@instructure.com>
QA-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Jacob Burroughs <jburroughs@instructure.com>
Migration-Review: Isaac Moore <isaac.moore@instructure.com>
2023-02-01 18:30:16 +00:00
Jason Gillett 0c3c07ff7b Fix replying from isolatedView parent container
flag=react_discussions_post
fixes VICE-3306

Test Plan
1. Open a isolated view discussion
2. Open a thread
3. Click reply from the isolatedViewParent
4. verify that the reply is correctly created
4a. the entry should be within the thread.

Change-Id: Ie4686f10ca2badf387274c6c12d545be2883bf2f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310064
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Chawn Neal <chawn.neal@instructure.com>
Reviewed-by: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Caleb Guanzon <cguanzon@instructure.com>
2023-02-01 17:36:31 +00:00
Chawn Neal 30b4fe299d Safe guard bad params for calendar conference
fixes VICE-3309
flag=none

Notes:
The calendar ui seems a bit weird. When you click show
options on calendar event modal, if you set from and to,
then click 'show options', it does some type of submit
conference already.

This solution with safe guard processing bad params.
This does not create an error page for the user.

Test PLan:
1. Should stop the sentry errors in the ticket.
2. go to calendar.
- click on a block to create an event.
- set from and to.
- click more options.
3. Notice server log no longer gets merged error.
4. No error page for user.

Change-Id: Ie4834bbf1c226433b76b80a977a03d1a6209e1f4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309786
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Reviewed-by: Jason Gillett <jason.gillett@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Jason Gillett <jason.gillett@instructure.com>
2023-02-01 17:18:10 +00:00
Sarah Gerard fc91f3fdc4 fix underlined space for external embeded links
fixes MAT-1167
flag=none

test plan:
-create any new content using RCE
-add text divided by spaces, ex. test test test
-highlight a word but not the space after it and embed an external link
-save the content
-underline should only be under the highlighted word
-should be no underline after the embedded external link icon

Change-Id: I976e4c626b3b3700778afa85889f66c65ba3f451
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309929
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jake Oeding <jake.oeding@instructure.com>
QA-Review: Jake Oeding <jake.oeding@instructure.com>
Product-Review: Sarah Gerard <sarah.gerard@instructure.com>
2023-01-31 21:32:19 +00:00
Eric Saupe d3808cf332 Add course title to screenreader tooltip
fixes LS-3737
flag=none

test plan:
- With enrollments, go to the All Courses page /courses
- Hover over a star to set as favorite
- Verify the tooltip shown includes the course name
- Using the screenreader on the star
- Verify the screenreader includes the course name
- Make the course as a favorite
- Repeat the steps above and verify the unfavorite tooltip and
screenreader text includes the course name
- Verify inactive course stars also include the course name in the
tooltip and screenreader but display a message about the course being
inactive

Change-Id: I5a7539519d811ac9f033c816bca553f239d83e5d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309963
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jonathan Guardado <jonathan.guardado@instructure.com>
QA-Review: Jonathan Guardado <jonathan.guardado@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
2023-01-31 19:41:07 +00:00
Weston Dransfield 76dfe77482 Consider the test domain when generating asset_map_url
Closes QUIZ-10736
flag=none

Test Plan:
- Tail the canvas-live-events kinesis stream locally
- Do a course copy
- Validate the `content_migration_completed` event has a
  `resource_map_url` using `canvas.docker` as the domain
- Validate the `source_host` in the attachment matches
  this domain as well
- Simulate Canvas beta ENV locally (pair with weston for details)
- Do a course copy
-  Validate the `content_migration_completed` event has a
   `resource_map_url` that uses the configured beta domain
   as the domain in the file url
- Validate the `source_host` in the attachment matches this
  domain as well

Change-Id: Ic86b80f0e44d91c75b4fe2b661bad695aa3ab4a4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/310021
Reviewed-by: Alex Slaughter <aslaughter@instructure.com>
QA-Review: Alex Slaughter <aslaughter@instructure.com>
Product-Review: Alex Slaughter <aslaughter@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2023-01-31 18:24:17 +00:00
Omar Gerardo Soto-Fortuño 1ff39af746 Add conference invitees in a delayed job
closes VICE-3283
flag=none

test plan:
  - Specs pass
  - Go to a course with hundreds of enrollments
  - Go to BigBlueButton
  - Add a Conference
  - Should take little time since adding users is async now.

qa risk: low

Change-Id: I3ab266ecffa8839c5ea287f804d843d00d8f8409
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309630
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Drake Harper <drake.harper@instructure.com>
Product-Review: Drake Harper <drake.harper@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
2023-01-31 16:58:42 +00:00
jake.oeding 656b315402 stop reviving deleted media files
don't bring them back from death when a user
views an embedded version of them

fixes MAT-1193
flag=none

test plan:
-upload a media file (audio or video)
-embed said file in a page/assignment/other rce location
 and save
-go to your 'Uploaded Media' folder and delete said file
-go back the the location where you embedded said file,
 view it, and make sure you wait until you can play the
 audio/video before moving on
>go back to files and ensure that the file wasn't recreated,
 i.e. it's not present in your 'Uploaded Media' folder
>go to an RCE, open the media embed tray, and confirm
 said file also does not appear in the files available to
 embed

Change-Id: Icc061234d2be8b853ed89107146cf161cdab3d28
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309791
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Migration-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Allison Howell <allison.howell@instructure.com>
2023-01-31 15:00:31 +00:00
Jeremy Stanley c4b4b94573 fix Attachment marshalling bug
the `md5` attribute should store a hex digest and not the Digest
object iself. the latter works after type cast but prevents the
Attachment from being marshaled before reloading, resulting in
"no _dump_data is defined for class Digest::SHA512"

test plan: specs
fixes FOO-3306

Change-Id: I34d540bb6f110cf43d3ab68436277caf0d024db4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309972
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2023-01-31 00:02:34 +00:00
Evan Battaglia 2ba710e2e0 Add session token to LTI 1.1 sessionless launches
This should help with NQ issues where the tool launches in mobile but it
doesn't have access to Canvas resources such as images.
generate_session_token requires the endpoint be hit with an API token,
but I think this should be the case for the mobile requests (I don't
know if anyone uses this endpoint without an API token)

As mentioned in the comment, we _might_ be able to simplify LTI 1.1
sessionless launches to just make a session token and then do a normal
launch, like we do for LTI 1.3 tools. I left some additional info in
a JIRA comment.

closes INTEROP-7912
flag=none

Test plan:
- Create a sessionless launch for an LTI 1.1 tool by hitting the API at
  /api/v1/accounts/self/external_tools/sessionless_launch?id=123
where 123 is the id of your LTI 1.1 tool.
- In a new incognito window, visit the URL returned
- The tool should launch. Then in the same incognito visit Canvas -- you
  should still be logged in.

Change-Id: I7fff6e6e558a93af6659007475e16017951fa50d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309488
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Alexis Nast <alexis.nast@instructure.com>
Reviewed-by: Tucker Mcknight <tmcknight@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
2023-01-30 17:58:59 +00:00
Caleb Guanzon 2b3482b746 hook up maxGroupUsersMet and setIndividualMessages
[fsc-timeout=30]

flag=react_inbox
fixes VICE-3318

note:
- moved a ui test to selenium
- to make sure backend processes
correctly

test plan:
- have a course with over 100 students
- and 2 non-students
(i.e. Big Course in the X-Men SIS)

- as a teacher or admin of that course,
compose a message, select All Students in [Course]

- verify that individual checkbox is checked and disabled

- add 2 non-student recipients (maybe a ta or other teacher)
- verify that individual checkbox remains checked and disabled

- remove All Students in [Course] selection
- verify that individual checkbox stays checked but becomes disabled

- Uncheck individual message checkbox
- complete the form and send

- verify a group conversation was created between you, and
the 2 non-students

- now create a new convo,
- this time select All Students in [Course]
- complete the rest of the form, send
- verify that a separate conversation is
created for each student recipient

Change-Id: Ibc83594c48cbee893fdab5461295878c99fe3c7c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309581
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Jason Gillett <jason.gillett@instructure.com>
Reviewed-by: Chawn Neal <chawn.neal@instructure.com>
Product-Review: Chawn Neal <chawn.neal@instructure.com>
2023-01-30 17:28:02 +00:00
Mysti Lilla 36cb569bb7 Files mimetype clean up
refs MAT-1091
flag=none

[fsc-timeout=30]

Test plan
- Specs pass

Change-Id: Iac01fda45b271340fed69c57b9647a1240367171
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309298
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Ed Schiebel <eschiebel@instructure.com>
Product-Review: Mysti Lilla <mysti@instructure.com>
2023-01-27 22:12:15 +00:00
Jason Gillett f151776f0b Make react inbox compatible with old conversations that lack workflow_state
flag= react_inbox
closes VICE-3321

Test Plan
1. Create a conversation with a single message
2. Find the conversation on ruby console
3. Get the conversation message participant for your current user
4. Set the workflow_state to nil
4a. You will need to save it in a way that bypasses validation
4b participant.save(validate: false)
5. Open the conversation again
6. the conversation should load and the page should not crash

Change-Id: I07c8883d605c6b0ef092169950f123b668fbe180
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309679
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Omar Soto-Fortuño <omar.soto@instructure.com>
Product-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
2023-01-27 18:12:31 +00:00
Aaron Ogata ca7fa755d4 add jobs cluster tag
refs AE-119

Change-Id: I1b2f903a60793459feca2c0ef4d9eed9df12b508
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309463
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Isaac Moore <isaac.moore@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
2023-01-27 15:09:00 +00:00
Endre Berki 762b3aa448 Add canvas_tool_id custom field to Quiz LTI tools
Closes QUIZ-10477
flag=none

New Quiz LTI provisions are already requesting this  field with g/307628.
With this migration, the existing provisions will also be adapted.

Test plan:
- check that your Quiz LTI ContextExternalTool
  record does not have the canvas_tool_id custom field.
- execute rails db:migrate
- check that your Quiz LTI ContextExternalTool
  record HAS the canvas_tool_id custom field

Change-Id: I04c54dcdf5d9730756f67ae9459c5008c9aecfdf
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/308959
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ferenc Marcsó <ferenc.marcso@instructure.com>
QA-Review: Roland Beres <roland.beres@instructure.com>
Product-Review: Roland Beres <roland.beres@instructure.com>
Migration-Review: Aaron Ogata <aogata@instructure.com>
2023-01-27 11:37:12 +00:00
Caleb Guanzon d75a6572a0 make convos reply_from respect lock rules
flag=none
fixes VICE-3302

test plan:
- the new specs are strong and follow
the pattern set by previous fixes
to reply_from

- full e2e testing can be done on
an env with working mail processing

- create a convo as a teacher with your
students

- wait for the student to get the convo
email

- as the student, reply to the email

- verify that your reply was added to the convo

- now as the teacher, hard conclude the course

- and then as the student, reply to the email

- verify that your reply did not create
a reply to the convo

other rules to test:
- soft concluded courses will also reject email replies
- section overrides with section restrictions will bypass
rejection
- term role overrides will bypass rejection as long
as dates are not restricted to courses, nor sections

Change-Id: I7e2dbde18c87687861c3cdd48c1553b5df99c8c2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309665
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jason Gillett <jason.gillett@instructure.com>
Product-Review: Jason Gillett <jason.gillett@instructure.com>
QA-Review: Chawn Neal <chawn.neal@instructure.com>
2023-01-26 21:45:36 +00:00
Luis Oliveira 2bad222748 Update calendar event time correctly across DST window
Trigger change events on time inputs before
time data extraction so the data layer is updated
before further usage.

fixes LS-3707
flag = none

Test plan:
- Create a calendar event with a start date before
  a DST window
- Edit the event through 'More options' and
  update the day to a day inside the DST period
- Notice that the start time is not an hour later

Change-Id: I7274c9e3a9ac52edb51186fa49a8d7d3152f65e1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309579
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jonathan Guardado <jonathan.guardado@instructure.com>
QA-Review: Jonathan Guardado <jonathan.guardado@instructure.com>
Product-Review: Luis Oliveira <luis.oliveira@instructure.com>
2023-01-26 21:41:39 +00:00
Mysti Lilla 859063cee6 Allow file links from merged users to still work
fixes MAT-1091
flag=none

Test plan
- Have at least 2 users (preferably 3)
- Create image links as each of the users in HTML
  somewhere (creating a new discussion topic
  is usually on by default for students, I
  think)
- Merge user 1 into 2 and then 2 into 3
- Verify the links still work
- Test this with at least 1 cross-shard merge
  and make sure the file links still work

Change-Id: If64b46c79afd8935b155fb20c4310f2f2c98b76c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/308810
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
Reviewed-by: Yona Appletree <yona.appletree@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Product-Review: Allison Howell <allison.howell@instructure.com>
2023-01-26 20:24:43 +00:00
Drake Harper c4224c3c14 Fix discussion entry styling
closes VICE-3153
flag=split_screen_view

Test Plan:
 - see ticket for details

Change-Id: Ib57aaef1bc62612f05202522c1a8f7388b7841fa
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309293
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Caleb Guanzon <cguanzon@instructure.com>
QA-Review: Jason Gillett <jason.gillett@instructure.com>
2023-01-26 19:31:14 +00:00
Evan Battaglia 8f542d8af7 Use Account#domain for LTI AGS ids (URLs)
This will provide consistency in the IDs for Accounts which can be
accessed on multiple domains. No matter what domain is used to access
Canvas, the AGS ids will always use the domain which is considered the
primary for the account.

closes INTEROP-7813
flag=consistent_ags_ids_based_on_account_principal_domain

Test plan:
- Make sure you have a Canvas account which you can access from multiple
  domains. To do this you'll likely need to have MRA setup, and then add
  an additional domain in Account Settings -> Canvas Cloud Information,
  and setup an additional domain with your proxy
  (traefik/dinghy/dory/whatever) as you did when setting up MRA
- Check the following both with the new feature flag
  (consistent_ags_ids_based_on_account_principal_domain) off and on.
  Hit Canvas on a domain which is the not the account's primary domain.
  For each, check that, for the ID/URL in question:
    - With the flag off, it should include the domain you're accessing
      Canvas on
    - With the flag on, it should include the primary domain
  1. Launch an LTI 1.3 tool in an assignment context (e.g. create an LTI
     1.3 assignment) and check both the "lineitems" and "lineitem"
       fields
  2. Also check the context_memberships_url (NRPS) from the launch
  3. Get an LTI advantage token for your LTI 1.3 tool
     (/api/lti/advantage_token?tool_id=123) and GET the
     /api/lti/courses/2/line_items endpoint, and check the "id" fields
     of the returned results.
  4. Post a score to the /courses/123/line_items/456 (etc.) endpoint --
     see the example requst from the docs at
     https://canvas.instructure.com/doc/api/score.html --
     and check the the "progress" URL (under content_items) and the
     resultUrl returned.
  5. Get the /api/lti/courses/2/line_items/1/results and check the URLs
     in the "id" field and the "scoreOf" field.
  6. Get the /api/lti/courses/2/names_and_roles endpoint and check the
     URL in the "id" field.

Change-Id: I4250323445d00324cf7470b2496683b492dfce27
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309389
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Xander Moffatt <xmoffatt@instructure.com>
QA-Review: Xander Moffatt <xmoffatt@instructure.com>
Product-Review: Alexis Nast <alexis.nast@instructure.com>
2023-01-26 15:59:55 +00:00
Spencer Olson bebcfeab97 always show year in assignment edit modal
closes EVAL-2817
flag=none

Test Plan:
1. Create an assignment in a course with a due date in the previous year.
2. From the assignment index page, click the three vertical dots to expand
   the 'Edit' options.
3. Under 'Due' date, use the calendar to select any date in the current
   year. Notice that the date in the input includes the current year.

Change-Id: Ib3b7764fc66d392690dabcd3fc6b742a8ac1feac
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309392
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Reviewed-by: Christopher Soto <christopher.soto@instructure.com>
QA-Review: Cameron Ray <cameron.ray@instructure.com>
Product-Review: Jody Sailor
2023-01-26 00:06:50 +00:00
Derek Williams 31d2f4b882 identify proxy submitter in speedgrader with singular submission
closes EVAL-2838
flag=proxy_file_uploads

test plan:
- as a teacher, submit an assignment on behalf of a student
- ensure that your proxy submission is the only submission from that
student for the given assignment
- navigate to speed grader for that submission
- notice the 'Submitted:' text now contains a timestamp AND the name
of the proxy submitter

Change-Id: I3bc2a27f1f106b5a124709078d573ce34bbcb6c3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309304
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Cameron Ray <cameron.ray@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2023-01-25 06:14:21 +00:00
Jeremy Stanley 39dec149cf add resource_map_url to quizzes_next_quiz_duplicated live event
test plan:
 - have a course with a new quiz
 - copy it to another course
 - the quizzes_next_quiz_duplicated live event that is dispatched
   should include a resource_map_url that points to a file
   that looks like

   {
     "source_course": "203",
     "source_host": "pineapple.edu",
     "resource_mapping": {
       "assignments": { "1": "21", "2": "22" },
       "announcements": { ... },
       ...
     }
   }

flag=none
refs FOO-3302

Change-Id: I97196bd13c0cb2d95103540526e69e11f5c9c2f7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309121
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Logan <james.logan@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: James Logan <james.logan@instructure.com>
Migration-Review: Isaac Moore <isaac.moore@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2023-01-25 00:24:40 +00:00
Spencer Olson 2d620b4fad add datafix to recalculate section override dates
Adds a datafix that will be manually run after the
"Deprioritize Section Overrides for Nonactive Enrollments"
Site Admin feature flag is enabled. The datafix recalculates
cached_due_date on affected submissions, and resets the
availability cache on affected assignments.

refs EVAL-619
flag=deprioritize_section_overrides_for_nonactive_enrollments

Test Plan:
1. Disable the Site Admin feature flag 'Deprioritize Section
   Overrides for Nonactive Enrollments' and clear your redis
   cache (redis-cli flushall)
2. Enroll a student in two sections in a course.
3. Create an assignment due for Section 1 a week from today, and for
   Section 2 two weeks from today.
4. Conclude or deactivate the student's enrollment in Section 2.
5. Sign in as the student, view the assignment, and notice that it
   shows the due date as 2 weeks from today.
6. Enable the 'Deprioritize Section Overrides for Nonactive Enrollments'
   feature flag. Ensure the flag is showing as enabled in a rails
   console (you may have to wait a bit, sometimes it takes a moment for
   the feature flag setting to propogate. Make sure NOT to clear your
   cache):

   Account.site_admin.feature_enabled?(
     :deprioritize_section_overrides_for_nonactive_enrollments
   )
   => true

7. As the student, notice the due date is still showing as 2 weeks
   from today.
8. In a rails console, run the datafix:

   DataFixup::RecalculateSectionOverrideDates.run

9. As the student, notice the due date now shows as 1 week from today.

Change-Id: Ia6a491f14b428fb6b65b56d33878bd0b01539423
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/305406
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Christopher Soto <christopher.soto@instructure.com>
Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com>
Reviewed-by: Cameron Ray <cameron.ray@instructure.com>
Reviewed-by: Rosser Schwarz <rschwarz@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
Product-Review: Jody Sailor
2023-01-24 21:35:11 +00:00
Jeremy Stanley 00a23f9ca1 add module_items to asset_id_mapping
test plan:
 - the "Get asset id mapping" API should include an id mapping
   for "module_items"
 - and this should work for either course copy or blueprint sync

flag=none
closes FOO-3313

Change-Id: I9ea7d3918ae05ceddc2d90c4e3d952d4527abff2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309299
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Logan <james.logan@instructure.com>
QA-Review: James Logan <james.logan@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2023-01-24 21:13:46 +00:00
James Logan 05d5dab98e add source course uuid to the content migration completed event
closes QUIZ-10691
flag = none

Test Plan:
- Launch canvas with a canvas live events stream set up.
- Tail the live events stream.
- Complete a blueprint sync and check the event body for the
  source course uuid.

Change-Id: Idc17b1537c99337495c05b1bd7e4808241893882
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309314
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jorge Arteaga <jorge.arteaga@instructure.com>
QA-Review: Jorge Arteaga <jorge.arteaga@instructure.com>
Product-Review: James Logan <james.logan@instructure.com>
2023-01-24 21:06:56 +00:00
August Thornton dbfd24eb9c add guard to activate_role for unique constraint (account_id, name)
we had a case where a role for a specific account was created and
later deactivated. a new role with identical name was created in
its place, and the old role was attempted to be re-activated.
this violated a uniqueness constraint on [:account_id, :name]
for active roles.

we now guard against re-activating roles when a currently active
role exists in the same context with the same name.

fixes FOO-3315
flag = none

test plan:
 • within an account create a custom role
 • de-activate that custom role
 • create a new role with that same name
 • attempt to re-activate the former role
 • verify helpful error reponse as to why that action will not
   be permitted with an http code 400

Change-Id: I03143696d94210e6379195cb6d42ea8e48891c13
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309457
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
QA-Review: August Thornton <august@instructure.com>
2023-01-24 19:54:05 +00:00
Eric Saupe 2adf275017 Add context modules publish menu
fixes LS-3395
flag=module_publish_menu

test plan:
- Enable the flag
- Go to a modules page
- See the publish icon on the module is now a menu
- Verify all the actions work as expected
- See the publish menu item at the top of the page
- Verify the actions open a modal with differing titles based on the
action
- Verify submitting the form creates a background job that completes and
updates the page accordingly
- Verify the cancel button stops the job and refreshes the page to
reflect the most correct data based on what was run

Change-Id: Idbda6fe7a971cb6c9d6a897aaf2bd42fe950ddd4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/304526
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Robin Kuss <rkuss@instructure.com>
QA-Review: Robin Kuss <rkuss@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
2023-01-24 19:49:50 +00:00
Kai Bjorkman 2197a798a8 spec: view options menu selenium coverage
closes EVAL-1890
flags=none

Test Plan:
    -specs pass

Change-Id: Ibbdec3437089f7700293b2f51e3c56e56779d503
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309447
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Spencer Olson <solson@instructure.com>
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Product-Review: Cameron Ray <cameron.ray@instructure.com>
QA-Review: Kai Bjorkman <kbjorkman@instructure.com>
2023-01-24 19:02:56 +00:00
Spencer Olson 67ec533345 make 'MI' shortcut work with set default grade
closes EVAL-2839
flag=assignment_missing_shortcut

Test Plan:
1. Enable the 'Keyboard Shortcut for Missing Assignment' SiteAdmin flag.
2. Go to Gradebook, click on an assignment header, and select 'Set Default
   Grade'.
3. Verify that you can enter "MI" (case insensitive) into the input to
   mark students as missing.
   - If "Overwrite already-entered grades" is not checked, students with
     grades and students marked as excused for the assignment will not be
     marked as missing.
   - If "Overwrite already-entered grades" is checked, all students for
     the assignment will be marked as missing.
   - If a missing policy is enabled, then ungraded students will be graded
     according to the missing policy in addition to being marked as
     missing.

Change-Id: I352a991c18bb82567e98bdac74800526ba0c9ec1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/309136
Reviewed-by: Aaron Shafovaloff <ashafovaloff@instructure.com>
Reviewed-by: Derek Williams <derek.williams@instructure.com>
QA-Review: Cameron Ray <cameron.ray@instructure.com>
Product-Review: Jody Sailor
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2023-01-24 15:26:28 +00:00