spec: Remove enzyme.mount from coffeescript specs
fixes LF-1424 flag=none test plan: - tests pass Change-Id: Ia36af050a456bcd09fb779e371da62a767df2012 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/344389 Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com> QA-Review: Jacob DeWar <jacob.dewar@instructure.com> Product-Review: Eric Saupe <eric.saupe@instructure.com> Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
This commit is contained in:
parent
b5c7fced14
commit
08cc4b8d6b
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
import DiscussionTopicKeyboardShortcutModal from 'ui/features/discussion_topic/react/DiscussionTopicKeyboardShortcutModal'
|
import DiscussionTopicKeyboardShortcutModal from 'ui/features/discussion_topic/react/DiscussionTopicKeyboardShortcutModal'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {mount} from 'enzyme'
|
import {render} from '@testing-library/react'
|
||||||
|
|
||||||
const SHORTCUTS = [
|
const SHORTCUTS = [
|
||||||
{
|
{
|
||||||
|
@ -50,7 +50,7 @@ const SHORTCUTS = [
|
||||||
QUnit.module('DiscussionTopicKeyboardShortcutModal#render')
|
QUnit.module('DiscussionTopicKeyboardShortcutModal#render')
|
||||||
|
|
||||||
test('renders shortcuts', async function () {
|
test('renders shortcuts', async function () {
|
||||||
const wrapper = mount(<DiscussionTopicKeyboardShortcutModal />)
|
const wrapper = render(<DiscussionTopicKeyboardShortcutModal />)
|
||||||
|
|
||||||
// open the modal by pressing "ALT + f8"
|
// open the modal by pressing "ALT + f8"
|
||||||
const e = new Event('keydown')
|
const e = new Event('keydown')
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {mount} from 'enzyme'
|
import {render} from '@testing-library/react'
|
||||||
import chicago from 'timezone/America/Chicago'
|
import chicago from 'timezone/America/Chicago'
|
||||||
import DueDateCalendarPicker from '@canvas/due-dates/react/DueDateCalendarPicker'
|
import DueDateCalendarPicker from '@canvas/due-dates/react/DueDateCalendarPicker'
|
||||||
import * as tz from '@canvas/datetime'
|
import * as tz from '@canvas/datetime'
|
||||||
|
@ -55,11 +55,11 @@ QUnit.module('DueDateCalendarPicker', suiteHooks => {
|
||||||
})
|
})
|
||||||
|
|
||||||
function mountComponent() {
|
function mountComponent() {
|
||||||
wrapper = mount(<DueDateCalendarPicker {...props} />)
|
wrapper = render(<DueDateCalendarPicker {...props} />)
|
||||||
}
|
}
|
||||||
|
|
||||||
function simulateChange(value) {
|
function simulateChange(value) {
|
||||||
const $dateField = wrapper.find('.date_field').getDOMNode()
|
const $dateField = wrapper.container.querySelector('.date_field')
|
||||||
$dateField.value = value
|
$dateField.value = value
|
||||||
$dateField.dispatchEvent(new Event('change'))
|
$dateField.dispatchEvent(new Event('change'))
|
||||||
}
|
}
|
||||||
|
@ -114,14 +114,14 @@ QUnit.module('DueDateCalendarPicker', suiteHooks => {
|
||||||
test('sets the input as readonly when disabled is true', () => {
|
test('sets the input as readonly when disabled is true', () => {
|
||||||
props.disabled = true
|
props.disabled = true
|
||||||
mountComponent()
|
mountComponent()
|
||||||
const $input = wrapper.find('input').getDOMNode()
|
const $input = wrapper.container.querySelector('input')
|
||||||
strictEqual($input.readOnly, true)
|
strictEqual($input.readOnly, true)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('disables the calendar picker button when disabled is true', () => {
|
test('disables the calendar picker button when disabled is true', () => {
|
||||||
props.disabled = true
|
props.disabled = true
|
||||||
mountComponent()
|
mountComponent()
|
||||||
const $button = wrapper.getDOMNode().querySelector('button')
|
const $button = wrapper.container.querySelector('button')
|
||||||
equal($button.getAttribute('aria-disabled'), 'true')
|
equal($button.getAttribute('aria-disabled'), 'true')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -130,8 +130,8 @@ QUnit.module('DueDateCalendarPicker', suiteHooks => {
|
||||||
mountComponent()
|
mountComponent()
|
||||||
ok(
|
ok(
|
||||||
wrapper
|
wrapper
|
||||||
.find('label')
|
.container.querySelector('label')
|
||||||
.prop('className')
|
.className
|
||||||
.match(/special-label/)
|
.match(/special-label/)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
@ -141,8 +141,8 @@ QUnit.module('DueDateCalendarPicker', suiteHooks => {
|
||||||
mountComponent()
|
mountComponent()
|
||||||
ok(
|
ok(
|
||||||
wrapper
|
wrapper
|
||||||
.find('input')
|
.container.querySelector('input')
|
||||||
.prop('name')
|
.name
|
||||||
.match(/special-name/)
|
.match(/special-name/)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
@ -150,12 +150,12 @@ QUnit.module('DueDateCalendarPicker', suiteHooks => {
|
||||||
test('label and input reference each other', () => {
|
test('label and input reference each other', () => {
|
||||||
mountComponent()
|
mountComponent()
|
||||||
|
|
||||||
const htmlFor = wrapper.find('label').prop('htmlFor')
|
const htmlFor = wrapper.container.querySelector('label').htmlFor
|
||||||
const inputId = wrapper.find('input').prop('id')
|
const inputId = wrapper.container.querySelector('input').id
|
||||||
equal(htmlFor, inputId)
|
equal(htmlFor, inputId)
|
||||||
|
|
||||||
const labelId = wrapper.find('label').prop('id')
|
const labelId = wrapper.container.querySelector('label').id
|
||||||
const labelledby = wrapper.find('input').prop('aria-labelledby')
|
const labelledby = wrapper.container.querySelector('input').getAttribute('aria-labelledby')
|
||||||
equal(labelId, labelledby)
|
equal(labelId, labelledby)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {mount} from 'enzyme'
|
import {render} from '@testing-library/react'
|
||||||
import CourseList from 'ui/features/epub_exports/react/CourseList'
|
import CourseList from 'ui/features/epub_exports/react/CourseList'
|
||||||
|
|
||||||
QUnit.module('CourseListSpec', {
|
QUnit.module('CourseListSpec', {
|
||||||
|
@ -36,13 +36,13 @@ QUnit.module('CourseListSpec', {
|
||||||
})
|
})
|
||||||
|
|
||||||
test('render', function () {
|
test('render', function () {
|
||||||
let component = mount(<CourseList courses={{}} />)
|
let component = render(<CourseList courses={{}} />)
|
||||||
equal(component.find('li').length, 0, 'should not render list items')
|
equal(component.container.querySelectorAll('li').length, 0, 'should not render list items')
|
||||||
component.unmount()
|
component.unmount()
|
||||||
|
|
||||||
component = mount(<CourseList courses={this.props} />)
|
component = render(<CourseList courses={this.props} />)
|
||||||
equal(
|
equal(
|
||||||
component.find('li').length,
|
component.container.querySelectorAll('li').length,
|
||||||
Object.keys(this.props).length,
|
Object.keys(this.props).length,
|
||||||
'should have an li element per course in @props'
|
'should have an li element per course in @props'
|
||||||
)
|
)
|
||||||
|
|
|
@ -16,10 +16,10 @@
|
||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import $ from 'jquery'
|
|
||||||
import 'jquery-migrate'
|
import 'jquery-migrate'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {mount} from 'enzyme'
|
import {render} from '@testing-library/react'
|
||||||
|
import userEvent from '@testing-library/user-event'
|
||||||
import ReactDOM from 'react-dom'
|
import ReactDOM from 'react-dom'
|
||||||
import TestUtils from 'react-dom/test-utils'
|
import TestUtils from 'react-dom/test-utils'
|
||||||
import GenerateLink from 'ui/features/epub_exports/react/GenerateLink'
|
import GenerateLink from 'ui/features/epub_exports/react/GenerateLink'
|
||||||
|
@ -40,16 +40,17 @@ QUnit.module('GenerateLink', {
|
||||||
})
|
})
|
||||||
|
|
||||||
test('showGenerateLink', function () {
|
test('showGenerateLink', function () {
|
||||||
let wrapper = mount(<GenerateLink {...this.props} />)
|
const ref = React.createRef()
|
||||||
ok(wrapper.instance().showGenerateLink(), 'should be true without epub_export object')
|
render(<GenerateLink {...this.props} ref={ref} />)
|
||||||
|
ok(ref.current.showGenerateLink(), 'should be true without epub_export object')
|
||||||
|
|
||||||
this.props.course.epub_export = {permissions: {regenerate: false}}
|
this.props.course.epub_export = {permissions: {regenerate: false}}
|
||||||
wrapper = mount(<GenerateLink {...this.props} />)
|
render(<GenerateLink {...this.props} ref={ref} />)
|
||||||
notOk(wrapper.instance().showGenerateLink(), 'should be false without permissions to rengenerate')
|
notOk(ref.current.showGenerateLink(), 'should be false without permissions to regenerate')
|
||||||
|
|
||||||
this.props.course.epub_export = {permissions: {regenerate: true}}
|
this.props.course.epub_export = {permissions: {regenerate: true}}
|
||||||
wrapper = mount(<GenerateLink {...this.props} />)
|
render(<GenerateLink {...this.props} ref={ref} />)
|
||||||
ok(wrapper.instance().showGenerateLink(), 'should be true with permissions to rengenerate')
|
ok(ref.current.showGenerateLink(), 'should be true with permissions to regenerate')
|
||||||
})
|
})
|
||||||
|
|
||||||
test('state triggered', function () {
|
test('state triggered', function () {
|
||||||
|
@ -67,23 +68,27 @@ test('state triggered', function () {
|
||||||
ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(component).parentNode)
|
ReactDOM.unmountComponentAtNode(ReactDOM.findDOMNode(component).parentNode)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('render', function () {
|
test('render', async function () {
|
||||||
|
const user = userEvent.setup({ delay: null })
|
||||||
const clock = sinon.useFakeTimers()
|
const clock = sinon.useFakeTimers()
|
||||||
sinon.stub(CourseEpubExportStore, 'create')
|
sinon.stub(CourseEpubExportStore, 'create')
|
||||||
|
|
||||||
let wrapper = mount(<GenerateLink {...this.props} />)
|
const ref = React.createRef()
|
||||||
equal(wrapper.children().type(), 'button', 'tag should be a button')
|
let wrapper = render(<GenerateLink {...this.props} ref={ref} />)
|
||||||
ok(wrapper.text().match(I18n.t('Generate ePub')), 'should show generate text')
|
const button = wrapper.container.querySelector('button')
|
||||||
|
equal(button.type, 'button', 'tag should be a button')
|
||||||
|
ok(wrapper.getAllByText(I18n.t('Generate ePub')), 'should show generate text')
|
||||||
|
|
||||||
wrapper.simulate('click')
|
await user.click(button)
|
||||||
equal(wrapper.children().type(), 'span', 'tag should be span')
|
const text = wrapper.getByText(I18n.t('Generating...'))
|
||||||
ok(wrapper.text().match(I18n.t('Generating...')), 'should show generating text')
|
ok(text, 'should show generating text')
|
||||||
|
equal(text.tagName, 'SPAN', 'tag should be span')
|
||||||
|
|
||||||
this.props.course.epub_export = {permissions: {regenerate: true}}
|
this.props.course.epub_export = {permissions: {regenerate: true}}
|
||||||
wrapper = mount(<GenerateLink {...this.props} />)
|
wrapper = render(<GenerateLink {...this.props} />)
|
||||||
clock.tick(2000)
|
clock.tick(2000)
|
||||||
equal(wrapper.children().type(), 'button', 'tag should be a button')
|
equal(wrapper.container.querySelector('button').type, 'button', 'tag should be a button')
|
||||||
ok(wrapper.text().match(I18n.t('Regenerate ePub')), 'should show regenerate text')
|
ok(wrapper.getAllByText(I18n.t('Regenerate ePub')), 'should show regenerate text')
|
||||||
|
|
||||||
clock.restore()
|
clock.restore()
|
||||||
CourseEpubExportStore.create.restore()
|
CourseEpubExportStore.create.restore()
|
||||||
|
|
|
@ -16,10 +16,9 @@
|
||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import $ from 'jquery'
|
|
||||||
import 'jquery-migrate'
|
import 'jquery-migrate'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {mount} from 'enzyme'
|
import {render} from '@testing-library/react'
|
||||||
import File from '@canvas/files/backbone/models/File'
|
import File from '@canvas/files/backbone/models/File'
|
||||||
import DragFeedback from 'ui/features/files/react/components/DragFeedback'
|
import DragFeedback from 'ui/features/files/react/components/DragFeedback'
|
||||||
|
|
||||||
|
@ -31,7 +30,7 @@ test('DF: shows a badge with number of items being dragged', () => {
|
||||||
file.url = () => 'some_url'
|
file.url = () => 'some_url'
|
||||||
file2.url = () => 'some_url'
|
file2.url = () => 'some_url'
|
||||||
|
|
||||||
const dragFeedback = mount(<DragFeedback pageX={1} pageY={1} itemsToDrag={[file, file2]} />)
|
const dragFeedback = render(<DragFeedback pageX={1} pageY={1} itemsToDrag={[file, file2]} />)
|
||||||
|
|
||||||
equal(dragFeedback.find('.badge').instance().innerHTML, '2', 'has two items')
|
equal(dragFeedback.container.querySelector('.badge').innerHTML, '2', 'has two items')
|
||||||
})
|
})
|
||||||
|
|
|
@ -19,7 +19,8 @@
|
||||||
import $ from 'jquery'
|
import $ from 'jquery'
|
||||||
import 'jquery-migrate'
|
import 'jquery-migrate'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import {shallow, mount} from 'enzyme'
|
import {render} from '@testing-library/react'
|
||||||
|
import {shallow} from 'enzyme'
|
||||||
import UsageRightsSelectBox from '@canvas/files/react/components/UsageRightsSelectBox'
|
import UsageRightsSelectBox from '@canvas/files/react/components/UsageRightsSelectBox'
|
||||||
|
|
||||||
QUnit.module('UsageRightsSelectBox', {
|
QUnit.module('UsageRightsSelectBox', {
|
||||||
|
@ -43,7 +44,8 @@ test('shows alert message if nothing is chosen and component is setup for a mess
|
||||||
|
|
||||||
test('fetches license options when component mounts', () => {
|
test('fetches license options when component mounts', () => {
|
||||||
const server = sinon.fakeServer.create()
|
const server = sinon.fakeServer.create()
|
||||||
const wrapper = mount(<UsageRightsSelectBox showMessage={false} />)
|
const ref = React.createRef()
|
||||||
|
render(<UsageRightsSelectBox showMessage={false} ref={ref} />)
|
||||||
server.respond('GET', '', [
|
server.respond('GET', '', [
|
||||||
200,
|
200,
|
||||||
{'Content-Type': 'application/json'},
|
{'Content-Type': 'application/json'},
|
||||||
|
@ -54,7 +56,7 @@ test('fetches license options when component mounts', () => {
|
||||||
},
|
},
|
||||||
]),
|
]),
|
||||||
])
|
])
|
||||||
equal(wrapper.instance().state.licenseOptions[0].id, 'cc_some_option', 'sets data just fine')
|
equal(ref.current.state.licenseOptions[0].id, 'cc_some_option', 'sets data just fine')
|
||||||
server.restore()
|
server.restore()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -71,7 +73,8 @@ test('shows creative commons options when set up', () => {
|
||||||
use_justification: 'creative_commons',
|
use_justification: 'creative_commons',
|
||||||
cc_value: 'helloooo_nurse',
|
cc_value: 'helloooo_nurse',
|
||||||
}
|
}
|
||||||
const wrapper = mount(<UsageRightsSelectBox {...props} />)
|
const ref = React.createRef()
|
||||||
|
render(<UsageRightsSelectBox {...props} ref={ref} />)
|
||||||
server.respond('GET', '', [
|
server.respond('GET', '', [
|
||||||
200,
|
200,
|
||||||
{'Content-Type': 'application/json'},
|
{'Content-Type': 'application/json'},
|
||||||
|
@ -83,6 +86,6 @@ test('shows creative commons options when set up', () => {
|
||||||
]),
|
]),
|
||||||
])
|
])
|
||||||
|
|
||||||
equal(wrapper.instance().creativeCommons.value, 'cc_some_option', 'shows creative commons option')
|
equal(ref.current.creativeCommons.value, 'cc_some_option', 'shows creative commons option')
|
||||||
server.restore()
|
server.restore()
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue