add student anonymous discussions setting
fixes VICE-2255 flag=discussion_anonymity note 1: changing this settings will not persist as the backend portion will happen in a different ticket note 2: I had to put checkbox inside view even if checkbox group wants only checkbox children because it was the best way i can indent it. i added it to jest's ignored errors test pilan: - with discussion redesign ff off but discussion anonymity ff on, - visit discussion index page as a teacher - verify that when you open the top right cog menu - you do not see a Create anonymous discussion topics checkbox - turn on both react discussions post and discussion anonymity ff's - revisit index - verify that cog menu checkbox has a Create anonymous discussion topics checkbox - verify that it is only enabled if parent Create discussion topics is checked Change-Id: I8fb22b10955d952a90d7c6c03c137cfa9a097ffd Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/278783 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Drake Harper <drake.harper@instructure.com> QA-Review: Drake Harper <drake.harper@instructure.com> Product-Review: Drake Harper <drake.harper@instructure.com>
This commit is contained in:
parent
ce8a76cfa6
commit
784829e593
|
@ -415,6 +415,7 @@ class DiscussionTopicsController < ApplicationController
|
|||
},
|
||||
discussion_topic_menu_tools: external_tools_display_hashes(:discussion_topic_menu),
|
||||
student_reporting_enabled: Account.site_admin.feature_enabled?(:discussions_reporting),
|
||||
discussion_anonymity_enabled: @context.feature_enabled?(:react_discussions_post) && Account.site_admin.feature_enabled?(:discussion_anonymity),
|
||||
discussion_topic_index_menu_tools: (@domain_root_account&.feature_enabled?(:commons_favorites) ?
|
||||
external_tools_display_hashes(:discussion_topic_index_menu) : []),
|
||||
}
|
||||
|
|
|
@ -90,6 +90,7 @@ const ignoredErrors = [
|
|||
/Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>/,
|
||||
/validateDOMNesting\(...\): %s cannot appear as a child of <%s>/,
|
||||
/WARNING: heuristic fragment matching going on!/,
|
||||
/Warning: Failed prop type: Expected one of Checkbox in CheckboxGroup but found `View`/,
|
||||
/You are using the simple \(heuristic\) fragment matcher, but your queries contain union or interface types./,
|
||||
/You seem to have overlapping act\(\) calls/
|
||||
]
|
||||
|
|
|
@ -259,6 +259,17 @@ describe DiscussionTopicsController do
|
|||
expect(response).to be_successful
|
||||
expect(assigns[:js_env][:DIRECT_SHARE_ENABLED]).to be(false)
|
||||
end
|
||||
|
||||
it "sets discussions reporting and anonymity when their flags are enabled" do
|
||||
Account.site_admin.enable_feature! :react_discussions_post
|
||||
Account.site_admin.enable_feature! :discussions_reporting
|
||||
Account.site_admin.enable_feature! :discussion_anonymity
|
||||
|
||||
user_session(@teacher)
|
||||
get 'index', params: { course_id: @course.id }
|
||||
expect(assigns[:js_env][:student_reporting_enabled]).to be(true)
|
||||
expect(assigns[:js_env][:discussion_anonymity_enabled]).to be(true)
|
||||
end
|
||||
end
|
||||
|
||||
describe "GET 'show'" do
|
||||
|
|
|
@ -38,6 +38,7 @@ QUnit.module('DiscussionSettings component', suiteHooks => {
|
|||
allow_student_forum_attachments: true,
|
||||
allow_student_discussion_editing: true,
|
||||
allow_student_discussion_reporting: true,
|
||||
allow_student_anonymous_discussion_topics: true,
|
||||
grading_standard_enabled: false,
|
||||
grading_standard_id: null,
|
||||
allow_student_organized_groups: true,
|
||||
|
@ -59,7 +60,8 @@ QUnit.module('DiscussionSettings component', suiteHooks => {
|
|||
|
||||
suiteHooks.beforeEach(() => {
|
||||
ENV = {
|
||||
student_reporting_enabled: true
|
||||
student_reporting_enabled: true,
|
||||
discussion_anonymity_enabled: true
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -76,17 +78,6 @@ QUnit.module('DiscussionSettings component', suiteHooks => {
|
|||
equal(modalOpenSpy.callCount, 1)
|
||||
})
|
||||
|
||||
test('should find 4 checked boxes', () => {
|
||||
tree = mount(
|
||||
<DiscussionSettings
|
||||
{...makeProps({
|
||||
permissions: {change_settings: true}
|
||||
})}
|
||||
/>
|
||||
)
|
||||
equal(document.querySelectorAll('[checked]').length, 4)
|
||||
})
|
||||
|
||||
test('should find 0 checked boxes', () => {
|
||||
tree = mount(
|
||||
<DiscussionSettings
|
||||
|
@ -96,7 +87,8 @@ QUnit.module('DiscussionSettings component', suiteHooks => {
|
|||
allow_student_discussion_topics: false,
|
||||
allow_student_forum_attachments: false,
|
||||
allow_student_discussion_editing: false,
|
||||
allow_student_discussion_reporting: false
|
||||
allow_student_discussion_reporting: false,
|
||||
allow_student_anonymous_discussion_topics: false
|
||||
}
|
||||
})}
|
||||
/>
|
||||
|
@ -111,14 +103,14 @@ QUnit.module('DiscussionSettings component', suiteHooks => {
|
|||
equal(checkboxes.length, 1)
|
||||
})
|
||||
|
||||
test('should render 5 checkbox if can change settings', () => {
|
||||
test('should render 6 checkbox if can change settings', () => {
|
||||
tree = shallow(
|
||||
<DiscussionSettings
|
||||
{...makeProps({isSettingsModalOpen: true, permissions: {change_settings: true}})}
|
||||
/>
|
||||
)
|
||||
const checkboxes = tree.find('Checkbox')
|
||||
equal(checkboxes.length, 5)
|
||||
equal(checkboxes.length, 6)
|
||||
})
|
||||
|
||||
test('should set state correctly with all true settings', () => {
|
||||
|
@ -128,7 +120,7 @@ QUnit.module('DiscussionSettings component', suiteHooks => {
|
|||
/>
|
||||
)
|
||||
tree.setProps({isSavingSettings: false})
|
||||
equal(tree.instance().state.studentSettings.length, 4)
|
||||
equal(tree.instance().state.studentSettings.length, 5)
|
||||
})
|
||||
|
||||
test('should set state correctly with false props', () => {
|
||||
|
@ -162,7 +154,8 @@ QUnit.module('DiscussionSettings component', suiteHooks => {
|
|||
allow_student_discussion_topics: true,
|
||||
allow_student_forum_attachments: true,
|
||||
allow_student_discussion_editing: true,
|
||||
allow_student_discussion_reporting: true
|
||||
allow_student_discussion_reporting: true,
|
||||
allow_student_anonymous_discussion_topics: true
|
||||
}
|
||||
const userSettings = {
|
||||
markAsRead: false,
|
||||
|
@ -188,7 +181,8 @@ QUnit.module('DiscussionSettings component', suiteHooks => {
|
|||
allow_student_discussion_topics: true,
|
||||
allow_student_forum_attachments: false,
|
||||
allow_student_discussion_editing: true,
|
||||
allow_student_discussion_reporting: false
|
||||
allow_student_discussion_reporting: false,
|
||||
allow_student_anonymous_discussion_topics: false
|
||||
}
|
||||
const userSettings = {
|
||||
markAsRead: false,
|
||||
|
|
|
@ -27,13 +27,15 @@ import {Checkbox, CheckboxGroup} from '@instructure/ui-checkbox'
|
|||
import Modal from '@canvas/instui-bindings/react/InstuiModal'
|
||||
import {ScreenReaderContent} from '@instructure/ui-a11y-content'
|
||||
import {IconSettingsLine} from '@instructure/ui-icons'
|
||||
import {View} from '@instructure/ui-view'
|
||||
import propTypes from '../propTypes'
|
||||
|
||||
const STUDENT_SETTINGS = [
|
||||
'allow_student_forum_attachments',
|
||||
'allow_student_discussion_editing',
|
||||
'allow_student_discussion_topics',
|
||||
'allow_student_discussion_reporting'
|
||||
'allow_student_discussion_reporting',
|
||||
'allow_student_anonymous_discussion_topics'
|
||||
]
|
||||
|
||||
export default class DiscussionSettings extends Component {
|
||||
|
@ -119,6 +121,19 @@ export default class DiscussionSettings extends Component {
|
|||
label={I18n.t('Create discussion topics')}
|
||||
value="allow_student_discussion_topics"
|
||||
/>
|
||||
{ENV.discussion_anonymity_enabled && (
|
||||
<View as="div" padding="0 0 0 medium">
|
||||
<Checkbox
|
||||
id="allow_student_anonymous_discussion_topics"
|
||||
disabled={
|
||||
this.props.isSavingSettings ||
|
||||
!this.state.studentSettings.includes('allow_student_discussion_topics')
|
||||
}
|
||||
label={I18n.t('Create anonymous discussion topics')}
|
||||
value="allow_student_anonymous_discussion_topics"
|
||||
/>
|
||||
</View>
|
||||
)}
|
||||
<Checkbox
|
||||
id="allow_student_discussion_editing"
|
||||
disabled={this.props.isSavingSettings}
|
||||
|
|
Loading…
Reference in New Issue