Commit Graph

16814 Commits

Author SHA1 Message Date
Jeremy Neander 0b4362749f show a tooltip for the post or hide grades menu
fixes GRADE-2286

test plan:
 1. Select or create a course
 2. Enable New Gradebook
 3. Enable Post Policies
 4. Visit SpeedGrader
 5. Hover the "Post or Hide Grades" menu
 6. Verify the menu label appears as a tooltip
 7. Using a screenreader, navigate to the menu button
 8. Verify the menu label is announced

Change-Id: I5fa027c7e34fe83fb456870e640907cb2150ef5c
Reviewed-on: https://gerrit.instructure.com/204388
Tested-by: Jenkins
Product-Review: Jonathan Fenton <jfenton@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
QA-Review: Adrian Packel <apackel@instructure.com>
2019-08-13 18:43:22 +00:00
Jeremy Neander f70acd36d7 make grade summary muting tooltips accessible
fixes GRADE-2285

test plan:
 1. Select or create a course
 2. Set the post policy for an assignment to post manually
    * Alternately: mute grades for the assignment
 3. Sign in or act as a student in the course
 4. Visit the student grade summary page
 5. Ensure your screenreader is running
 6. Tab to the muted/hidden icon in the table
 7. Verify the muted/hidden text is announced
 8. Tab away and SR-navigate to the muted icon in the table
 9. Verify the muted/hidden text is announced

Change-Id: I9662f44871882a8fef0f9867124d4065ab6ad767
Reviewed-on: https://gerrit.instructure.com/204257
Tested-by: Jenkins
Reviewed-by: Adrian Packel <apackel@instructure.com>
Reviewed-by: Gary Mei <gmei@instructure.com>
QA-Review: Gary Mei <gmei@instructure.com>
Product-Review: Jonathan Fenton <jfenton@instructure.com>
2019-08-13 18:43:20 +00:00
Cody Cutrer 7a146dc566 add whitelist of includes when using token scopes
Change-Id: I8d68faea166a16e4284433845d38b23ab98ab0a7
Reviewed-on: https://gerrit.instructure.com/204380
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
Reviewed-by: Marc Phillips <mphillips@instructure.com>
Tested-by: Jenkins
Product-Review: Jesse Poulos <jpoulos@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2019-08-12 22:45:25 +00:00
Cody Cutrer cbf7b720a3 add rails6 gem, and boot console
disable bullet in rails 6

Change-Id: Ic84a291c9bd81dd1ef93d414b9ef73d277d07273
Reviewed-on: https://gerrit.instructure.com/204711
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
2019-08-12 20:09:56 +00:00
Jeremy Stanley fc1a49a380 fix preview for group files w/inst-fs
test plan:
 - set up inst-fs
 - inside a group, upload an image
 - without reloading the page, click the file
 - the image preview should load

fixes ADMIN-2787

Change-Id: I87e4d6086877f70c1747c99f0be6d189624e23f5
Reviewed-on: https://gerrit.instructure.com/204068
Tested-by: Jenkins
Reviewed-by: Carl Kibler <ckibler@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
2019-08-12 19:50:02 +00:00
Rex Fleischer 453e96b14c add filetype check for submissions file uploads
fixes: ADMIN-2792

feature = check_submission_file_type

Test-Plan:
* create an assignment of type online_upload without extension restrictions
* make sure the api can upload any filetype
* update the assignment extension restrictions to allow a specific type
* make sure files outside those types are rejected
* make sure files inside thase types are accepted

Change-Id: I5203f0d56630aa975f8424526623d4bcbbdaede9
Reviewed-on: https://gerrit.instructure.com/203821
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
2019-08-12 19:19:20 +00:00
Jeremy Putnam 3c3dbc41bd spec: add teacher image tests for RCS sidebar
Change-Id: I682e13bdfd5cd34697f72371fd22cbca713f84dd
refs: COREFE-34
Reviewed-on: https://gerrit.instructure.com/203764
Tested-by: Jenkins
Reviewed-by: Robert Lamb <rlamb@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Jeremy Putnam <jeremyp@instructure.com>
2019-08-12 18:06:53 +00:00
Cody Cutrer f753a5e432 update authlogic
two breaking changes:
 * validations are gone, just use vanilla rails validations
 * authenticates_many is gone. use a scoping call instead

Change-Id: Iad2a5d4655ad116e85ea3ea98bc209b37cbdba39
Reviewed-on: https://gerrit.instructure.com/202619
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2019-08-12 18:02:02 +00:00
Aaron Griffin 0912d22252 Support i18n numbers when taking a quiz
Test Plan:
- Create a quiz with at least one numeric and one formula question
- Set points, numbers, answers to include decimals or be over 1000 in
  several combinations
