usps-imis-api 0.6.4 → 0.6.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec6fd6190ca25775a69fca08cc8d16ba0177b6e34cd3643da1d07143720d607d
4
- data.tar.gz: e73a5bf6dbc6f1d0daeab108bcd5a9ea86e925348562e25c76347a8e4c8a6b08
3
+ metadata.gz: 2cb3b6691433ac4025d4754b093d3843620e13396cdd61995cce7b8b0c330da5
4
+ data.tar.gz: a46f9929ea1dd7eabf47eb6364768014807129cf495f84748e6cb8d2cb95aa72
5
5
  SHA512:
6
- metadata.gz: 6eb831bd549f3f9b95d4cb731974c2232f2defa762014f2471f9fb88de6386f350c1e2b09a3398e29b2c103c079666df5eca835a7c57f716c2263d794f0c7176
7
- data.tar.gz: c84a91ef84235ea7f472824626ef59d946b35e04fee52c34375cd1e002c52ed4a75b08d76a3bc40576a349cd6960fec1a6a4124465e1e1061d2c40cb832d9147
6
+ metadata.gz: 2cf22b22ca0e4c99e450e5805a58a841d462e86fd0b61f54c8ec62abb04d7cd875808f80fb078933490af9db7082b8bc6b88a4f3a1855e266c1aefbd76479516
7
+ data.tar.gz: b666bb26b1ffd36d48fd968c6eeb20a137d91abdf807013716b297c3a2ccb1a8166bf2b1968b4dd9a85dbf5a9114212d521f4235c050948c907b300227cc4444
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- usps-imis-api (0.6.4)
4
+ usps-imis-api (0.6.5)
5
5
  activesupport (~> 8.0)
6
6
 
7
7
  GEM
@@ -60,37 +60,61 @@ module Usps
60
60
  raise Error::ApiError, "#{self.class.name} must implement #payload(data)"
61
61
  end
62
62
 
63
- # rubocop:disable Metrics/MethodLength
64
63
  def payload_header(data)
