From 72c73809f61508efe1ff5cb3819bd30bb94ab20c Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 27 Jun 2016 09:44:40 +0100 Subject: [PATCH] Generate address xml from object. --- .../Subscription/RecurlyWrapper.coffee | 20 +++++++------- .../coffee/main/new-subscription.coffee | 11 ++++---- .../Subscription/RecurlyWrapperTests.coffee | 26 +++++++++++++++++++ 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/services/web/app/coffee/Features/Subscription/RecurlyWrapper.coffee b/services/web/app/coffee/Features/Subscription/RecurlyWrapper.coffee index 5f0c7877f4..e49cb12b39 100644 --- a/services/web/app/coffee/Features/Subscription/RecurlyWrapper.coffee +++ b/services/web/app/coffee/Features/Subscription/RecurlyWrapper.coffee @@ -9,6 +9,15 @@ Async = require('async') module.exports = RecurlyWrapper = apiUrl : "https://api.recurly.com/v2" + _addressToXml: (address) -> + allowedKeys = ['address1', 'address2', 'city', 'country', 'state', 'zip', 'postal_code'] + resultString = "\n" + for k, v of address + if v and (k in allowedKeys) + resultString += "<#{k}#{if k == 'address2' then ' nil="nil"' else ''}>#{v || ''}\n" + resultString += "\n" + return resultString + _createPaypalSubscription: (user, subscriptionDetails, recurly_token_id, callback) -> logger.log {user_id: user._id, recurly_token_id}, "starting process of creating paypal subscription" Async.waterfall([ @@ -108,16 +117,7 @@ module.exports = RecurlyWrapper = address = subscriptionDetails.address if !address return next(new Error('no address in subscriptionDetails at setAddress stage')) - requestBody = """ - - #{address.address1} - #{address.address2} - #{address.city || ''} - #{address.state || ''} - #{address.zip || ''} - #{address.country} - - """ + requestBody = RecurlyWrapper._addressToXml(address) RecurlyWrapper.apiRequest({ url: "accounts/#{accountCode}/billing_info" method: "PUT" diff --git a/services/web/public/coffee/main/new-subscription.coffee b/services/web/public/coffee/main/new-subscription.coffee index 9547508337..0dc2d68e52 100644 --- a/services/web/public/coffee/main/new-subscription.coffee +++ b/services/web/public/coffee/main/new-subscription.coffee @@ -117,11 +117,12 @@ define [ coupon_code:pricing.items?.coupon?.code || "" isPaypal: $scope.paymentMethod == 'paypal' address: - address1: $scope.data.address1 - address2: $scope.data.address2 - country: $scope.data.country - state: $scope.data.state - zip: $scope.data.zip + address1: $scope.data.address1 + address2: $scope.data.address2 + country: $scope.data.country + state: $scope.data.state + postal_code: $scope.date.postal_code + zip: $scope.data.zip $http.post("/user/subscription/create", postData) .success (data, status, headers)-> sixpack.convert "in-editor-free-trial-plan", pricing.items.plan.code, (err)-> diff --git a/services/web/test/UnitTests/coffee/Subscription/RecurlyWrapperTests.coffee b/services/web/test/UnitTests/coffee/Subscription/RecurlyWrapperTests.coffee index e05040772d..143085b402 100644 --- a/services/web/test/UnitTests/coffee/Subscription/RecurlyWrapperTests.coffee +++ b/services/web/test/UnitTests/coffee/Subscription/RecurlyWrapperTests.coffee @@ -329,5 +329,31 @@ describe "RecurlyWrapper", -> @apiRequest.called.should.equal true + describe "_addressToXml", -> + + beforeEach -> + @address = + address1: "addr_one" + address2: "addr_two" + country: "some_country" + state: "some_state" + zip: "some_zip" + nonsenseKey: "rubbish" + + it 'should generate the correct xml', () -> + result = RecurlyWrapper._addressToXml @address + should.equal( + result, + """ + + addr_one + addr_two + some_country + some_state + some_zip + \n + """ + ) +