- Change locale to one with known thousand/decimal separators
    (French uses comma for decimals and space for thousands)
- Take the quiz and ensure that numbers and dates are properly localized
  all the way through

Closes QO-505

Change-Id: I1bba47e5db666bcf7eb7c477422b1b49ebf8328e
Reviewed-on: https://gerrit.instructure.com/203001
Tested-by: Jenkins
QA-Review: Tyler Burraston <tburraston@instructure.com>
Product-Review: Kevin Dougherty III <jdougherty@instructure.com>
Reviewed-by: Bryan Petty <bpetty@instructure.com>
2019-08-12 15:09:17 +00:00
Pat Renner 6121e6f4db Ensure outcome imports update active records over deleted records
It is possible for multiple outcomes/outcome groups with the same
`vendor_guid` to be present in a given context.
When updating an outcome/group via CSV, we should
always prefer to update an active outcome to restoring a deleted outcome.

fixes OUT-3138

test plan:
- For both an outcome/outcome group, create two records
 with identical `vendor_guid's`. To do this, create two records via CSV
with guids that you define. After importing the CSV, manually update both
records to have the same `vendor_guid`.
- Mark one record as deleted and delete (via CSV)
- When updating a record, ensure only
 the active record is updated

Change-Id: I420a2435255af4bfb807be7d5dd761456151a016
Reviewed-on: https://gerrit.instructure.com/204087
Tested-by: Jenkins
Reviewed-by: Frank Murphy III <fmurphy@instructure.com>
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
QA-Review: Brian Watson <bwatson@instructure.com>
Product-Review: Michael Brewer-Davis <mbd@instructure.com>
2019-08-12 13:55:01 +00:00
Adrian Packel c41f803290 Have recent feedback check posted not muted
fixes GRADE-2334

Test plan:
- Flip on the Post Policy feature flag
- Set up two courses with some students and assignments like so:
  - A course using New Gradebook (C1)
    - An auto-posted assignment (A1.1)
    - A manually-posted assignment (A1.2)
  - A course not using New Gradebook (C2)
    - An unmuted assignment (A2.1)
    - A muted assignment (A2.2)
- Enroll a student in both courses
- As a teacher, grade and/or leave a comment for the student on each of
  the above assignments
- As the student, log in and check your dashboard
  - Under "recent feedback", you should see grades/comments for A1.1 and
    A2.1, but *not* A1.2 or A2.2
- As the teacher, post grades for A1.2 and unmute A2.2
- As the student, you should now see these assignments under "recent
  feedback" as well
- As the teacher, hide grades for A1.1 and mute A2.1
- As the student, you should now only see A1.2 and A2.2 under "recent
  feedback"

Change-Id: I1f914510d0fd3bd79cd023f159a2d31c0d16bef4
Reviewed-on: https://gerrit.instructure.com/203756
QA-Review: Keith Garner <kgarner@instructure.com>
Product-Review: Keith Garner <kgarner@instructure.com>
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
2019-08-09 22:30:25 +00:00
Cody Cutrer c9aab282ba use rails built-in RedisCacheStore
RedisStore is no longer supported

somewhat surprisingly, the serialization formats are compatible, so we don't
need to do any namespacing

Change-Id: Iede3a023cada95313875f0ce419b649c364ee97c
Reviewed-on: https://gerrit.instructure.com/202663
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2019-08-09 20:22:56 +00:00
James Williams ddbd8ced6b move discussion entry participants creation out of transaction
and simplify logic so we're not querying for the same
participant when setting the subscribed state

Change-Id: Id321909217f0d5f8e5e58592b00f93cc40ede25c
Reviewed-on: https://gerrit.instructure.com/204190
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2019-08-09 19:57:03 +00:00
James Williams c43b3fd5d8 split content migration job stranding by type
let blueprint course syncs, manual imports, and api initiated
imports run in independent queues and not block each other

closes #CORE-3237

Change-Id: Ib37cde3d317069748ad1a3fe91f41c82b8b95cd5
Reviewed-on: https://gerrit.instructure.com/204529
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
Tested-by: Jenkins
2019-08-09 17:16:18 +00:00
Jeremy Putnam e57c7e777b spec: add image lock and hidden tests for RCS sidebar
Change-Id: I6bc6fffd7492b7b5b7638cd41c73dc75df1bda25
refs: COREFE-34
Reviewed-on: https://gerrit.instructure.com/203047
Reviewed-by: Robert Lamb <rlamb@instructure.com>
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Jeremy Putnam <jeremyp@instructure.com>
2019-08-09 16:53:30 +00:00
Ethan Knapp 622b101c72 allow GQL postAssignmentGrades per Submission
- adds optional `only_student_ids` argument to postAssignmentGrades
- adds optional `skip_student_ids` argument to postAssignmentGrades
- adds optional `section_ids` argument to postAssignmentGrades
- adds same arguments to hideAssignmentGrades

