upay 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +3 -0
  3. data/.gitignore +16 -0
  4. data/.rspec +3 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +21 -0
  8. data/Gemfile +6 -0
  9. data/Guardfile +70 -0
  10. data/LICENSE.txt +22 -0
  11. data/README.md +39 -0
  12. data/Rakefile +11 -0
  13. data/examples/capture_and_authorize.rb +90 -0
  14. data/examples/get_a_customer.rb +14 -0
  15. data/lib/upay/address/address.rb +53 -0
  16. data/lib/upay/address/billing_address.rb +13 -0
  17. data/lib/upay/address/shipping_address.rb +13 -0
  18. data/lib/upay/configure.rb +28 -0
  19. data/lib/upay/credit_card.rb +131 -0
  20. data/lib/upay/customer.rb +161 -0
  21. data/lib/upay/order.rb +56 -0
  22. data/lib/upay/payment.rb +15 -0
  23. data/lib/upay/people/buyer.rb +33 -0
  24. data/lib/upay/people/payer.rb +30 -0
  25. data/lib/upay/people/person.rb +37 -0
  26. data/lib/upay/plan.rb +145 -0
  27. data/lib/upay/report.rb +22 -0
  28. data/lib/upay/requestor.rb +90 -0
  29. data/lib/upay/signature.rb +26 -0
  30. data/lib/upay/subscription.rb +94 -0
  31. data/lib/upay/token.rb +98 -0
  32. data/lib/upay/transaction.rb +137 -0
  33. data/lib/upay/version.rb +3 -0
  34. data/lib/upay.rb +86 -0
  35. data/spec/factories/address.rb +36 -0
  36. data/spec/factories/credit_card.rb +22 -0
  37. data/spec/factories/customer.rb +12 -0
  38. data/spec/factories/order.rb +13 -0
  39. data/spec/factories/people.rb +29 -0
  40. data/spec/factories/plan.rb +26 -0
  41. data/spec/factories/token.rb +18 -0
  42. data/spec/factories/transaction.rb +16 -0
  43. data/spec/lib/upay/address/address_spec.rb +34 -0
  44. data/spec/lib/upay/address/billing_address_spec.rb +34 -0
  45. data/spec/lib/upay/address/shipping_address_spec.rb +34 -0
  46. data/spec/lib/upay/credit_card_spec.rb +39 -0
  47. data/spec/lib/upay/customer_spec.rb +18 -0
  48. data/spec/lib/upay/order_spec.rb +29 -0
  49. data/spec/lib/upay/people/buyer_spec.rb +19 -0
  50. data/spec/lib/upay/people/payer_spec.rb +19 -0
  51. data/spec/lib/upay/people/person_spec.rb +19 -0
  52. data/spec/lib/upay/plan_spec.rb +54 -0
  53. data/spec/lib/upay/token_spec.rb +33 -0
  54. data/spec/lib/upay/transaction_spec.rb +39 -0
  55. data/spec/lib/upay_spec.rb +5 -0
  56. data/spec/spec_helper.rb +123 -0
  57. data/spec/support/factory_girl.rb +5 -0
  58. data/upay.gemspec +47 -0
  59. metadata +361 -0
