Skip to content

Commit fc37ea0

Browse files
committed
fixes reading with external feeds
notifies the user through screen reader when an external feed has been successfully deleted or added fixes CNVS-20801 CNVS-20799 test plan: - navigate to the announcements page - with screenreader on add a couple of external feeds (right side of page) - with screen reader still on delete an added external feed - notice the notification from screen reader. Change-Id: I4dcc4831b7d43493e6f695f216d070dd5fe9fd78 Reviewed-on: https://gerrit.instructure.com/55624 Reviewed-by: Mike Nomitch <mnomitch@instructure.com> QA-Review: Adam Stone <astone@instructure.com> Tested-by: Jenkins Product-Review: Aaron Cannon <acannon@instructure.com>
1 parent 5d58099 commit fc37ea0

2 files changed

Lines changed: 50 additions & 5 deletions

File tree

app/coffeescripts/views/ExternalFeeds/IndexView.coffee

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
define [
22
'underscore'
3+
'i18n!external_feeds'
34
'compiled/views/ValidatedFormView'
45
'compiled/models/ExternalFeed'
56
'jst/ExternalFeeds/IndexView'
67
'compiled/fn/preventDefault'
78
'jquery'
89
'jquery.toJSON'
9-
], (_, ValidatedFormView, ExternalFeed, template, preventDefault, $) ->
10+
'compiled/jquery.rails_flash_notifications'
11+
], (_, I18n, ValidatedFormView, ExternalFeed, template, preventDefault, $) ->
1012

1113
class IndexView extends ValidatedFormView
1214

@@ -40,12 +42,14 @@ define [
4042

4143
deleteFeed: preventDefault (event) ->
4244
id = @$(event.target).data('deleteFeedId')
43-
@collection.get(id).destroy()
45+
@collection.get(id).destroy success: ->
46+
$.screenReaderFlashMessage(I18n.t('External feed was deleted'))
4447

4548
getFormData: ->
4649
@$('#add_external_feed_form').toJSON()
4750

4851
onSaveSuccess: =>
4952
super
53+
$.screenReaderFlashMessage(I18n.t('External feed was added'))
5054
@collection.add(@model)
5155
@createPendingModel()

spec/coffeescripts/views/ExternalFeeds/IndexViewSpec.coffee

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,22 @@ define [
99
module 'IndexView',
1010
setup: ->
1111
fakeENV.setup(context_asset_string: 'courses_1')
12+
$('#fixtures').append($("<div>").attr('id', 'feed_container'))
1213
ef = new ExternalFeed
1314
id: 1
1415
url: 'http://www.example.com/feed'
1516
display_name: 'Example Feed'
1617
verbosity: 'link_only'
1718
header_match: null
1819
efc = new ExternalFeedCollection [ef]
19-
view = new ExternalFeedsIndexView
20-
el: '#fixtures'
20+
@view = new ExternalFeedsIndexView
21+
el: '#feed_container'
2122
permissions: { create: true }
2223
collection: efc
23-
view.render()
24+
@view.render()
2425

2526
teardown: ->
27+
@view.remove()
2628
$('#fixtures').empty()
2729
fakeENV.teardown()
2830

@@ -32,12 +34,51 @@ define [
3234
$('#external_feed_verbosity').val('link_only')
3335
$('#add_external_feed_form button').click()
3436

37+
38+
3539
test 'renders the list of feeds', ->
3640
equal $('li.external_feed').length, 1
3741
ok $('li.external_feed').text().match('Example Feed')
3842

43+
3944
# TODO: These specs are failing intermittantly and I can't figure out why,
4045
# but it's not worth the build being super fragile
46+
47+
48+
# test 'add external feed is read by screenreader', ->
49+
# @spy($, 'screenReaderFlashMessage')
50+
# server = sinon.fakeServer.create()
51+
# server.respondWith('POST', '/api/v1/courses/1/external_feeds',
52+
# [200, { 'Content-Type': 'application/json' }, JSON.stringify({
53+
# id: 2
54+
# url: 'http://www.example.com/feed2'
55+
# display_name: 'Other Feed'
56+
# verbosity: 'link_only'
57+
# header_match: null
58+
# })])
59+
60+
# submitForm('http://www.example.com/feed2')
61+
# server.respond()
62+
# equal $.screenReaderFlashMessage.callCount, 1
63+
# server.restore()
64+
65+
# test 'delete external feed is read by screenreader', ->
66+
# @spy($, 'screenReaderFlashMessage')
67+
# server = sinon.fakeServer.create()
68+
# server.respondWith('POST', '/api/v1/courses/1/external_feeds',
69+
# [200, { 'Content-Type': 'application/json' }, JSON.stringify({
70+
# id: 3
71+
# url: 'http://www.example.com/feed2'
72+
# display_name: 'Other Feed'
73+
# verbosity: 'link_only'
74+
# header_match: null
75+
# })])
76+
77+
# submitForm('http://www.example.com/feed2')
78+
# server.respond()
79+
# $('.close').first().click()
80+
# equal $.screenReaderFlashMessage.callCount, 1
81+
4182
# test 'allows adding a new feed', ->
4283
# server = sinon.fakeServer.create()
4384
# server.respondWith('POST', '/api/v1/courses/1/external_feeds',

0 commit comments

Comments
 (0)