Test Plan:
- Validate that the postAssignmentGrades and hideAssignmentGrades GQL migrations
    function as expected with varying argument combinations

refs GRADE-2335, PFS-12667, PFS-13439

Change-Id: I518b53869b75a3d538a4e57c138bab250ce24690
Reviewed-on: https://gerrit.instructure.com/202527
Tested-by: Jenkins
QA-Review: Trevor Byington <tbyington@instructure.com>
Reviewed-by: Parker Miller <pmiller@instructure.com>
Product-Review: Ethan Knapp <eknapp@instructure.com>
2019-08-09 15:38:36 +00:00
Clay Diffrient a6def4ef80 Remove other places where sentry was being noisy
Test Plan:
  - Errors don't show in Slack

closes CORE-2894

flag = none

Change-Id: Ib4fe995fc54372ffed635751cde08ce4d1a92772
Reviewed-on: https://gerrit.instructure.com/204502
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-09 15:31:14 +00:00
Ethan Knapp caf1158b43 add sis_source_id to Assignments
Test Plan:
- Canvas Migrations should run successfully
- Attempting to save Assignments (within the same RootAccount) with the
    same sis_source_id should fail
- [API] Assignment GET should include sis_assignment_id field
- [API] Assignment POST should allow setting the sis_assignment_id
- [API] Queries involving an Assignment should support the `assignments/sis_assignment_id:BLAH` syntax

refs PFS-11978, PFS-12661

Change-Id: I37a8d396bb409e98f6372abdc5b08f25f1d8d0f7
Reviewed-on: https://gerrit.instructure.com/199025
Tested-by: Jenkins
Reviewed-by: Tyson Brown <tbrown@instructure.com>
QA-Review: Trevor Byington <tbyington@instructure.com>
Product-Review: Collin Anderson
2019-08-08 23:02:51 +00:00
Marc Phillips 616e1ccf5e Fix uuid parse bug in lti user lookup
fixes PLAT-4742

Test Plan:
 - create a user with id 6
 - create a different user with lti_id 6ad...
 - do a score put for a lineitem on user two
 - note that it updates correctly for that user

Change-Id: Iff8d5883d805848af2ff5e04c1712bf4c5a747db
Reviewed-on: https://gerrit.instructure.com/204416
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
Tested-by: Jenkins
QA-Review: Marc Phillips <mphillips@instructure.com>
Product-Review: Marc Phillips <mphillips@instructure.com>
2019-08-08 20:40:13 +00:00
Landon Gilbert-Bland e16bb95039 Minor fixes for A2
Test Plan:
  - Jenkins passes

Fixes COMMS-2294

flag = assignments_2

Change-Id: Ia7a23099be83c1607618d97a94dad6750d625cd8
Reviewed-on: https://gerrit.instructure.com/204366
Reviewed-by: Ryan Norton <rnorton@instructure.com>
Tested-by: Jenkins
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Landon Gilbert-Bland <lbland@instructure.com>
2019-08-08 18:28:12 +00:00
Robin Kuss f18ee228e8 spec: add quiz_lti contract test info for enrollment
Closes: QUIZ-6655

Test Plan:  See https://gerrit.instructure.com/#/c/quiz_lti/+/204264

Change-Id: If2fe159ec156675c00cb90043b9a6733d60a7941
Reviewed-on: https://gerrit.instructure.com/204274
Tested-by: Jenkins
Reviewed-by: Tyler Burraston <tburraston@instructure.com>
QA-Review: Tyler Burraston <tburraston@instructure.com>
Product-Review: Robin Kuss <rkuss@instructure.com>
2019-08-08 16:23:58 +00:00
Simon Williams a0b58d02c1 api: allow graders to upload and submit for students
closes ADMIN-2795
flag: none

Test plan
- As a teacher, submit an assignment
  for a student with a submitted_at date
  that will override the submission time
- Do this with other grader types also
- Verify that you can't submit for a student
  who shouldn't have access to the assignment
  (excused, lock dates, grading periods, etc)
- Verify you can't change the submission
  time as the student

Change-Id: I86b7e6d3b03c9fe9b1c15908a3d0a5f88d5202f5
Reviewed-on: https://gerrit.instructure.com/167638
Tested-by: Jenkins
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Ethan Knapp <eknapp@instructure.com>
2019-08-07 23:04:00 +00:00
wdransfield 04de6d4dbb Generate asset_accessed event in files API
Closes PLAT-3858

