travis-web/assets/scripts/spec/event_spec.coffee
Piotr Sarnacki 40ef7107f4 Don't add repository on worker events if it already exists
It's best to do that, because worker payload is usually outdated. If
there is no info on repo yet, it's worth to add it, but if it already
exists, we will most likely end up with inconsistent situation.
2012-10-27 03:11:15 +02:00

220 lines
5.5 KiB
CoffeeScript

describe 'events', ->
afterEach ->
window.history.pushState({}, null, '/spec.html')
describe 'an event adding a repository', ->
beforeEach ->
app 'travis-ci/travis-core'
waitFor jobsRendered
it 'adds a repository to the list', ->
waitFor reposRendered
runs ->
payload =
repository:
id: 10
build:
id: 10
repository_id: 10
$.mockjax
url: '/builds/10'
responseTime: 0
responseText: payload
Em.run ->
Travis.app.receive 'build:started',
build:
id: 10
repository:
id: 10
slug: 'travis-ci/travis-support'
last_build_id: 10
last_build_number: 10
last_build_started_at: '2012-07-02T00:01:00Z'
last_build_finished_at: '2012-07-02T00:02:30Z'
waits(100)
runs ->
listsRepo
row: 2
item: { slug: 'travis-ci/travis-support', build: { number: 4, url: '/travis-ci/travis-support/builds/10', duration: '1 min 30 sec', finishedAt: 'less than a minute ago' } }
describe 'an event adding a build', ->
beforeEach ->
app 'travis-ci/travis-core/builds'
waitFor buildsRendered
it 'adds a build to the builds list', ->
payload =
build:
id: 11
repository_id: 1
commit_id: 1
number: '3'
duration: 55
started_at: '2012-07-02T00:02:00Z'
finished_at: '2012-07-02T00:02:55Z'
event_type: 'push'
result: 1
commit_message: 'commit message 3'
commit: '1234567'
Em.run ->
Travis.app.receive 'build:started', payload
waits(100)
runs ->
listsBuild
row: 3
item: { id: 11, slug: 'travis-ci/travis-core', number: '3', sha: '1234567', branch: 'master', message: 'commit message 1', finishedAt: 'less than a minute ago', duration: '55 sec', color: 'red' }
describe 'an event adding a job', ->
beforeEach ->
app 'travis-ci/travis-core'
waitFor jobsRendered
runs ->
waitFor queuesRendered
it 'adds a job to the jobs matrix', ->
payload =
job:
id: 15
repository_id: 1
build_id: 1
commit_id: 1
log_id: 1
number: '1.4'
duration: 55
started_at: '2012-07-02T00:02:00Z'
finished_at: '2012-07-02T00:02:55Z'
config: { rvm: 'jruby' }
$.mockjax
url: '/jobs/15'
responseTime: 0
responseText: payload
Em.run ->
Travis.app.receive 'job:started',
job:
id: 15
repository_id: 1
build_id: 1
commit_id: 1
waits(100)
runs ->
listsJob
table: $('#jobs')
row: 3
item: { id: 15, number: '1.4', repo: 'travis-ci/travis-core', finishedAt: 'less than a minute ago', duration: '55 sec', rvm: 'jruby' }
it 'adds a job to the jobs queue', ->
payload =
job:
id: 12
repository_id: 1
number: '1.4'
queue: 'builds.common'
$.mockjax
url: '/jobs/12'
responseTime: 0
responseText: payload
Em.run ->
Travis.app.receive 'job:started',
job:
id: 12
repository_id: 1
number: '1.4'
queue: 'builds.common'
state: 'created'
waits(100)
runs ->
listsQueuedJob
name: 'common'
row: 3
item: { number: '1.4', repo: 'travis-ci/travis-core' }
it 'updates only keys that are available', ->
Em.run ->
Travis.app.receive 'job:started',
job:
id: 1
build_id: 1
waits(100)
runs ->
listsJob
table: $('#jobs')
row: 1
item: { id: 1, number: '1.1', repo: 'travis-ci/travis-core', finishedAt: '3 minutes ago', duration: '30 sec', rvm: 'rbx' }
describe 'an event adding a worker', ->
beforeEach ->
app ''
waitFor workersRendered
it 'adds a worker to the workers list', ->
payload =
worker:
id: 10
host: 'worker.travis-ci.org'
name: 'ruby-3'
state: 'ready'
$.mockjax
url: '/workers/10'
responseTime: 0
responseText: payload
Em.run ->
Travis.app.receive 'worker:created',
worker:
id: 10
name: 'ruby-3'
host: 'worker.travis-ci.org'
state: 'ready'
waits(100)
runs ->
listsWorker
group: 'worker.travis-ci.org'
row: 3
item: { name: 'ruby-3', state: 'ready' }
describe 'an event updating a worker', ->
beforeEach ->
app '/travis-ci/travis-core'
waitFor workersRendered
it 'does not update repository if it\'s already in store', ->
payload =
worker:
id: 1
host: 'worker.travis-ci.org'
name: 'ruby-2'
state: 'working'
payload:
repository:
id: 1
last_build_id: 999
last_build_number: '999'
Em.run ->
Travis.app.receive 'worker:updated', payload
waits(100)
runs ->
listsRepo
row: 2
item: { slug: 'travis-ci/travis-core', build: { number: 1, url: '/travis-ci/travis-core/builds/1', duration: '30 sec', finishedAt: '3 minutes ago' } }