module "Events",
  setup: ->
    Ember.run -> Travis.advanceReadiness()
  teardown: ->
    Ember.run -> Travis.reset()

test "event containing a repository, adds repository to repos list", ->
  visit('/travis-ci/travis-core').then ->
    payload =
      repository:
        id: 10
      build:
        id: 10
        repository_id: 10

    $.mockjax
      url: '/builds/10'
      responseTime: 0
      responseText: payload

    Em.run ->
      Travis.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'
          last_build_state: 'passed'
          last_build_duration: 90

    wait().then ->
      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' } }


test "an event containing a created job, clears the job's log", ->
  payload =
    job:
      id: 12
      repository_id: 1
      number: '1.4'
      queue: 'build.linux'

  visit('/travis-ci/travis-core/').then ->
    Em.run ->
      logRendered()
      Travis.receive 'build:created', payload

    wait().then ->
      displaysLog []

test "an event containing a requeued job, clears the job's log", ->
  payload =
    job:
      id: 12
      repository_id: 1
      number: '1.4'
      queue: 'build.linux'

  visit('/travis-ci/travis-core').then ->
    Em.run ->
      logRendered()
      Travis.receive 'build:requeued', payload

    wait().then ->
      displaysLog []


test "an event with a build adds a build to a builds list", ->
  visit('/travis-ci/travis-core/builds').then ->
    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'
        message: 'commit message 3'
        commit: '1234567'
        state: 'failed'
        pull_request: false
        pull_request_number: null
        pull_request_title: null

    Em.run ->
      Travis.receive 'build:started', payload

    wait().then ->
      listsBuild
        row: 1
        item: { id: 11, slug: 'travis-ci/travis-core', number: '3', sha: '1234567', branch: 'master', message: 'commit message 3', finishedAt: 'less than a minute ago', duration: '55 sec', color: 'red' }


#test "event containing a job, adds job to jobs list", ->
#  visit('travis-ci/travis-core').then ->
#    payload =
#      job:
#        id: 12
#        repository_id: 1
#        number: '1.4'
#        queue: 'builds.linux'
#
#    $.mockjax
#      url: '/jobs/12'
#      responseTime: 0
#      responseText: payload
#
#    Em.run ->
#      Travis.receive 'job:started',
#        job:
#          id: 12
#          repository_id: 1
#          repository_slug: 'travis-ci/travis-core'
#          number: '1.4'
#          queue: 'builds.linux'
#          state: 'created'
#
#    wait().then ->
#      listsQueuedJob
#        name: 'linux'
#        row: 3
#        item: { number: '1.4', repo: 'travis-ci/travis-core' }
#
#    it 'updates only keys that are available', ->
#      Em.run ->
#        Travis.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 sidebarTabsRendered
#  #    runs ->
#  #      $('#right #tab_workers a').trigger('click')
#  #      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.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 sidebarTabsRendered
#  #    runs ->
#  #      $('#right #tab_workers a').trigger('click')
#  #      waitFor workersRendered
#
#  #  it 'does not update repository if it\'s already in the 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.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' } }
#
#
#