102 lines
3.2 KiB
CoffeeScript
Executable file
102 lines
3.2 KiB
CoffeeScript
Executable file
describe 'XMLHttpRequest', ->
|
|
beforeEach ->
|
|
@xhr = new XMLHttpRequest
|
|
|
|
describe 'constructor', ->
|
|
it 'sets readyState to UNSENT', ->
|
|
expect(@xhr.readyState).to.equal XMLHttpRequest.UNSENT
|
|
|
|
it 'sets timeout to 0', ->
|
|
expect(@xhr.timeout).to.equal 0
|
|
|
|
it 'sets responseType to ""', ->
|
|
expect(@xhr.responseType).to.equal ''
|
|
|
|
it 'sets status to 0', ->
|
|
expect(@xhr.status).to.equal 0
|
|
|
|
it 'sets statusText to ""', ->
|
|
expect(@xhr.statusText).to.equal ''
|
|
|
|
describe '#open', ->
|
|
it 'throws SecurityError on CONNECT', ->
|
|
expect(=> @xhr.open 'CONNECT', 'http://localhost:8912/test').to.
|
|
throw(SecurityError)
|
|
|
|
describe 'with a GET for a local https request', ->
|
|
beforeEach ->
|
|
@xhr.open 'GET', 'https://localhost:8911/test/fixtures/hello.txt'
|
|
|
|
it 'sets readyState to OPENED', ->
|
|
expect(@xhr.readyState).to.equal XMLHttpRequest.OPENED
|
|
|
|
it 'keeps status 0', ->
|
|
expect(@xhr.status).to.equal 0
|
|
|
|
it 'keeps statusText ""', ->
|
|
expect(@xhr.statusText).to.equal ''
|
|
|
|
describe '#send', ->
|
|
describe 'on a local http GET', ->
|
|
beforeEach ->
|
|
@xhr.open 'GET', 'http://localhost:8912/test/fixtures/hello.txt'
|
|
|
|
it 'kicks off the request', (done) ->
|
|
@xhr.onload = (event) =>
|
|
expect(@xhr.status).to.equal 200
|
|
expect(@xhr.responseText).to.equal 'Hello world!\n'
|
|
done()
|
|
@xhr.send()
|
|
|
|
describe 'on a local https GET', ->
|
|
beforeEach ->
|
|
@xhr.open 'GET', 'https://localhost:8911/test/fixtures/hello.txt'
|
|
|
|
it 'kicks off the request', (done) ->
|
|
@xhr.onload = (event) =>
|
|
expect(@xhr.status).to.equal 200
|
|
expect(@xhr.responseText).to.equal 'Hello world!\n'
|
|
done()
|
|
@xhr.send()
|
|
|
|
describe 'on a local relative GET', ->
|
|
beforeEach ->
|
|
@xhr.open 'GET', '../fixtures/hello.txt'
|
|
|
|
it 'kicks off the request', (done) ->
|
|
@xhr.onload = (event) =>
|
|
expect(@xhr.status).to.equal 200
|
|
expect(@xhr.responseText).to.equal 'Hello world!\n'
|
|
done()
|
|
@xhr.send()
|
|
|
|
describe 'on a local gopher GET', ->
|
|
describe '#open + #send', ->
|
|
it 'throw a NetworkError', ->
|
|
expect(=>
|
|
@xhr.open 'GET', 'gopher:localhost:8911'
|
|
@xhr.send()
|
|
).to.throw(NetworkError)
|
|
|
|
describe 'readyState constants', ->
|
|
it 'UNSENT < OPENED', ->
|
|
expect(XMLHttpRequest.UNSENT).to.be.below(XMLHttpRequest.OPENED)
|
|
|
|
it 'OPENED < HEADERS_RECEIVED', ->
|
|
expect(XMLHttpRequest.OPENED).to.be.
|
|
below(XMLHttpRequest.HEADERS_RECEIVED)
|
|
|
|
it 'HEADERS_RECEIVED < LOADING', ->
|
|
expect(XMLHttpRequest.HEADERS_RECEIVED).to.be.
|
|
below(XMLHttpRequest.LOADING)
|
|
|
|
it 'LOADING < DONE', ->
|
|
expect(XMLHttpRequest.LOADING).to.be.below(XMLHttpRequest.DONE)
|
|
|
|
it 'XMLHttpRequest constants match the instance costants', ->
|
|
expect(XMLHttpRequest.UNSENT).to.equal @xhr.UNSENT
|
|
expect(XMLHttpRequest.OPENED).to.equal @xhr.OPENED
|
|
expect(XMLHttpRequest.HEADERS_RECEIVED).to.equal @xhr.HEADERS_RECEIVED
|
|
expect(XMLHttpRequest.LOADING).to.equal @xhr.LOADING
|
|
expect(XMLHttpRequest.DONE).to.equal @xhr.DONE
|
|
|