closes CNVS-21178
makes sure that we aren't showing users their pseudonyms for
delted authentication providers.
TEST PLAN:
1) create an authentication provider for facebook (For example)
2) get a pseudonym associated with it for a user
3) delete the AAC for facebook
4) confirm you no longer see that pseudonym in /users/self
Change-Id: Idf693b9d3cba616146df87a40c016c2356651806
Reviewed-on: https://gerrit.instructure.com/56530
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
fixes CNVS-20675
The anonymity rules need not apply if the rubric assessment is being
used for grading, as opposed to for a peer review.
test plan:
- as a teacher, create an assignment with anonymous peer reviews, and
assign one student (the reviewer) to assess another (the reviewed).
(Make sure the assignemtn has a rubric associated with it as well.)
- as the reviewed, complete the assignment.
- as the reviewer, complete the peer review by using the rubric to create
an assessment.
- as the teacher, grade the assignment, and use the rubric to create an
assessment.
- as the reviewed, navigate to the submission details, and click the
button in the upper right hand corner to 'show rubric'.
- observe that in the dropdown you see the teacher's name for the rubric
assessment the teacher completed, and you see 'Anonymous User' for the
rubric assessment the reviewer created.
Change-Id: I2614579d420aa7f40c8d0f9d7feb24ba39266ad8
Reviewed-on: https://gerrit.instructure.com/56367
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Product-Review: Jason Sparks <jsparks@instructure.com>
closes CNVS-20947
Allow users to "delete" auth configs without
violating foreign key constraints.
Also means updating all places that use the
association interface to a new method
that strips out inactive AACs
TEST PLAN:
1) create a new AAC with the IDP of your choice
2) create some pseudonyms that are attached to the new AAC
3) try to delete the AAC from the authorization config area
4) it should not blow up
Change-Id: Iff56fd8aa2ee66a2468191a9c880a99862d83927
Reviewed-on: https://gerrit.instructure.com/55808
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
Added necessary UI code to allow LTI based grade passback.
UI allows for side-by-side launch of powerschool app
as well as LTI based. LTI based tools are launched within an iframe
in a new dialog.
Test Plan
* configure powerschool grade posting by enabling sis feature flag
* /accounts/:id/settings
* "post grades to sis" -> on
* /courses/:id/settings
* SIS ID -> random number
* add an assignment, make sure that "post grades to sis" is checked
* navigate to gradebook, verify that "post grades" button is visible
* verify that "post grades" button is not visible when no
assignments are present
* click on button and verify that current powerschool modal launches
* add sisapp lti launch
* get local sisapp running
* /accounts/1/settings/configurations
* add app, by url http://<local sisapp>/post_grades/config.xml
* navigate to gradebook, verify that both powerschool post and new lti
post are available in drop down menu
* test for #successability
Additional considerations:
Drop down menu supports up to 10 post grades configurations. Add
multiple sisapp endpoint to view ellipsis record indicating that no
more configurations will be displayed
closes CNVS-20529
Change-Id: I988eb55555027903b6dab0692ce8514569a81345
Reviewed-on: https://gerrit.instructure.com/55384
Tested-by: Jenkins
Reviewed-by: Mark Severson <markse@instructure.com>
QA-Review: Derek Hansen <dhansen@instructure.com>
Product-Review: Jonathan Featherstone <jfeatherstone@instructure.com>
fixes CNVS-20948
test plan:
- make a quiz with multiple questions
and a quiz group with questions of
different types in it
- ping the API endpoint for this quiz
"api/v1/courses/:id/quizzes/:id"
- the question_types array contains
the types from the quiz group
and the types of the non-nested
questions
Change-Id: I647499707fa024a19fac564688653db3c9f9e4c7
Reviewed-on: https://gerrit.instructure.com/55993
Reviewed-by: Ryan Taylor <rtaylor@instructure.com>
Tested-by: Jenkins
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Ryan Taylor <rtaylor@instructure.com>
instead of undeterministically splitting the ties apart in different
buckets. this also fixes a fragile spec
Change-Id: Ia07c0bc7f1f1e56cc9d04d2d003d7012b499cb57
Reviewed-on: https://gerrit.instructure.com/56278
Reviewed-by: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
closes CNVS-21124
Course notifications for catalog were not getting sent out.
Upon sending them manually to debug, we found that courses with
no "prior_version" were throwing an exception from the predicate
block that evaluates whether to send the new_course notification.
This bombs the whole job (catalog sends notifications once an hour,
and a single exception stops the job from running).
This is not usually a problem when sending notifications in a save
cycle, but these records are being loaded and broacasted with no
save, which is why they break in this case.
TEST PLAN:
1) load a course from the database but don't save it
2) call "broadcast_notifications"
3) it should not throw an exception
Change-Id: Ia9a07080b5b54e4f732fb51722a678650cce3b76
Reviewed-on: https://gerrit.instructure.com/56186
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins
Product-Review: Bryan Petty <bpetty@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Fixes CNVS-20994
Test Plan
- Deleting any quiz submission should not delete its events.
Change-Id: I1b8d80db8d62da753de3d7568495e7dac17b1ca9
Reviewed-on: https://gerrit.instructure.com/56018
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Brian Finney <bfinney@instructure.com>
QA-Review: Ryan Taylor <rtaylor@instructure.com>
Product-Review: Ryan Taylor <rtaylor@instructure.com>
authentication
Fixes PFS-1084
Parent Registration:
When a Saml config is designated for Parent Registration the parent
signing up will be redirected to a Saml login page where they will log
in with their child's credentials. After login the child user's
Saml session will be ended and the parent registration process will complete.
Parent Adding Student:
When a Saml config is designated for Parent Registration the parent
adding another observee will be redirected to a Saml login page
where they will log in with their child's credentials. After login the child user's
Saml session will be ended and the observee creation process
will complete.
---------------------------------------
TEST PLAN:
SETUP:
1) In your account settings check the box for 'Self Registration' (and
either of the sub-options)
2) Add the following users to your account (these will be the students):
billyjoel
eltonjohn
3) In Authentication Settings add a SAML authentication service
and enter the following fields (I've set up a remote SAML Idp):
IdP Entity ID: http://107.170.212.143/saml2/idp/metadata.php
Log On URL: http://107.170.212.143/simplesaml/saml2/idp/SSOService.php
Log Out URL:
http://107.170.212.143/simplesaml/saml2/idp/SingleLogoutService.php
Certificate Fingerprint:
9C:11:68:93:95:CD:18:01:EC:52:2B:9E:22:7F:73:55:ED:6D:82:D4
Parent Registration: check
TEST:
Parent Registration:
* Go to '/login/canvas'
* Click on the signup banner
* sign up as a parent for billyjoel or eltonjohn
(on SAML login page the password for either user is: tantrum)
Add Student:
* Log in as a parent user w/ a Canvas Auth login
* Go to '/profile/observees'
* Add Student 'billyjoel' or 'eltonjohn'
Authentication Settings (new parent reg checkbox):
* Go to Authentication Settings
* Add a second SAML config
* check the parent registration checkbox
- it should warn that selection will deselect the other
and in fact do so upon save.
- the selected config is the one used for
parent reg/add student
---------------------------------------
Change-Id: Ief83b604fc252c88dbb912c56de65d8620fe802f
Reviewed-on: https://gerrit.instructure.com/49691
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
with spring and preloading, this code can be hit before the db exists
Change-Id: I0f0efbb96ba5cbc0c2461a84ab823a14dbb38f74
Reviewed-on: https://gerrit.instructure.com/55942
Tested-by: Jenkins
Reviewed-by: Ethan Vizitei <evizitei@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
fixes CNVS-20119; fixes CNVS-20139; fixes CNVS-20140;
fixes CNVS-20424; fixes CNVS-20426
This adds a new Dashboard view when using New UI.
Note: This is for New UI only. Legacy UI should only show Recent Activity on
dashboard (as it always has).
Test Plan:
- Login and make sure new UI is on
- Go to / and see the new Dashcard view.
It should look similar to: http://cl.ly/image/2R2K28183h2G
- Switch to "Recent Activity" by using the toggle
It should look similar to: http://cl.ly/image/2l1V1h421b0d
- Dashboard Cards have quick links on the bottom to quickly let you
navigate to within a course. These include:
- Discussions (if available)
- Announcements (if available)
- Files (if available)
- Assignments (if available)
If activity has happened in Announcements, Assignments or Discussions, an
active state is given to the quick link that makes it look like this:
http://cl.ly/image/1d3Y0T3w1Q01
Change-Id: Ia07f7f2711d6e0625d26d7ea5d050ccb51dc0128
Reviewed-on: https://gerrit.instructure.com/53043
Reviewed-by: Jennifer Stern <jstern@instructure.com>
Product-Review: Colleen Palmer <colleen@instructure.com>
Tested-by: Jenkins
QA-Review: Adam Stone <astone@instructure.com>
Grading Periods previously could overlap in arbitrary ways.
This adds a server side validation to ensure that when a Grading
Period is persisted it will not overlap with existing Grading
Periods in the same Grading Period Group. Grading Periods in
different groups are not validated in this way. The front end will
report errors if attempting to save a grading period that overlaps.
Our definition of overlapping is any two grading periods
intersecting each other except if the end date of an earlier
grading period is equal to the start date of a later grading period
These two grading periods would be considered overlapping
(when in the same group):
GradingPeriod.new(
start_date: 0.months.ago, end_date: 2.months.from_now
)
GradingPeriod.new(
start_date: 1.months.from_now, end_date: 3.months.from_now
)
These two grading periods do *NOT* overlap, even thought the
end_date of the first is the same as the start date of the
second (again, these would need to be in the same group):
GradingPeriod.new(
start_date: 0.months.from_now, end_date: 2.months.from_now
)
GradingPeriod.new(
start_date: 2.months.from_now, end_date: 3.months.from_now
)
Fixes CNVS-19858
Change-Id: I0c901fa35f3225186948bbd8d61ef368cd15c939
Reviewed-on: https://gerrit.instructure.com/53953
Tested-by: Jenkins
Reviewed-by: Dylan Ross <dross@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Derek Bender <dbender@instructure.com>
students with unexcused submissions weren't always being preferred,
making a spec fail often
Test plan:
* setup a group assignment
* excuse the assignment for all-but-one members of each group
* when you load the speedgrader, the assignment should display as not
* excused
Change-Id: If08d8e009813c47e71d33951947eb8d509741189
Reviewed-on: https://gerrit.instructure.com/56100
Tested-by: Jenkins
Reviewed-by: Cody Poll <cpoll@instructure.com>
Reviewed-by: Derek Bender <dbender@instructure.com>
QA-Review: Adrian Foong <afoong@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
closes CNVS-5620
Test plan:
The display/sort order of gradebook.csv should match the web gradebook
Change-Id: I87fa21fd2e8c758dc74a1dab9e0f3208026fb0a3
Reviewed-on: https://gerrit.instructure.com/55325
Tested-by: Jenkins
Product-Review: Cameron Matheson <cameron@instructure.com>
Reviewed-by: Josh Simpson <jsimpson@instructure.com>
QA-Review: Adrian Foong <afoong@instructure.com>
closes CNVS-15228
Test plan:
* set a course-level grading scheme
* make sure that new letter-graded assignments use that grading
scheme (rather than the default canvas scheme)
Change-Id: I78f256a74a5dc0b3346a1b8267ee26e27a5ad652
Reviewed-on: https://gerrit.instructure.com/55779
Tested-by: Jenkins
Reviewed-by: Josh Simpson <jsimpson@instructure.com>
QA-Review: Adrian Foong <afoong@instructure.com>
Product-Review: Cameron Matheson <cameron@instructure.com>
fixes CNVS-19091
test plan:
- make a quiz where correct answers are visible
after a final attempt and give them two attempts
- include some questions that require manual
grading and some that do not
- as a student submit two attempts
- note that you do NOT get an error saying
'Answers will be shown after your last attempt'
once you have submitted your second attempt
Change-Id: I4ed1c7c775ef730afb963ed1d15f844e2244602f
Reviewed-on: https://gerrit.instructure.com/55480
Tested-by: Jenkins
Reviewed-by: Brian Finney <bfinney@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
closes CNVS-20912
test plan:
* change the login attribute
* ensure the error message you get when it can't find your login
shows the value you expect
Change-Id: I8fbad8c4df5f2dc5b01cf43d5d6c43ab7be97972
Reviewed-on: https://gerrit.instructure.com/55665
Tested-by: Jenkins
Reviewed-by: Ethan Vizitei <evizitei@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Fixes CNVS-19664
Modified list quiz submissions API to check for all submissions which
needs grading and trigger a delayed grading job. Also added a new
field 'overdue_and_needs_submission' to the returned JSON.
Test Plan
- Check the overdue_and_needs_submission field for ongoing test. It should be false.
- Check the overdue_and_needs_submission field for test which is overdue but workflow state is still untaken.
It should be true and a delayed job to grade that quiz should be triggered.
- Check if the overdue quiz is graded and workflow state is changed to complete and
overdue_and_needs_submission is changed to false.
- Check the above scenarios with teacher role and student role.
Change-Id: I420ade5b6b2d522aa79d1f13f865ce0e1169aae0
Reviewed-on: https://gerrit.instructure.com/55269
Tested-by: Jenkins
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Reviewed-by: Cameron Sutter <csutter@instructure.com>
Product-Review: Abhishek Kumar Singh <asingh@instructure.com>
closes CNVS-19458
closes CNVS-19542
closes CNVS-19543
closes CNVS-19462
closes CNVS-20954
Add a "login with X" buttons that only displays
if the account has configured OAuth. The button
just goes straight to the login flow. Also tries to do it
in an abstract enough way that other OAuth providers will be easy
to add buttons.
Also add icons to pseudonyms so that you can tell which is which
from "/users/self"
TEST PLAN:
1) configure a facebook AAC (and probably do these for each oauth
provider)
2) visit /login/canvas
3) click the AAC-specific vendor login button
4) complete the AAC-specific vendor login flow
5) go look at "/users/self" and make sure you can identify your
oauth pseudonym
Change-Id: Ie5e085cd65512286858cf5be5caffd4e7431a6c7
Reviewed-on: https://gerrit.instructure.com/55172
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins
Product-Review: Ethan Vizitei <evizitei@instructure.com>
closes CNVS-19452
* add the column and foreign key, uniquely index it,
and replace the old unique index to make sure it's null
* change lookup of pseudonyms on log in. CAS/SAML/LDAP
look for matching or non-namespaced pseudonyms. OAuth
looks only for matching.
* update API for creating/exposing the provider info
* update canvas_authentication modulation so it's only forced to true
when deleting the LAST aac
test plan:
* create a pseudonym for a specific provider (via the API)
* ensure that even it matches for another provider, it's
not found when you try to log in
* check a CAS login will find a pseudonym with no provider,
or the correct one
* check that a OAuth login won't find a pseudonym not
associated with any provider
* finally, check that a OAuth login _will_ work with a
matching pseudonym
Change-Id: I5d9ef8a992c6e0f6e1d8e13e4fb87d25304d982e
Reviewed-on: https://gerrit.instructure.com/55117
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
QA-Review: August Thornton <august@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
* get rid of has_one
* get rid of several methods on account that are unused or trivially
replaced
Change-Id: I5a4f1e342b2bd465a240bbe701c2ab883b1f3878
Reviewed-on: https://gerrit.instructure.com/55240
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
fixes CNVS-18374
test plan:
- make a quiz and take it as a student
- view it in speed grader and check that
the Submitted time is accurate
Change-Id: Ic6d727134542664308e9a2378ea196d825660120
Reviewed-on: https://gerrit.instructure.com/55279
Tested-by: Jenkins
Reviewed-by: Brian Finney <bfinney@instructure.com>
QA-Review: Ben Bolton <bbolton@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
test plan:
- have a module in a course
- open your browser's debugging tools / network tab
- add multiple items (assignments, files, etc.) to a module
by shift-clicking to multi-select in the "add module item"
dialog
- confirm that each POST to /courses/X/modules/X/items uses
a unique item[position] value
fixes CNVS-20662
Change-Id: Idd465ca85ebf97526e6cf7899a7082116ed3e3ed
Reviewed-on: https://gerrit.instructure.com/55642
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
fixes CNVS-20526
test plan:
- create a quiz that shuffles ansers
- as a student get the questions for said quiz via
the API
'api/v1/quiz_submissions/:submission_id/questions'
- the answers are shuffled
- as a teacher do the same
- the answers are not shuffled
- make sure non shuffleable questions show up properly
Change-Id: I8a197e8a6005488fc5adccfec937bde9d259df28
Reviewed-on: https://gerrit.instructure.com/54604
Tested-by: Jenkins
Reviewed-by: Brian Finney <bfinney@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
fixes the permissions of editing the discussions page
after you have been concluded in a course
fixes CNVS-20705
test plan:
- create a student
- create a discussion with that student
- as a teacher conclude his enrollment (but keep course active)
- as the student go back in and try to edit the discussion notice you can't
Change-Id: I9a29e923714783e618a8c5f4120ae4277cd6dab1
Reviewed-on: https://gerrit.instructure.com/55359
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Adam Stone <astone@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
fixes CNVS-20737
When working with files, the modified_at attribute is now updated when
the modified_by attribute is changed. We are doing this because
updated_at doesn't property reflect the file change, just the record
change.
Test Plan
Given you're using something like Postman to test the api
When you upload a file via the api
Then the 'modified_at' attribute should be set to the time it was
modified
Given you're using something like Postman to test the api
And you have all ready uploaded a file
When you update the file content (not just renaming it)
Then the 'modified_at' attribute should be set to the time it was
modified
Given you're using something like Postman to test the api
And you have all ready uploaded a file
And the file that was uploaded modified_at attribute is null (because
the file was uploaded before this change)
When you "GET" the file via the api
Then the 'modified_at' attribute should be set to the same value as its
"updated_at" attribute.
Change-Id: I6b1fe761d0a0ed29ce436b178ced7f4c79bb1039
Reviewed-on: https://gerrit.instructure.com/55315
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Sterling Cobb <sterling@instructure.com>
QA-Review: Jahnavi Yetukuri <jyetukuri@instructure.com>
remove attachment_id foreign key constraint from
the gradebook_csvs table to prevent foreign key constraint
violation. also added `has_many :progresses` to the course
class to keep the progress_id foreign key on the gradebook_csv
table
closes CNVS-20549
test plan
ensure a an admin user (a user on a different shard
than the course shard) can export a gradebook csv
successfully
Change-Id: Iae9d0201192320ed45d5e901867ae20a9eb7ab1d
Reviewed-on: https://gerrit.instructure.com/54494
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Robert Lamb <rlamb@instructure.com>
Product-Review: Dylan Ross <dross@instructure.com>
fixes CNVS-20120
- Updates UsersController#user_dashboard to add course favorite
information to js_env.Add icon info to Course.default_tabs.Update
- I18nUtilities helper methods to use `I18n.t` instead of just `t`, so
that the module can be included outside of a decendent of ActionView.Add
- SectionTabHelper. Includes method for rendering `section_tabs` to html,
a separate method (`available_section_tab`) so section tabs can be
accessed without rendering anything to the page, and a new class,
- SectionTabTag, which is responsible for constructing html to render a
section tab.Add SectionTabPresenter, which takes a tab object (just a
hash; accessed via a context class’s `.default_tabs` method) and
translates it into an object for the view.
- Add `CourseForMenuPresenter`, which translates a course into a hash
including only information necessary for construction of the section
tab menu, or the new dashboard card.
- Add `AvailableSectionTabs` to encapsulate available_section_tabs
logic.
test plan:
- Validate that existing section menu navigation with a course context
works.
- Validate that new dashboard cards show correct course information, as
well as correct links.
Change-Id: Ief2cfc350991758e019a8a56ce23d29634470dd0
Reviewed-on: https://gerrit.instructure.com/54578
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Adam Stone <astone@instructure.com>
Tested-by: Jenkins
Product-Review: Simon Williams <simon@instructure.com>
changed_state is defined by broadcast_policy, and uses an internal
broadcast policy variable called prior_version that isn't created if
save_without_broadcasting is called. send to stream blocks shouldn't
rely on it.
fixes CNVS-20556
test plan:
- with sentry enabled,
- import a discussion topic
- it shouldn't create an error report
Change-Id: Iea8a7b240b547d52d26daf7a6390bc8c3a1de976
Reviewed-on: https://gerrit.instructure.com/54471
Tested-by: Jenkins
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
QA-Review: Adam Stone <astone@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
This provides a way to query the learning outcome object to see if it is
assessed in a particular course.
Previously it was only possible to query to see if it had been assessed
anywhere. This is problematic because we sometimes do care whether the
assessing was done for a particular course (such as deciding whether to
allow the outcome to be removed from a course)
Add course_ids_where_assessed and others to learning outcome model
We have need now to know if a particular outcome has been assessed in
a given course (or context), that is not necessarily the context stored
on the outcome object itself.
For example, when an Account level outcome is imported into a course, it
maintains the account and account ID as its context. The problem then,
is how do we know whether this outcome has been assessed in the course
in which it has been imported, and in which we are now viewing the
object?
The answer, is to add an 'assessed' trait on the outcome link object
returned by the API. This outcome link contains information about the
context that we are interested in. In this example, it is the course in
which it was imported.
Using this new trait, clients (including our UI) can tell if a student
has been assessed with this outcome in the particular context, rather
than just globally.
Refs CNVS-19806
Test Plan:
- Make an account level outcome
- import that outcome into two courses
- assess the outcome in one of the courses
- from a rails console, call the assessed? method and pass in each
course object. For the course that was assessed it should return
true, and for the other it should return false.
- Get a learning outcome object
- LearningOutcome.find(<id)
- LearningOutcome.where(context_id: <course_id>)
- Call the assessed? method and pass in the course or course id
- learning_outcome.assessed?(course.id)
- To get an array of all courses:
- Course.all
- from the API, request the outcome links for the course.
- ensure that the link for the course in which the outcome was
assessed has the 'assessed' field set to 'true', and the other has
it set to 'false'
Change-Id: If9a0260289704944145cc3a0929e1183656dfb68
Reviewed-on: https://gerrit.instructure.com/52509
Tested-by: Jenkins
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Reviewed-by: John Corrigan <jcorrigan@instructure.com>
Product-Review: Benjamin Porter <bporter@instructure.com>
This should make event rebuilding equivalent with versions rebuilding
in the most substantial ways (doesn't cause bug in quiz showing with
unsupported question types).
Refs CNVS-20069
Test Plan:
- contact Ryan for DB migration script
- Run custom migration
- Delete a single quiz submission with raw SQL query
- Rebuild that quiz_submission from the events log
- Confirm that the quiz is viewable, contains the same questions, and
is properly graded.
Change-Id: Ia66a3f15e86e5dffd8ba2eff1ce5ff1ce663ad9b
Reviewed-on: https://gerrit.instructure.com/55164
Tested-by: Cameron Sutter <csutter@instructure.com>
Reviewed-by: Brian Finney <bfinney@instructure.com>
QA-Review: Robert Lamb <rlamb@instructure.com>
Product-Review: Ryan Taylor <rtaylor@instructure.com>
Enables tooling to run for data fix.
Change-Id: Ie0dfe7c91c20040d9ddf5447b03cbd0b791c6987
Reviewed-on: https://gerrit.instructure.com/54414
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
Product-Review: Ryan Taylor <rtaylor@instructure.com>
QA-Review: Ryan Taylor <rtaylor@instructure.com>
refs CNVS-12716
test plan:
- make course with many assessed outcomes
- load the mastery gradebook
- it should load relatively fast
Change-Id: I81a91d58d37e5ae3d5399d59f6e3626af53496ea
Reviewed-on: https://gerrit.instructure.com/53493
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com>
Tested-by: Jenkins
Product-Review: Hilary Scharton <hilary@instructure.com>
fixes CNVS-20673
test plan
- accounts/self/settings should have checkbox to
include students in global surveys not checked
by default
Change-Id: Ibc43d403fc2a46782191ed62d7ca80328a4484e1
Reviewed-on: https://gerrit.instructure.com/55031
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
fixes CNVS-20168
test plan:
- make a quiz that only tests students on a
subset of its questions (i.e. make a group that
shows 2/4 questions in it) - and can be taken
multiple times
- start taking the quiz as a student
- note the questions that have been chosen and
do not finish the quiz
- hit api/v1/quiz_submissions/:sub_id/questions
- make sure the questions and number of questions
are the same as you see when taking the quiz
- submit the quiz and try again
- note that the questions are probably different
- hit that endpoint again and make sure that the
questions align with the new ones
Change-Id: I8476ee8d27956573980cf2c1603132848b851972
Reviewed-on: https://gerrit.instructure.com/54854
Tested-by: Jenkins
Reviewed-by: Ryan Taylor <rtaylor@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Hilary Scharton <hilary@instructure.com>
Fixes CNVS-20619
Test plan:
- Create and publish a course
- Add a student to the course
- Set all of their notification settings to ASAP
- As a teacher:
- Create, but do not publish, a quiz
- Go to the "assignments" page
- Delete the assignment corresponding to the quiz
- Ensure that the student did not receive a message telling
them that the assignment was created
- Regression test quizzes
Change-Id: Iabb968708e79a3151617f01987fed477eaaff877
Reviewed-on: https://gerrit.instructure.com/54658
Tested-by: Jenkins
Reviewed-by: Ryan Taylor <rtaylor@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Alex Boyd <aboyd@instructure.com>
Fixes CNVS-20745
Test plan:
- Create a user and add an ancillary email address
- Make the relevant communication channel think it has bounced
- If it's the most recent email address you've added in your
Canvas instance, you can do that with the following at a
Rails console:
c = CommunicationChannel.last
c.bounce_count = 3
c.save!
- Verify that a warning icon shows up next to the email address
- Remove the email address
- Re-add exactly the same email address
- Acknowledge the confirmation email you'll receive
- Verify that a warning icon no longer shows up next to the email
address
- Verify that the user can receive notifications via this email
address
Change-Id: I80d0ff5652eb25c105fb9eecf106d173767d7329
Reviewed-on: https://gerrit.instructure.com/55138
Tested-by: Jenkins
Reviewed-by: Andrew Butterfield <abutterfield@instructure.com>
QA-Review: Steven Shepherd <sshepherd@instructure.com>
Product-Review: Alex Boyd <aboyd@instructure.com>