BOM dataSubmitter service changes class of relevant element based on response

This commit is contained in:
Rob H
2014-01-31 11:38:38 +08:00
parent 3beb633ed9
commit d679c7ac30
2 changed files with 23 additions and 14 deletions

View File

@@ -141,13 +141,15 @@ orderManagementModule.filter "selectFilter", [
]
orderManagementModule.factory "dataSubmitter", [
"$http", "$q"
($http, $q) ->
"$http", "$q", "switchClass"
($http, $q, switchClass) ->
return (changeObj) ->
deferred = $q.defer()
$http.put(changeObj.url).success((data) ->
switchClass changeObj.element, "update-success", ["update-pending", "update-error"], 3000
deferred.resolve data
).error ->
switchClass changeObj.element, "update-error", ["update-pending", "update-success"], false
deferred.reject()
deferred.promise
]

View File

@@ -265,14 +265,14 @@ describe "managing pending changes", ->
describe "dataSubmitter service", ->
qMock = httpMock = {}
resolve = reject = dataSubmitterService = null
switchClassSpy = resolveSpy = rejectSpy = dataSubmitterService = null
beforeEach ->
resolve = jasmine.createSpy('resolve')
reject = jasmine.createSpy('reject')
resolveSpy = jasmine.createSpy('resolve')
rejectSpy = jasmine.createSpy('reject')
qMock.defer = ->
resolve: resolve
reject: reject
resolve: resolveSpy
reject: rejectSpy
promise: "promise1"
# Can't use httpBackend because the qMock interferes with it
@@ -285,10 +285,13 @@ describe "dataSubmitter service", ->
spyOn(httpMock, "put").andCallThrough()
spyOn(qMock, "defer").andCallThrough()
switchClassSpy = jasmine.createSpy('switchClass')
beforeEach ->
module "ofn.bulk_order_management" , ($provide) ->
$provide.value '$q', qMock
$provide.value '$http', httpMock
$provide.value 'switchClass', switchClassSpy
return
beforeEach inject (dataSubmitter) ->
@@ -303,15 +306,19 @@ describe "dataSubmitter service", ->
expect(httpMock.put).toHaveBeenCalledWith "successURL"
it "calls resolve on deferred object when request is successful", ->
dataSubmitterService { url: "successURL" }
expect(resolve.calls.length).toEqual 1
expect(reject.calls.length).toEqual 0
expect(resolve).toHaveBeenCalledWith "somedata"
element = { a: 1 }
dataSubmitterService { url: "successURL", element: element }
expect(resolveSpy.calls.length).toEqual 1
expect(rejectSpy.calls.length).toEqual 0
expect(resolveSpy).toHaveBeenCalledWith "somedata"
expect(switchClassSpy).toHaveBeenCalledWith element, "update-success", ["update-pending", "update-error"], 3000
it "calls reject on deferred object when request is erroneous", ->
dataSubmitterService { url: "errorURL" }
expect(resolve.calls.length).toEqual 0
expect(reject.calls.length).toEqual 1
element = { b: 2 }
dataSubmitterService { url: "errorURL", element: element }
expect(resolveSpy.calls.length).toEqual 0
expect(rejectSpy.calls.length).toEqual 1
expect(switchClassSpy).toHaveBeenCalledWith element, "update-error", ["update-pending", "update-success"], false
describe "switchClass service", ->
elementMock = timeoutMock = {}