65
- identity_type =
66
- 'System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib'
67
-
68
64
  {
69
65
  '$type' => 'Asi.Soa.Core.DataContracts.GenericEntityData, Asi.Contracts',
70
66
  'EntityTypeName' => business_object,
71
67
  'PrimaryParentEntityTypeName' => 'Party',
72
- 'Identity' => {
73
- '$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
74
- 'EntityTypeName' => business_object,
75
- 'IdentityElements' => {
76
- '$type' => identity_type,
77
- '$values' => [api.imis_id, data[:ordinal]&.to_s].compact
78
- }
79
- },
80
- 'PrimaryParentIdentity' => {
81
- '$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
82
- 'EntityTypeName' => 'Party',
83
- 'IdentityElements' => {
84
- '$type' => identity_type,
85
- '$values' => [api.imis_id]
86
- }
68
+ 'Identity' => identity(data[:ordinal]),
69
+ 'PrimaryParentIdentity' => primary_parent_identity
70
+ }
71
+ end
72
+
73
+ def identity(ordinal = nil)
74
+ {
75
+ '$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
76
+ 'EntityTypeName' => business_object,
77
+ 'IdentityElements' => {
78
+ '$type' => identity_type,
79
+ '$values' => [api.imis_id, ordinal&.to_s].compact
87
80
  }
88
81
  }
89
82
  end
90
- # rubocop:enable Metrics/MethodLength
91
83
 
92
- def property(name, value)
84
+ def primary_parent_identity
93
85
  {
86
+ '$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
87
+ 'EntityTypeName' => 'Party',
88
+ 'IdentityElements' => {
89
+ '$type' => identity_type,
90
+ '$values' => [api.imis_id]
91
+ }
92
+ }
93
+ end
94
+
95
+ def identity_type
96
+ 'System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib'
97
+ end
98
+
99
+ def properties(data, &)
100
+ @properties = []
101
+
102
+ instance_eval(&)
103
+
104
+ payload_header(data).merge(
105
+ 'Properties' => {
106
+ '$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts',
107
+ '$values' => @properties
108
+ }
109
+ )
110
+ ensure
111
+ remove_instance_variable(:@properties)
112
+ end
113
+
114
+ def property(name, value)
115
+ raise Error::ApiError, 'Must be called within a `properties` block' unless defined?(@properties)
116
+
117
+ @properties << {
94
118
  '$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
95
119
  'Name' => name,
96
120
  'Value' => value
@@ -12,28 +12,21 @@ module Usps
12
12
  'ABC_ASC_Educ'
13
13
  end
14
14
 
15
- # rubocop:disable Metrics/MethodLength
16
15
  def payload(data)
17
- payload_header(data).merge(
18
- 'Properties' => {
19
- '$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts',
20
- '$values' => [
21
- property('ID', api.imis_id),
22
- (property('Ordinal', { '$type' => 'System.Int32', '$value' => data[:ordinal] }) if data[:ordinal]),
23
- property('ABC_EDUC_THRU_DATE', data[:thru_date] || '0001-01-01T00:00:00'),
24
- property('ABC_ECertificate', data[:certificate]),
25
- property('ABC_Educ_Description', data[:description]),
26
- property('ABC_Educ_Effective_Date', data[:effective_date]),
27
- property('ABC_Educ_Source_System', data[:source]),
28
- property('ABC_Educ_Transaction_Date', Time.now.strftime('%Y-%m-%dT%H:%I:%S')),
29
- property('ABC_Other_Code', data[:code]),
30
- property('ABC_Product_Code', data[:type_code]),
31
- property('ABC_TYPE', data[:abc_type_code] || 'EDUC')
32
- ].compact
33
- }
34
- )
16
+ properties(data) do
17
+ property 'ID', api.imis_id
18
+ property 'Ordinal', { '$type' => 'System.Int32', '$value' => data[:ordinal] } if data[:ordinal]
19
+ property 'ABC_EDUC_THRU_DATE', data[:thru_date] || '0001-01-01T00:00:00'
20
+ property 'ABC_ECertificate', data[:certificate]
21
+ property 'ABC_Educ_Description', data[:description]
22
+ property 'ABC_Educ_Effective_Date', data[:effective_date]
23
+ property 'ABC_Educ_Source_System', data[:source]
24
+ property 'ABC_Educ_Transaction_Date', Time.now.strftime('%Y-%m-%dT%H:%I:%S')
25
+ property 'ABC_Other_Code', data[:code]
26
+ property 'ABC_Product_Code', data[:type_code]
27
+ property 'ABC_TYPE', data[:abc_type_code] || 'EDUC'
28
+ end
35
29
  end
36
- # rubocop:enable Metrics/MethodLength
37
30
  end
38
31
  end
39
32
  end
@@ -12,27 +12,20 @@ module Usps
12
12
  'ABC_ASC_Vessel_Safety_Checks'
13
13
  end
14
14
 
15
- # rubocop:disable Metrics/MethodLength
16
15
  def payload(data)
17
- payload_header(data).merge(
18
- 'Properties' => {
19
- '$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts',
20
- '$values' => [
21
- property('ID', api.imis_id),
22
- (property('Ordinal', { '$type' => 'System.Int32', '$value' => data[:ordinal] }) if data[:ordinal]),
23
- property('Source_System', 'Manual ITCom Entry'),
24
- property('ABC_ECertificate', data[:certificate]),
25
- property('Activity_Type', 'VSC'),
26
- property('Description', 'Vessel Safety Checks'),
27
- property('Effective_Date', "#{data[:year]}-12-01T00:00:00"),
28
- property('Quantity', { '$type' => 'System.Int32', '$value' => data[:count] }),
29
- property('Thru_Date', "#{data[:year]}-12-31T00:00:00"),
30
- property('Transaction_Date', Time.now.strftime('%Y-%m-%dT%H:%M:%S'))
31
- ].compact
32
- }
33
- )
16
+ properties(data) do
17
+ property 'ID', api.imis_id
18
+ property 'Ordinal', { '$type' => 'System.Int32', '$value' => data[:ordinal] } if data[:ordinal]
19
+ property 'Source_System', 'Manual ITCom Entry'
20
+ property 'ABC_ECertificate', data[:certificate]
21
+ property 'Activity_Type', 'VSC'
22
+ property 'Description', 'Vessel Safety Checks'
23
+ property 'Effective_Date', "#{data[:year]}-12-01T00:00:00"
24
+ property 'Quantity', { '$type' => 'System.Int32', '$value' => data[:count] }
25
+ property 'Thru_Date', "#{data[:year]}-12-31T00:00:00"
26
+ property 'Transaction_Date', Time.now.strftime('%Y-%m-%dT%H:%M:%S')
27
+ end
34
28
  end
35
- # rubocop:enable Metrics/MethodLength
36
29
  end
37
30
  end
38
31
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Usps
4
4
  module Imis
5
- VERSION = '0.6.4'
5
+ VERSION = '0.6.5'
6
6
  end
7
7
  end
@@ -29,4 +29,10 @@ describe Usps::Imis::Panel::BasePanel do
29
29
  'Usps::Imis::Panel::InvalidPanelWithBusinessObject must implement #payload(data)'
30
30
  )
31
31
  end
32
+
33
+ it 'does not allow calling property outside of a properties block' do
34
+ expect { described_class.new.send(:property, 'name', 'value') }.to raise_error(
35
+ Usps::Imis::Error::ApiError, 'Must be called within a `properties` block'
36
+ )
37
+ end
32
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usps-imis-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Fiander