travis-web/assets/scripts/spec/unit/chunk_buffer_spec.coffee
2013-03-09 22:01:05 +01:00

53 lines
1.4 KiB
CoffeeScript

createChunk = (number, content) ->
Em.Object.create(number: number, content: content)
describe 'Travis.ChunkBuffer', ->
it 'waits for parts to be in order before revealing them', ->
content = []
buffer = Travis.ChunkBuffer.create(content: content)
content.pushObject createChunk(2, "baz")
content.pushObject createChunk(1, "bar")
expect(buffer.get('length')).toEqual(0)
content.pushObject createChunk(0, "foo")
expect(buffer.get('length')).toEqual(3)
expect(buffer.toArray()).toEqual(['foo', 'bar', 'baz'])
it 'ignores a part if it fails to be delivered within timeout', ->
expect 4
content = []
buffer = Travis.ChunkBuffer.create(content: content, timeout: 10)
content.pushObject createChunk(2, "baz")
expect(buffer.get('length')).toEqual(0)
content.pushObject createChunk(0, "foo")
expect(buffer.get('length')).toEqual(1)
stop()
setTimeout( (->
expect(buffer.get('length')).toEqual(2)
expect(buffer.toArray()).toEqual(['foo', 'bar', 'baz'])
), 20)
it 'works correctly when parts are passed as content', ->
content = [createChunk(1, 'bar')]
buffer = Travis.ChunkBuffer.create(content: content)
expect(buffer.get('length')).toEqual(0)
content.pushObject createChunk(0, "foo")
expect(buffer.get('length')).toEqual(2)
expect(buffer.toArray()).toEqual(['foo', 'bar'])