Test Plan:
- Make a get request to /api/v1/courses/:id/files
- Verify an asset accessed event is created
- Make a get request to /api/v1/users/id/files
- Verify an asset accessed event is created
- Use one of the file download urls from the
  to download a file
- Validate an asset accessed event is created
  with and without a Canvas session

Change-Id: I3551ad683ed3a6d328a166482206defddd9bfef1
Reviewed-on: https://gerrit.instructure.com/203903
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
Tested-by: Jenkins
Product-Review: Oxana Jurosevic
Reviewed-by: Marc Phillips <mphillips@instructure.com>
2019-08-07 21:54:44 +00:00
Drake Harper 96b6be4d2d Fix follow oauth2 flow for scopes error handling
Fixes PLAT-4681

Test Plan:
-set up an lti key
-hit /login/oauth2/auth?client_id=tool_id&response_type=code
	&state=YYY&redirect_uri=some_url&scope=url:GET
-verify that redirect was redirected to with error type and description

Change-Id: I724f503e31edd449f29e3a894d492a11cca61279
Reviewed-on: https://gerrit.instructure.com/203250
Tested-by: Jenkins
Reviewed-by: Marc Phillips <mphillips@instructure.com>
QA-Review: Tucker Mcknight <tmcknight@instructure.com>
Product-Review: Jesse Poulos <jpoulos@instructure.com>
2019-08-07 21:04:12 +00:00
Landon Gilbert-Bland 960ec59f94 Fix n+1 with submission comments unread count in gql
Test Plan:
  - Jenkins passes

Fixes COMMS-2280
flag = none

Change-Id: I03293bca06450f07d78e834ec9f61eaf611a11de
Reviewed-on: https://gerrit.instructure.com/204216
Reviewed-by: Cameron Matheson <cameron@instructure.com>
Tested-by: Jenkins
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Landon Gilbert-Bland <lbland@instructure.com>
2019-08-07 21:00:56 +00:00
Jeremy Putnam d3e32695fb spec: add test to verify lti button displays with tools enabled
Change-Id: I7b90ade487db89a8745189075d465bb9619d8127
Reviewed-on: https://gerrit.instructure.com/197774
Reviewed-by: Tucker Mcknight <tmcknight@instructure.com>
Tested-by: Jenkins
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Jeremy Putnam <jeremyp@instructure.com>
2019-08-07 19:48:17 +00:00
Carl Kibler 0c5af58292 use color and icons to improve a11y of left menu
fixes ADMIN-2577

flag: Accessible Sidebar Menu

test plan:
 - Check left side menu in Courses with regular mode and High Contrast
   first, to make sure nothing changed or broke.
 - Enable the 'Accessible Sidebar Menu' release flag
 - As teacher or admin:
 - Check criteria #1-6 from the jira ticket to ensure nothing missed
 - Check High Contrast also, ensure it works correctly
 - Disable 'Announcements' and ensure the eye-off icon doesn't wrap
   weirdly and is all on one line
 - Unused nav items also get icon and slightly different tooltip
 - Tooltips for unused & hidden nav items show when navigated to with
   keyboard
 - Check student view also, to verify those items don't show
 - As admin:
 - Go edit the theme, and check that the theme preview for the nav
   works (it required an adjustment for extra padding) so
   the new outlining wasn't cut off)

Change-Id: I778a155bce0bb32117abf8ee5d7fe327a7fb0b34
Reviewed-on: https://gerrit.instructure.com/199404
Tested-by: Jenkins
Reviewed-by: Jon Willesen <jonw+gerrit@instructure.com>
QA-Review: Daniel Sasaki <dsasaki@instructure.com>
Product-Review: Daniel Sasaki <dsasaki@instructure.com>
2019-08-07 19:29:07 +00:00
Adrian Packel 196d69e53e Change post/hide grades wording for anonymous
fixes GRADE-2288

Test plan:
- Have a course with New Gradebook and Post Policies enabled
- Create an anonymous assignment
  - Adjudicate
- Post grades
  - Check that the wording of the anonymous-assignment alert in the tray
    matches what's in the acceptance criteria for the ticket
- Hide grades
  - Check that the wording of the anonymous-assignment alert in the tray
    matches what's in the acceptance criteria for the ticket

Change-Id: I04faafe3c3f96336e88433175dcfe619de3db7f7
Reviewed-on: https://gerrit.instructure.com/204149
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Adrian Packel <apackel@instructure.com>
Product-Review: Jonathan Fenton <jfenton@instructure.com>
2019-08-07 18:11:42 +00:00
Matthew Lemon 404d78fbe2 handle lti file upload in A2
fixes COMMS-2230
flags assignments 2

