@@ -103,7 +103,7 @@ describe('auto-check element', function() {
103
103
} )
104
104
} )
105
105
106
- describe ( 'requesting server results ' , function ( ) {
106
+ describe ( 'network lifecycle events ' , function ( ) {
107
107
let checker
108
108
let input
109
109
@@ -125,38 +125,77 @@ describe('auto-check element', function() {
125
125
input = null
126
126
} )
127
127
128
- it ( 'emits send event on input' , function ( done ) {
128
+ it ( 'emits network events in order' , async function ( ) {
129
+ const events = [ ]
130
+ const track = event => events . push ( event . type )
131
+
132
+ checker . addEventListener ( 'loadstart' , track )
133
+ checker . addEventListener ( 'load' , track )
134
+ checker . addEventListener ( 'error' , track )
135
+ checker . addEventListener ( 'loadend' , track )
136
+
137
+ const completed = Promise . all ( [ once ( checker , 'loadstart' ) , once ( checker , 'load' ) , once ( checker , 'loadend' ) ] )
138
+ triggerChange ( input , 'hub' )
139
+ await completed
140
+
141
+ assert . deepEqual ( [ 'loadstart' , 'load' , 'loadend' ] , events )
142
+ } )
143
+ } )
144
+
145
+ describe ( 'auto-check lifecycle events' , function ( ) {
146
+ let checker
147
+ let input
148
+
149
+ beforeEach ( function ( ) {
150
+ const container = document . createElement ( 'div' )
151
+ container . innerHTML = `
152
+ <auto-check csrf="foo" src="/success">
153
+ <input>
154
+ </auto-check>`
155
+ document . body . append ( container )
156
+
157
+ checker = document . querySelector ( 'auto-check' )
158
+ input = checker . querySelector ( 'input' )
159
+ } )
160
+
161
+ afterEach ( function ( ) {
162
+ document . body . innerHTML = ''
163
+ checker = null
164
+ input = null
165
+ } )
166
+
167
+ it ( 'emits auto-check-send on input' , function ( done ) {
129
168
input . addEventListener ( 'auto-check-send' , ( ) => done ( ) )
130
169
input . value = 'hub'
131
170
input . dispatchEvent ( new InputEvent ( 'input' ) )
132
171
} )
133
172
134
- it ( 'emits send event on change' , function ( done ) {
173
+ it ( 'emits auto-check- send on change' , function ( done ) {
135
174
input . addEventListener ( 'auto-check-send' , ( ) => done ( ) )
136
175
triggerChange ( input , 'hub' )
137
176
} )
138
177
139
- it ( 'emits success event when server responds with 200 OK' , async function ( ) {
178
+ it ( 'emits auto-check- success when server responds with 200 OK' , async function ( ) {
140
179
triggerChange ( input , 'hub' )
141
180
const event = await once ( input , 'auto-check-success' )
142
181
const result = await event . detail . response . text ( )
143
182
assert . equal ( 'This is a warning' , result )
144
183
} )
145
184
146
- it ( 'emits error event when server returns an error response' , async function ( ) {
185
+ it ( 'emits auto-check- error event when server returns an error response' , async function ( ) {
147
186
checker . src = '/fail'
148
187
triggerChange ( input , 'hub' )
149
188
const event = await once ( input , 'auto-check-error' )
150
189
const result = await event . detail . response . text ( )
151
190
assert . equal ( 'This is an error' , result )
152
191
} )
153
192
154
- it ( 'emits complete event at the end of the lifecycle' , function ( done ) {
193
+ it ( 'emits auto-check- complete event at the end of the lifecycle' , function ( done ) {
155
194
input . addEventListener ( 'auto-check-complete' , ( ) => done ( ) )
156
195
triggerChange ( input , 'hub' )
157
196
} )
158
197
159
- it ( 'emits send event before checking if there is a duplicate request' , function ( done ) {
198
+ it ( 'emits auto-check- send event before checking if there is a duplicate request' , function ( done ) {
160
199
let counter = 2
161
200
input . addEventListener ( 'auto-check-send' , ( ) => {
162
201
if ( counter === 2 ) {
0 commit comments