Files
openfoodnetwork/spec/javascripts/unit/darkswarm/services/credit_card_spec.js.coffee
2020-08-27 11:03:13 +10:00

60 lines
1.8 KiB
CoffeeScript

describe 'CreditCard service', ->
CreditCard = null
CreditCards = null
$http = null
Loading = null
RailsFlashLoader = null
beforeEach ->
module 'Darkswarm'
module ($provide)->
$provide.value "savedCreditCards", []
$provide.value "railsFlash", null
null
inject (_CreditCard_, _CreditCards_, _$httpBackend_, _Loading_, _RailsFlashLoader_)->
CreditCard = _CreditCard_
CreditCards = _CreditCards_
$http = _$httpBackend_
Loading = _Loading_
RailsFlashLoader = _RailsFlashLoader_
CreditCard.secrets =
card:
exp_month: "12"
exp_year: "2030"
last4: "1234"
cc_type: 'mastercard'
token: "token123"
describe "submit", ->
it "adds a credit card", ->
$http.expectPUT("/credit_cards/new_from_token").respond(200, {})
spyOn(CreditCards, "add")
CreditCard.submit()
$http.flush()
expect(CreditCards.add).toHaveBeenCalled()
it "reports errors", ->
$http.expectPUT("/credit_cards/new_from_token").respond(500, {})
spyOn(Loading, "clear")
spyOn(RailsFlashLoader, "loadFlash")
CreditCard.submit()
$http.flush()
expect(Loading.clear).toHaveBeenCalled()
expect(RailsFlashLoader.loadFlash).toHaveBeenCalled()
describe "process_params", ->
it "uses cc_type, rather than fetching the brand from the card", ->
# This is important for processing the card with activemerchant
process_params = CreditCard.process_params()
expect(process_params['exp_month']).toEqual "12"
expect(process_params['exp_year']).toEqual "2030"
expect(process_params['last4']).toEqual "1234"
expect(process_params['token']).toEqual "token123"
expect(process_params['cc_type']).toEqual "mastercard"