Test Plan:
* Create a course and add a student
* On the course install an LTI tool with a homework_submissions placment
* Create an assignment for the course with an online upload assignment
  type
* Masquerade as the student and compose a submission draft using both
  LTI and regular files
* Submit the draft and view the submission.

Change-Id: I5935da3f1f728ce7551aad617e00adf71e85a7f8
Reviewed-on: https://gerrit.instructure.com/203634
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Tested-by: Jenkins
QA-Review: Ben Nelson <bnelson@instructure.com>
Product-Review: Matthew Lemon <mlemon@instructure.com>
2019-08-07 16:52:43 +00:00
wdransfield cbbe1dda87 Send default URL to assignment new/edit page
Closes PLAT-4693

Test Plan:
- Add a 'default_assignment_tool_url' value to your root
  account settings hash
- Navigate to the new assignments page and validate
  the value you set is in the JS ENV

Change-Id: I427172f2e011d3de11c8dc10fdea7cda020c8a53
Reviewed-on: https://gerrit.instructure.com/204059
Tested-by: Jenkins
Reviewed-by: Marc Phillips <mphillips@instructure.com>
QA-Review: Marc Phillips <mphillips@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
2019-08-07 15:59:27 +00:00
Jeremy Putnam d9f4516e65 spec: add folder and file lock and hidden tests for RCS sidebar
Change-Id: I02733e086e260d6c18463f3e0426645b30a63c2b
refs: COREFE-34
Reviewed-on: https://gerrit.instructure.com/202906
Tested-by: Jenkins
Reviewed-by: Robert Lamb <rlamb@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Jeremy Putnam <jeremyp@instructure.com>
2019-08-07 15:43:45 +00:00
Jon Willesen bde5064510 direct share discussion menu items
On the discussions index page, each discussion has two new menu items
for direct sharing.

flag: direct_share
closes: ADMIN-2783

test plan:
- new menu items are only there when the feature flag is on
- new menu items are only there when the user can actually manage
  discussions, not just create or moderate.

Change-Id: I8769cbd99f506663157c3efe470d80aa7eac5b34
Reviewed-on: https://gerrit.instructure.com/203038
Tested-by: Jenkins
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2019-08-06 23:34:56 +00:00
Adrian Packel a2e475c727 Don't require group filter for group assignments
For group assignments that aren't set to grade students individually,
don't require a student group to be selected, since SpeedGrader will
show a single entry for each group. (For group assignments that *do*
grade students individually, we still require and apply the filter.)

fixes GRADE-2352

Test plan:
- Enable the "Filter SpeedGrader by Student Group" feature in the root
  account
- Have a course with new gradebook and the above-derived course setting
  enabled, and at least one group set w/ groups
- Set up three assignments:
  - A plain old invidiually-graded assignment (A1)
  - A group assignment that does *not* grade students individually (A2)
  - A group assignment that *does* grade students individually (A3)
- In new Gradebook:
  - For each assignment above, check the behavior of the SpeedGrader
    link in the submission tray for a student in that assignment:
    - A1 and A3 should disable the link unless you are filtering by a
      student group
    - A2 should always have the link enabled
- On the assignment view page, check the behavior of the SpeedGrader
  link for each assignment:
  - A1 and A3 should require a student group to be selected before the
    link is enabled
  - A2 should always have the link enabled, and not bother showing the
    group dropdown
- On loading SpeedGrader for an assignment:
  - A1 and A3 should only show students for the selected group, as you'd
    expect
  - A2 should show the all the groups in the assignment's selected
    group set as individual "students", while showing separate
    individual entries for any students not assigned to any of those
    groups

Change-Id: Id797040518f3596ace5c05e6ed189fad19ffef78
Reviewed-on: https://gerrit.instructure.com/203502
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Gary Mei <gmei@instructure.com>
QA-Review: Gary Mei <gmei@instructure.com>
Product-Review: Jonathan Fenton <jfenton@instructure.com>
2019-08-06 23:27:58 +00:00
Steven Burnett 479b66347d fix n+1 on submission comment read field
fixes COMMS-2273

Test Plan:
- Tests pass
- mark a submission as read and query a submission comment for its read
  field
- mark a submission comment as read and query for its read field
- notice both return read for the user and false for another user
- celebrate