@@ -0,0 +1,94 @@
1
+ module Upay
2
+ class Subscription
3
+ def initialize(args = {})
4
+ args.each do |k,v|
5
+ instance_variable_set("@#{k}", v) unless v.nil?
6
+ end
7
+ end
8
+
9
+ def id; @id end
10
+ def id=(id);
11
+ @id = id
12
+ end
13
+
14
+ def plan; @plan end
15
+ def plan=(plan);
16
+ @plan = plan
17
+ end
18
+
19
+ def customer; @customer end
20
+ def customer=(customer);
21
+ @customer = customer
22
+ end
23
+
24
+ def trialDays; @trialDays end
25
+ def trialDays=(trialDays);
26
+ @trialDays = trialDays
27
+ end
28
+
29
+ def quantity; @quantity end
30
+ def quantity=(quantity);
31
+ @quantity = quantity
32
+ end
33
+
34
+ def installments; @installments end
35
+ def installments=(installments);
36
+ @installments = installments
37
+ end
38
+
39
+ def currentPeriodStart; @currentPeriodStart end
40
+ def currentPeriodStart=(currentPeriodStart);
41
+ @currentPeriodStart = currentPeriodStart
42
+ end
43
+
44
+ def currentPeriodEnd; @currentPeriodEnd end
45
+ def currentPeriodEnd=(currentPeriodEnd);
46
+ @currentPeriodEnd = currentPeriodEnd
47
+ end
48
+
49
+ def creditCardToken; @creditCardToken end
50
+ def creditCardToken=(creditCardToken);
51
+ @creditCardToken = creditCardToken
52
+ end
53
+
54
+ #Verb: POST
55
+ #Description:
56
+ #Returns: JSON
57
+ def create
58
+ url = "rest/v4.3/subscriptions/"
59
+ hash_for_create = self.to_hash
60
+ response = Requestor.new.post(url, hash_for_create)
61
+ puts response
62
+ self.id = response["id"]
63
+ self
64
+ end
65
+
66
+ #Verb: UPDATE
67
+ #Description:
68
+ #Returns: JSON
69
+ def update
70
+ url = "/rest/v4.3/subscriptions/{self.id}"
71
+ Requestor.new.put(url, hash_for_create)
72
+ end
73
+
74
+ #Verb: POST
75
+ #Description:
76
+ #Returns: JSON
77
+ def show
78
+ url = "rest/v4.3/subscriptions/#{self.id}"
79
+ Requestor.new.get(url, {})
80
+ end
81
+
82
+ #Verb: DELETE
83
+ #Description:
84
+ #Returns: JSON
85
+ def delete
86
+ url = "rest/v4.3/subscriptions/#{self.id}"
87
+ Requestor.new.delete(url, {})
88
+ end
89
+
90
+ def to_hash
91
+ self.instance_variables.each_with_object({}) { |var,hash| hash[var.to_s.delete("@")] = self.instance_variable_get(var)}
92
+ end
93
+ end
94
+ end
data/lib/upay/token.rb ADDED
@@ -0,0 +1,98 @@
1
+ module Upay
2
+ class Token
3
+ def payerId; @payerId end
4
+ def payerId=(payerId);
5
+ @payerId = payerId
6
+ end
7
+
8
+ def name; @name end
9
+ def name=(name);
10
+ @name = name
11
+ end
12
+
13
+ def code; @code end
14
+ def code=(code);
15
+ @code = code
16
+ end
17
+
18
+ def error; @error end
19
+ def error=(error);
20
+ @error = error
21
+ end
22
+
23
+ def identificationNumber; @identificationNumber end
24
+ def identificationNumber=(identificationNumber);
25
+ @identificationNumber = identificationNumber
26
+ end
27
+
28
+ def paymentMethod; @paymentMethod end
29
+ def paymentMethod=(paymentMethod);
30
+ @paymentMethod = paymentMethod
31
+ end
32
+
33
+ def number; @number end
34
+ def number=(number);
35
+ @number = number
36
+ end
37
+
38
+ def expirationDate; @expirationDate end
39
+ def expirationDate=(expirationDate);
40
+ @expirationDate = expirationDate
41
+ end
42
+
43
+ def creditCardTokenId; @creditCardTokenId end
44
+ def creditCardTokenId=(creditCardTokenId);
45
+ @creditCardTokenId = creditCardTokenId
46
+ end
47
+
48
+ def valid?
49
+ validator = TokenValidator.new
50
+ validator.valid?(self)
51
+ end
52
+
53
+ def initialize(args = {})
54
+ args.each do |k,v|
55
+ instance_variable_set("@#{k}", v) unless v.nil?
56
+ end
57
+ end
58
+
59
+ def create
60
+ data = {}
61
+ data["creditCardToken"] = self.to_hash
62
+ response = Requestor.new.request( PAYMENTS_API_URL, "CREATE_TOKEN", data)
63
+ self.code = response["response"]["code"]
64
+ self.error = response["response"]["error"]
65
+
66
+ if response["response"]["error"] == nil
67
+ self.creditCardTokenId = response["response"]["creditCardToken"]["creditCardTokenId"]
68
+ end
69
+
70
+ response
71
+ end
72
+
73
+ def destroy
74
+ data = {:removeCreditCardToken => { :payerId => self.payerId, :creditCardTokenId => self.creditCardTokenId}}
75
+ response = Requestor.new.request( PAYMENTS_API_URL, "REMOVE_TOKEN", data)
76
+ end
77
+
78
+ def show
79
+ data = {:removeCreditCardInformation => { :payerId => self.payerId, :creditCardTokenId => self.creditCardTokenId}}
80
+ response = Requestor.new.request( PAYMENTS_API_URL, "GET_TOKENS", data)
81
+ end
82
+
83
+ def to_hash
84
+ self.instance_variables.each_with_object({}) { |var,hash| hash[var.to_s.delete("@")] = self.instance_variable_get(var)}
85
+ end
86
+ end
87
+
88
+ class TokenValidator
89
+ include Veto.validator
90
+
91
+ validates :payerId, presence: true
92
+ validates :name, presence: true
93
+ validates :identificationNumber, presence: true
94
+ validates :paymentMethod, presence: true
95
+ validates :number, presence: true
96
+ validates :expirationDate, presence: true
97
+ end
98
+ end
@@ -0,0 +1,137 @@
1
+ module Upay
2
+ class Transaction
3
+ def initialize(args = {})
4
+ args.each do |k,v|
5
+ instance_variable_set("@#{k}", v)
6
+ end
7
+ end
8
+
9
+ def order; @order end
10
+ def order=(order = nil); @order = order; end
11
+
12
+ def payer; @payer end
13
+ def payer=(payer = nil); @payer = payer; end
14
+
15
+ def creditCardTokenId; @creditCardTokenId end
16
+ def creditCardTokenId=(creditCardTokenId = nil); @creditCardTokenId = creditCardTokenId; end
17
+
18
+ def type; @type end
19
+ def type=(type = nil); @type = type; end
20
+
21
+ def paymentMethod; @paymentMethod end
22
+ def paymentMethod=(paymentMethod = nil); @paymentMethod = paymentMethod; end
23
+
24
+ def paymentCountry; @paymentCountry end
25
+ def paymentCountry=(paymentCountry = nil); @paymentCountry = paymentCountry; end
26
+
27
+ def deviceSessionId; @deviceSessionId end
28
+ def deviceSessionId=(deviceSessionId = nil); @deviceSessionId = deviceSessionId; end
29
+
30
+ def ipAddress; @ipAddress; end
31
+ def ipAddress=(ipAddress = nil) @ipAddress = ipAddress end
32
+
33
+ def cookie; @cookie end
34
+ def cookie=(cookie = nil) @cookie = cookie end
35
+
36
+ def userAgent; @userAgent end
37
+ def userAgent=(userAgent = nil) @userAgent = userAgent; end
38
+
39
+ def capture_and_authorize
40
+ payload = {}
41
+ payload["transaction"] = self.to_hash
42
+ response = Payment.new.submit_transaction(payload)["response"] || {code: "ERROR", error: "something went terribly wrong"}
43
+
44
+ if response["code"] == "SUCCESS"
45
+ transaction_response_hash = response["transactionResponse"] || {}
46
+ transaction_response = TransactionResponse.new(transaction_response_hash)
47
+ else
48
+ raise response.to_json.inspect
49
+ end
50
+ transaction_response
51
+ end
52
+
53
+ def valid?
54
+ validator = TransactionValidator.new
55
+ validator.valid?(self)
56
+ end
57
+
58
+ def to_hash
59
+ transaction_hash = self.instance_variables.each_with_object({}) { |var,hash| hash[var.to_s.delete("@").to_sym] = self.instance_variable_get(var)}
60
+ transaction_hash[:order] = self.order.to_hash if self.order
61
+ transaction_hash[:payer] = self.payer.to_hash if self.payer
62
+ transaction_hash
63
+ end
64
+ end
65
+
66
+ class TransactionValidator
67
+ include Veto.validator
68
+
69
+ validates :creditCardTokenId, presence: true
70
+ validates :cookie, presence: true
71
+ validates :deviceSessionId, presence: true
72
+ validates :order, presence: true
73
+ validates :payer, presence: true
74
+ validates :paymentCountry, presence: true
75
+ validates :paymentMethod, presence: true
76
+ validates :type, presence: true
77
+ end
78
+
79
+ class TransactionResponse
80
+ def initialize(args = {})
81
+ args.each do |k,v|
82
+ instance_variable_set("@#{k}", v)
83
+ end
84
+ end
85
+
86
+ def orderId; @orderId end
87
+ def orderId=(orderId=nil) @orderId = orderId; end
88
+
89
+ def transactionId; @transactionId end
90
+ def transactionId=(transactionId=nil) @transactionId = transactionId; end
91
+
92
+ def paymentNetworkResponseCode; @paymentNetworkResponseCode end
93
+ def paymentNetworkResponseCode=(paymentNetworkResponseCode=nil) @paymentNetworkResponseCode = paymentNetworkResponseCode; end
94
+
95
+ def paymentNetworkResponseErrorMessage; @paymentNetworkResponseErrorMessage end
96
+ def paymentNetworkResponseErrorMessage=(paymentNetworkResponseErrorMessage=nil) @paymentNetworkResponseErrorMessage = paymentNetworkResponseErrorMessage; end
97
+
98
+ def trazabilityCode; @trazabilityCode end
99
+ def trazabilityCode=(trazabilityCode=nil) @trazabilityCode = trazabilityCode; end
100
+
101
+ def authorizationCode; @authorizationCode end
102
+ def authorizationCode=(authorizationCode=nil) @authorizationCode = authorizationCode; end
103
+
104
+ def pendingReason; @pendingReason end
105
+ def pendingReason=(pendingReason=nil) @pendingReason = pendingReason; end
106
+
107
+ def responseCode; @responseCode end
108
+ def responseCode=(responseCode=nil) @responseCode = responseCode; end
109
+
110
+ def errorCode; @errorCode end
111
+ def errorCode=(errorCode=nil) @errorCode = errorCode; end
112
+
113
+ def responseMessage; @responseMessage end
114
+ def responseMessage=(responseMessage=nil) @responseMessage = responseMessage; end
115
+
116
+ def transactionDate; @transactionDate end
117
+ def transactionDate=(transactionDate=nil) @transactionDate = transactionDate; end
118
+
119
+ def transactionTime; @transactionTime end
120
+ def transactionTime=(transactionTime=nil) @transactionTime = transactionTime; end
121
+
122
+ def operationDate; @operationDate end
123
+ def operationDate=(operationDate=nil) @operationDate = operationDate; end
124
+
125
+ def extraParameters; @extraParameters end
126
+ def extraParameters=(extraParameters=nil) @extraParameters = extraParameters; end
127
+
128
+ def valid?
129
+ #validator = TransactionValidator.new
130
+ #validator.valid?(self)
131
+ end
132
+
133
+ def to_hash
134
+ transaction_hash = self.instance_variables.each_with_object({}) { |var,hash| hash[var.to_s.delete("@").to_sym] = self.instance_variable_get(var)}
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,3 @@
1
+ module Upay
2
+ VERSION = "0.0.1"
3
+ end
data/lib/upay.rb ADDED
@@ -0,0 +1,86 @@
1
+ require "digest"
2
+ require "json/add/core"
3
+ require "uri"
4
+ require "net/https"
5
+ require "base64"
6
+ require "faraday"
7
+ require "faraday_middleware"
8
+ require "veto"
9
+
10
+ require "upay/address/address"
11
+ require "upay/address/billing_address"
12
+ require "upay/address/shipping_address"
13
+
14
+ require "upay/credit_card"
15
+ require "upay/customer"
16
+ require "upay/order"
17
+ require "upay/plan"
18
+ require "upay/payment"
19
+
20
+ require "upay/people/person"
21
+ require "upay/people/buyer"
22
+ require "upay/people/payer"
23
+
24
+ require "upay/requestor"
25
+ require "upay/report"
26
+
27
+ require "upay/signature"
28
+ require "upay/subscription"
29
+ require "upay/token"
30
+ require "upay/transaction"
31
+ require "upay/version"
32
+
33
+
34
+
35
+ module Upay
36
+ include Veto.validator
37
+
38
+ PAYMENTS_API_URL = "/payments-api/4.0/service.cgi"
39
+ REPORTS_API_URL = "/reports-api/4.0/service.cgi"
40
+
41
+ def self.config
42
+ yield self
43
+ end
44
+
45
+ def self.merchant_id; @merchant_id end
46
+ def self.merchant_id=(merchant_id)
47
+ @merchant_id = merchant_id
48
+ end
49
+
50
+ def self.account_id; @account_id end
51
+ def self.account_id=(account_id)
52
+ @account_id = account_id
53
+ end
54
+
55
+ def self.api_key; @api_key end
56
+ def self.api_key=(api_key)
57
+ @api_key = api_key
58
+ end
59
+
60
+ def self.api_login; @api_login end
61
+ def self.api_login=(api_login)
62
+ @api_login = api_login
63
+ end
64
+
65
+ def self.test; @test end
66
+ def self.test=(test)
67
+ @test = test
68
+ end
69
+
70
+ def self.lang; @lang end
71
+ def self.lang=(lang)
72
+ @lang = lang
73
+ end
74
+
75
+ def self.logger; @logger end
76
+ def self.logger=(logger)
77
+ @logger = logger
78
+ end
79
+
80
+ def self.notifyUrl; @notifyUrl end
81
+ def self.notifyUrl=(notifyUrl)
82
+ @notifyUrl = notifyUrl
83
+ end
84
+
85
+ end
86
+
@@ -0,0 +1,36 @@
1
+ # spec/factories/shipping_address.rb
2
+
3
+ require 'faker'
4
+
5
+ FactoryGirl.define do
6
+
7
+ factory :address, class: Upay::Address::Address do |f|
8
+ f.street1{ Faker::Address.street_address }
9
+ f.street2{ Faker::Address.secondary_address }
10
+ f.city{ Faker::Address.city }
11
+ f.state{ Faker::Address.state }
12
+ f.country{ Faker::Address.country_code}
13
+ f.postalCode{ Faker::Address.zip_code }
14
+ f.phone{ Faker::Number.number(10) }
15
+ end
16
+
17
+ factory :shipping_address, class: Upay::Address::ShippingAddress do |f|
18
+ f.street1{ Faker::Address.street_address }
19
+ f.street2{ Faker::Address.secondary_address }
20
+ f.city{ Faker::Address.city }
21
+ f.state{ Faker::Address.state }
22
+ f.country{ Faker::Address.country_code}
23
+ f.postalCode{ Faker::Address.zip_code }
24
+ f.phone{ Faker::Number.number(10) }
25
+ end
26
+
27
+ factory :billing_address, class: Upay::Address::BillingAddress do |f|
28
+ f.street1{ Faker::Address.street_address }
29
+ f.street2{ Faker::Address.secondary_address }
30
+ f.city{ Faker::Address.city }
31
+ f.state{ Faker::Address.state }
32
+ f.country{ Faker::Address.country_code}
33
+ f.postalCode{ Faker::Address.zip_code }
34
+ f.phone{ Faker::Number.number(10) }
35
+ end
36
+ end
@@ -0,0 +1,22 @@
1
+ # spec/factories/credit_card.rb
2
+
3
+ require 'faker'
4
+
5
+ FactoryGirl.define do
6
+
7
+ factory :credit_card, class: Upay::CreditCard do |f|
8
+ f.name { Faker::Name.name }
9
+ f.document{ Faker::Number.number(10) }
10
+ f.number{ Faker::Number.number(10) }
11
+ f.expMonth{
12
+ date = Faker::Business.credit_card_expiry_date.strftime("%m/%Y").split("/")
13
+ date.first
14
+ }
15
+ f.expYear{
16
+ date = Faker::Business.credit_card_expiry_date.strftime("%m/%Y").split("/")
17
+ date.last
18
+ }
19
+ f.type{ Faker::Business.credit_card_type }
20
+ end
21
+
22
+ end
@@ -0,0 +1,12 @@
1
+ # spec/factories/customer.rb
2
+
3
+ require 'faker'
4
+
5
+ FactoryGirl.define do
6
+
7
+ factory :customer, class: Upay::Customer do |f|
8
+ f.fullName { Faker::Name.name }
9
+ f.email {Faker::Internet.email}
10
+ end
11
+
12
+ end
@@ -0,0 +1,13 @@
1
+ # spec/factories/order.rb
2
+
3
+ require 'faker'
4
+
5
+ FactoryGirl.define do
6
+
7
+ factory :order, class: Upay::Order do |f|
8
+ f.referenceCode{ Faker::Number.number(10) }
9
+ f.description{ Faker::Commerce.product_name }
10
+ f.signature{ Faker::Number.number(10) }
11
+ f.buyer{ FactoryGirl.build(:people_buyer) }
12
+ end
13
+ end
@@ -0,0 +1,29 @@
1
+ # spec/factories/person.rb
2
+
3
+ require 'faker'
4
+
5
+ FactoryGirl.define do
6
+
7
+ factory :people_person, class: Upay::People::Person do |f|
8
+ f.fullName{ Faker::Name.name}
9
+ f.emailAddress{ Faker::Internet.email }
10
+ f.contactPhone{ Faker::Number.number(10) }
11
+ end
12
+
13
+ factory :people_buyer, class: Upay::People::Buyer do |f|
14
+ person = FactoryGirl.build(:people_person)
15
+
16
+ f.fullName{ person.fullName}
17
+ f.emailAddress{ person.emailAddress}
18
+ f.contactPhone{ person.contactPhone }
19
+ end
20
+
21
+ factory :people_payer, class: Upay::People::Payer do |f|
22
+ person = FactoryGirl.build(:people_person)
23
+
24
+ f.fullName{ person.fullName}
25
+ f.emailAddress{ person.emailAddress}
26
+ f.contactPhone{ person.contactPhone }
27
+ end
28
+
29
+ end
@@ -0,0 +1,26 @@
1
+ # spec/factories/plan.rb
2
+
3
+ require 'faker'
4
+
5
+ FactoryGirl.define do
6
+
7
+ factory :plan, class: Upay::Plan do |f|
8
+ p_value = Faker::Number.number(5)
9
+ f.accountId{ Faker::Number.number(6)}
10
+ f.planCode{ Faker::Code.isbn}
11
+ f.description{ Faker::Lorem.sentence(3, true, 4) }
12
+ f.interval{ "MONTH" }
13
+ f.intervalCount{ Faker::Number.digit }
14
+ f.value{ p_value}
15
+ f.currency{ "COP" }
16
+ f.additionalValues{
17
+ [{
18
+ name: "PLAN_VALUE",
19
+ value: p_value,
20
+ currency: "COP"
21
+ }]
22
+ }
23
+ f.trialDays{ Faker::Number.digit }
24
+ end
25
+
26
+ end
@@ -0,0 +1,18 @@
1
+ # spec/factories/token.rb
2
+
3
+ require 'faker'
4
+
5
+ FactoryGirl.define do
6
+
7
+ factory :token, class: Upay::Token do |f|
8
+ f.payerId{ Faker::Number.number(5)}
9
+ f.name{ Faker::Name.name }
10
+ f.identificationNumber{ Faker::Number.number(10) }
11
+ f.paymentMethod{ Faker::Business.credit_card_type }
12
+ f.number{ Faker::Business.credit_card_number.gsub("-", "") }
13
+ f.expirationDate{
14
+ date = Faker::Business.credit_card_expiry_date.strftime("%m/%Y").split("/")
15
+ "#{date.last}/#{date.first}"
16
+ }
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ # spec/factories/transaction.rb
2
+
3
+ require 'faker'
4
+
5
+ FactoryGirl.define do
6
+ factory :transaction, class: Upay::Transaction do |f|
7
+ f.creditCardTokenId{ Faker::Internet.password(10, 20) }
8
+ f.cookie{ Faker::Internet.password(10, 20) }
9
+ f.deviceSessionId{ Faker::Internet.password(10, 20) }
10
+ f.order{ FactoryGirl.build(:order) }
11
+ f.payer{ FactoryGirl.build(:people_payer) }
12
+ f.paymentCountry{ Faker::Address.country_code }
13
+ f.paymentMethod{ Faker::Business.credit_card_type.upcase }
14
+ f.type{ "AUTHORIZATION_AND_CAPTURE" }
15
+ end
16
+ end
@@ -0,0 +1,34 @@
1
+ # spec/models/address.rb
2
+ require 'spec_helper'
3
+
4
+ describe Upay::Address::Address do
5
+ it "has a valid factory" do
6
+ ship_address = FactoryGirl.build(:address)
7
+ expect(ship_address).to be_valid
8
+ end
9
+
10
+ it "is invalid without a street1" do
11
+ ship_address = FactoryGirl.build(:address, street1: nil)
12
+ expect(ship_address).to_not be_valid
13
+ end
14
+
15
+ it "is invalid without a city" do
16
+ ship_address = FactoryGirl.build(:address, city: nil);
17
+ expect(ship_address).to_not be_valid
18
+ end
19
+
20
+ it "is invalid without a state" do
21
+ ship_address = FactoryGirl.build(:address, state: nil);
22
+ expect(ship_address).to_not be_valid
23
+ end
24
+
25
+ it "is invalid without a country" do
26
+ ship_address = FactoryGirl.build(:address, country: nil);
27
+ expect(ship_address).to_not be_valid
28
+ end
29
+
30
+ it "is invalid without a postalCode" do
31
+ ship_address = FactoryGirl.build(:address, postalCode: nil);
32
+ expect(ship_address).to_not be_valid
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ # spec/models/billing_address.rb
2
+ require 'spec_helper'
3
+
4
+ describe Upay::Address::BillingAddress do
5
+ it "has a valid factory" do
6
+ ship_address = FactoryGirl.build(:billing_address)
7
+ expect(ship_address).to be_valid
8
+ end
9
+
10
+ it "is invalid without a street1" do
11
+ ship_address = FactoryGirl.build(:billing_address, street1: nil)
12
+ expect(ship_address).to_not be_valid
13
+ end
14
+
15
+ it "is invalid without a city" do
16
+ ship_address = FactoryGirl.build(:billing_address, city: nil);
17
+ expect(ship_address).to_not be_valid
18
+ end
19
+
20
+ it "is invalid without a state" do
21
+ ship_address = FactoryGirl.build(:billing_address, state: nil);
22
+ expect(ship_address).to_not be_valid
23
+ end
24
+
25
+ it "is invalid without a country" do
26
+ ship_address = FactoryGirl.build(:billing_address, country: nil);
27
+ expect(ship_address).to_not be_valid
28
+ end
29
+
30
+ it "is invalid without a postalCode" do
31
+ ship_address = FactoryGirl.build(:billing_address, postalCode: nil);
32
+ expect(ship_address).to_not be_valid
33
+ end
34
+ end