#= require angular/payrollhero_api/ph_restangular.coffee

describe 'angular:payrollhero.api.service(WorksitesService)', ->
  subject = undefined
  httpBackend = undefined

  doNotExpectFailure = (error) ->
    console.error(error)
    throw "promise threw unexpected failure!"

  setupWorksitesResponse = ->
    httpBackend.expectGET('http://api.payrollhero.dev/api/v2/worksites?page=1&token=t0ken')
    .respond(getJSONFixture('api/v2/worksites_response.json'))

  beforeEach ->
    module 'payrollhero.api'
    angular.module('payrollhero.api').constant('PhToken', {token: 't0ken'});

  beforeEach inject (WorksitesService, $httpBackend) ->
    subject = WorksitesService
    httpBackend = $httpBackend
    return

  afterEach ->
    httpBackend.verifyNoOutstandingExpectation()
    httpBackend.verifyNoOutstandingRequest()

  describe '#getList', ->
    beforeEach ->
      setupWorksitesResponse()
      return

    it 'queries the server and gives me the list with pagination info', ->
      subject.getList(page: 1).then (worksitesList) ->
        expect(worksitesList.page).toEqual(1)
        expect(worksitesList.hasMorePages()).toBeFalsy()
        expect(worksitesList.length).toEqual(10)
      .catch(doNotExpectFailure)
      httpBackend.flush()