Change-Id: I9dd9a4e919e7e60f13b1b18ef56da61cbb9055f6
Reviewed-on: https://gerrit.instructure.com/203936
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
Product-Review: Steven Burnett <sburnett@instructure.com>
2019-08-06 19:58:09 +00:00
James Williams d67aadab11 add fallback when searching wiki pages in link validator
test plan:
* a link to a wiki page with a "+" in the title
 shouldn't cause a warning in the course link validator

closes #ADMIN-2801

Change-Id: I1ac5843c40b4c7067e5fc7a6eb9b7ccd5a99e220
Reviewed-on: https://gerrit.instructure.com/203727
Tested-by: Jenkins
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
2019-08-06 19:34:05 +00:00
Adrian Packel 83102cef94 Save post policy in content migrations
closes GRADE-2289

Test plan:

Course copy:
- Have a course with New Gradebook and post policies enabled
- Create the following assignments/post policies:
  - A Manual posting policy for the course overall
  - An auto-posted assignment (A1)
  - A manually-posted assignment (A2)
  - An anonymous assignment (A3)
  - A moderated assignment (A4)
- From the course's Settings screen, make a copy of the course
- Enable New Gradebook for the new course if needed
- Check that the newly-created copy has retained the overall post policy
  for the course and the individual post policies for the assignments
  (i.e., A1 should be auto-posted and A2-A4 should be manually-posted)
  - Note that A4 should be manually-posted, even if you had previously
    released grades and set the policy to automatic (course copy does
    not carry over the grade-publishing status)

Blueprint:
- Enable the "Blueprint Course" account feature option
- Create a new course with the same assignment/post policy loadout as
  the course in the above step
- In the Settings menu, check the "Blueprint Course" checkbox for the
  course
- Set up another course using this one as a blueprint
- Change around some of the assignment post policies in the blueprint
  - Make sure these register as unsynced changes for the assignments,
    and check that syncing carries them over
- Change the course post policy for the blueprint
  - Make sure that syncing the course carries the new post policy over
    (it should not apply the new course policy to any assignments, only
    set it on the course level)
  - To have the policy transfer over, you'll need to make sure you
    include course settings in the sync

Change-Id: I1fec3d5e88a8aa333ba511780d3934e98a4d7c2c
Reviewed-on: https://gerrit.instructure.com/203194
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Gary Mei <gmei@instructure.com>
Product-Review: Keith Garner <kgarner@instructure.com>
2019-08-06 18:47:57 +00:00
Gary Mei 0647461bbb fix late policy running twice on a submission
fixes GRADE-2149

Test Plan
- Set a late policy with a fractional value. Example: 2.35% per day.
- Create an assignment with a due 1 day ago and points possible of 10.
- As a student, submit to the assignment.
- Grade the student. Note the grade after the late policy has applied.
- Edit the assignment and add an override for a *different* student.
- Check the first student's grades again. It should not have changed
  from the value previously noted.

Change-Id: I0206847439d94042f27782d825669bf5be1e4c86
Reviewed-on: https://gerrit.instructure.com/202222
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Keith Garner <kgarner@instructure.com>
QA-Review: Gary Mei <gmei@instructure.com>
Product-Review: Keith Garner <kgarner@instructure.com>
2019-08-06 18:47:07 +00:00
Gary Mei 80177704c6 fix gradebook sort when filtering by student group
When New Gradebook is sorted by total grade, filtering by student
group now works.

fixes GRADE-2276

Test Plan
- Create at least 2 groups.
- Add some students to one group, and some students to another group.
- Navigate to the New Gradebook.
- Sort by Total Grade.
- Filter by student group.
- Verify that only students in the selected student group appear.

Change-Id: Ib690569b679956bff60d7bf801edf906fdf0a76e
Reviewed-on: https://gerrit.instructure.com/203373
Tested-by: Jenkins
Reviewed-by: Adrian Packel <apackel@instructure.com>
Reviewed-by: Jeremy Neander <jneander@instructure.com>
QA-Review: Gary Mei <gmei@instructure.com>
Product-Review: Keith Garner <kgarner@instructure.com>
2019-08-06 18:44:13 +00:00
Ryan Norton b54f9f6a8f add body to submission draft mutation in graphql
we need to allow setting a 'body' in the submission draft
mutation in graphql for text entry assignments

Test Plan:
* create an assignment as a teacher
* add a student to that assignment
* as a student, navigate to /graphiql
* run the following mutation
** set the submissionId to whatever your latest submissionId is
```
mutation {
  createSubmissionDraft(input: {submissionId: "1", attempt: 1, body: "stuff"}) {
    errors {
      message
      attribute
    }
    submissionDraft {
      _id
      body
    }
  }
}
```

* you should get a result like:
```
{
  "data": {
    "createSubmissionDraft": {
      "errors": null,
      "submissionDraft": {
        "_id": "42"
        "body": "stuff",
      }
    }
  }
}
```

* in the rails console, confirm the data (especially the body)
  is correct: SubmissionDraft.find(<id>)

fixes COMMS-2265

Change-Id: I6ba6a67e3a592e295c62365ca7fa13250d05e837
Reviewed-on: https://gerrit.instructure.com/203731
QA-Review: Matthew Lemon <mlemon@instructure.com>
Reviewed-by: Matthew Lemon <mlemon@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-08-06 18:14:20 +00:00
Ryan Norton d790a76222 add body to submission draft in graphql
we need to add a 'body' field to the submission draft type
in graphql to allow us to store text entry drafts going forward.

Test Plan:
* run the db migration to add body to submission draft:
** bundle exec rake db:migrate:up VERSION=20190801215707

* create an assignment as a teacher
* add a student to that assignment
* run the following in the /graphiql endpoint to locate the
  submissions for that assignment

  ```query MyQuery {
  assignment(id: "1") {
    submissionsConnection(filter: {states: [unsubmitted, submitted, graded, pending_review]}) {
      nodes {
        _id
        submissionDraft {
          body
        }
      }
    }
  }
}```

** you should see a submission with a null submission draft

* in the rails console, you will need to add a submission
  draft with a body to that submission
** sub = Submission.find(1) // or whatever your submission ID is
** draft = SubmissionDraft.create!(submission: sub,
   submission_attempt = sub.attempt + 1)
** draft.body = 'some text'
** draft.save!
** sub.submission_drafts = [draft]
** sub.save!

* run the query in graphql again, and you should see something
  like:

```
{
  "data": {
    "assignment": {
      "submissionsConnection": {
        "nodes": [
          {
            "_id": "31",
            "submissionDraft": {
              "body": "some text"
            }
          }
        ]
      }
    }
  }
}
```

fixes COMMS-2263

Change-Id: I62877ac43727f02191c84a98e2609bd8f9987733
Reviewed-on: https://gerrit.instructure.com/203674
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Reviewed-by: Cameron Matheson <cameron@instructure.com>
Tested-by: Jenkins
QA-Review: Matthew Lemon <mlemon@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-08-06 17:37:15 +00:00
Ed Schiebel 7e41826748 fix <Select> deprecation in NewCourseModal
Replace Select with CanvasSelect
Replace legacy TextInput with the new TextInput

fixes ADMIN-2771

test plan:
  - go to account courses page, /accounts/self
  - click the "+Course" button
  > expect the 2 TextInputs to accept input
  > expect the subaccount and term selects to work as expected
  > expect some nice screenreader messages as you interact with the
    selects
  > expect the course to be created with the right data
    when clicking on the "Add Course" button
  - try it again, but do something to make it fail (I set a breakpoint
    at courses_controller.rb line 791 and set @course=nil)
  > expect to get an error flash message
  - click on the "details" button
  > expect the details popup to be above the Modal's overlay and you
    can dismiss it.

Change-Id: I8612b086a8812660c82c9d243746ed211deb5a59
Reviewed-on: https://gerrit.instructure.com/202575
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-08-06 17:23:46 +00:00
Matt Sessions eec763a245 Add grading status filter to submissions connection
refs: MBL-12809

Test Plan:
 - Create an assignment with a submission that needs grading, and
   a submission that is already graded
 - request submissions for the assignment through gql using the
   gradingStatus filter for needs_grading
 - It should return the submission requiring grading and
   not the other one

Change-Id: I2ac6b7e95819122d085898255a352a002aefa9f7
Reviewed-on: https://gerrit.instructure.com/202156
Tested-by: Jenkins
Reviewed-by: Cameron Matheson <cameron@instructure.com>
QA-Review: Matt Sessions <msessions@instructure.com>
Product-Review: Matt Sessions <msessions@instructure.com>
2019-08-06 16:27:32 +00:00
Ryan Shaw 0da4de9d32 fix more specs relying on babel ie11 transpilation
Change-Id: I8141f30b9da5ba2a91791f02e4755d5df13a0ea1
Reviewed-on: https://gerrit.instructure.com/203949
Tested-by: Jenkins
Reviewed-by: Steven Burnett <sburnett@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-08-06 15:34:17 +00:00
Matthew Lemon 1f903ce7aa update files API for uploading via url
fixes COMMS-2257

This adds a flag to the Files API when uploading a file via a url to be
able to avoid automatically submitting the assignment associated with
the file. The flag is defaulted to true to avoid any issues that could
arrise from other services depending on the current API.

Test Plan:
* passes jenkins

Change-Id: I40e569a5126a0d9e5607f1a799269dc7d20204ed
Reviewed-on: https://gerrit.instructure.com/203105
Tested-by: Jenkins
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2019-08-05 20:16:19 +00:00
Ed Schiebel 28ea3000ef Fix Select deprecations with CanvaSelect
this commit add the new CanvasSelect which wraps the new controlled-only
INSTUI Select (single select only) to provide a nearly drop-in
replacement for the deprecated INSTUI Select used in canvas.

This new CanvasSelect is then used in people_search.js and
TimeZoneSelect/index.js to resolve the
deprectation warnings.

changes include an upgrade to ui-select 6.8

closes ADMIN-2775, COREFE-186 COREFE-184

test plan:
  - nav to a course's people page
  - click on the +People button
  > expect the Role and Section selects to work as expected
  - nav to the account's people page
  - click on the pencil icon to the right of a user
  > expect the Time Zone select to show a blank line, then 2 groups
    of time zones
  > expect the select to work as expected
  > expect screenreaders to tell you interesting things as you
    interact with the select

Change-Id: I5dcfb2c1c8ca64071ce9dbf0a194777f10c711cf
Reviewed-on: https://gerrit.instructure.com/202508
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Tested-by: Jenkins
Product-Review: Ed Schiebel <eschiebel@instructure.com>
2019-08-05 19:30:43 +00:00
James Williams f888621298 add streaming templates: part 2
adds template streaming to the following endpoints:

assignments#show
context_modules#index
courses#show
discussion_topics#show
quizzes/quizzes#show
quizzes/quizzes#edit
quizzes/quizzes#history

Change-Id: I2481f3f738077fb0eaef16e6b5f0db3ea6f60c16
Reviewed-on: https://gerrit.instructure.com/202708
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
2019-08-05 19:10:20 +00:00
Jon Willesen de24e581bd direct share quizzes menu items
On the quizzes index page, each quiz has two new menu items for direct
sharing.

flag: direct_share
closes: ADMIN-2785

test plan:
- new menu items are only there when the feature flag is on
- new menu items are only there when the user can actually manage
  quizzes

Change-Id: I437d3d918fea94559702c2817b84812305574746
Reviewed-on: https://gerrit.instructure.com/203187
Tested-by: Jenkins
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2019-08-05 16:52:45 +00:00
Jon Willesen 003f28e1f4 modules direct share menu items
closes: ADMIN-2781
flag: direct_share

test plan:
- NOTE: the modules page is cached, so you might have to wait a minute
  or refresh a couple times in order for changes to show up after you
  change the flag.
- teacher view of modules should have new menu items only when the
  feature flag is on
- This applies to both modules and module items
- Should also work when modules is the course home page

Change-Id: I5db1ff3c5ffffaaef19b01e9f6e1f54fa3b6026b
Reviewed-on: https://gerrit.instructure.com/203460
Tested-by: Jenkins
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2019-08-05 16:52:28 +00:00
Jon Willesen bb392e94f7 Add direct share menu items to pages index
On the pages index page, each page will have two new menu items: "Send
to..." and "Copy to...". Right now these do nothing except log a console
message.

flag: direct_share
closes: ADMIN-2784

test plan:
- with the feature flag off, there are no new menu items
- with the feature flag on, the new menu items show up
- clicking on the menu items just sends a message to the console

Change-Id: I7de2affb9326cabe6ebf02aa1da927fb5bab51d8
Reviewed-on: https://gerrit.instructure.com/202889
Tested-by: Jenkins
Reviewed-by: Mysti Lilla <mysti@instructure.com>
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Jon Willesen <jonw+gerrit@instructure.com>
2019-08-05 16:51:38 +00:00
Steven Burnett 746c3c39b8 add comment read state to a2
Note we modified the submission comment tests to be without a role query
selector.  This is because instui 5 has a bug this will be fixed in
instui 6

fixes COMMS-1945 COMMS-1942

Test Plan:
- Create a submission make sure its unread by your student
  `submission.mark_unread(user)`
- create several comments for the submission
- as the student visit the a2 student view with comments
- notice there is a count of all the unread dots
- notice all the dots next to the comments
- mark them read via console by creating a
  ViewedSubmissionComment with user and submission comment
  `ViewedSubmissionComment.create!(user:user, submission_comment:sc)

Change-Id: Ica2fb9432941e3f48a46da508698720c17d4b7e4
Reviewed-on: https://gerrit.instructure.com/203593
Tested-by: Jenkins
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
QA-Review: Landon Gilbert-Bland <lbland@instructure.com>
Product-Review: Steven Burnett <sburnett@instructure.com>
2019-08-05 15:40:04 +00:00