usps-imis-api 0.6.16 → 0.7.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -3
- data/Gemfile.lock +36 -30
- data/Readme.md +39 -15
- data/lib/usps/imis/api.rb +8 -7
- data/lib/usps/imis/business_object.rb +55 -34
- data/lib/usps/imis/config.rb +1 -1
- data/lib/usps/imis/error.rb +51 -0
- data/lib/usps/imis/errors/api_error.rb +11 -0
- data/lib/usps/imis/errors/config_error.rb +11 -0
- data/lib/usps/imis/errors/locked_id_error.rb +15 -0
- data/lib/usps/imis/errors/mapper_error.rb +29 -0
- data/lib/usps/imis/errors/not_found_error.rb +11 -0
- data/lib/usps/imis/errors/panel_unimplemented_error.rb +34 -0
- data/lib/usps/imis/{error → errors}/response_error.rb +4 -7
- data/lib/usps/imis/errors/unexpected_property_type_error.rb +31 -0
- data/lib/usps/imis/mapper.rb +1 -5
- data/lib/usps/imis/mocks/business_object.rb +37 -0
- data/lib/usps/imis/mocks.rb +11 -0
- data/lib/usps/imis/{panel → panels}/base_panel.rb +26 -22
- data/lib/usps/imis/{panel → panels}/education.rb +1 -1
- data/lib/usps/imis/{panel → panels}/vsc.rb +1 -1
- data/lib/usps/imis/panels.rb +25 -0
- data/lib/usps/imis/properties.rb +1 -1
- data/lib/usps/imis/requests.rb +1 -1
- data/lib/usps/imis/version.rb +1 -1
- data/lib/usps/imis.rb +5 -15
- data/spec/lib/usps/imis/api_spec.rb +5 -5
- data/spec/lib/usps/imis/business_object_spec.rb +35 -13
- data/spec/lib/usps/imis/config_spec.rb +1 -1
- data/spec/lib/usps/imis/{error/api_error_spec.rb → error_spec.rb} +1 -1
- data/spec/lib/usps/imis/{error → errors}/response_error_spec.rb +4 -4
- data/spec/lib/usps/imis/mapper_spec.rb +2 -2
- data/spec/lib/usps/imis/{business_object_mock_spec.rb → mocks/business_object_spec.rb} +1 -1
- data/spec/lib/usps/imis/panels/base_panel_spec.rb +33 -0
- data/spec/lib/usps/imis/{panel → panels}/education_spec.rb +12 -2
- data/spec/lib/usps/imis/{panel → panels}/vsc_spec.rb +2 -2
- data/spec/lib/usps/imis/properties_spec.rb +1 -1
- data/usps-imis-api.gemspec +1 -1
- metadata +23 -16
- data/lib/ext/hash.rb +0 -10
- data/lib/usps/imis/business_object_mock.rb +0 -35
- data/lib/usps/imis/error/api_error.rb +0 -44
- data/lib/usps/imis/error/mapper_error.rb +0 -11
- data/spec/lib/usps/imis/panel/base_panel_spec.rb +0 -32
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.
|
|
4
|
+
version: 0.7.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Julian Fiander
|
|
@@ -41,37 +41,44 @@ files:
|
|
|
41
41
|
- Readme.md
|
|
42
42
|
- bin/console
|
|
43
43
|
- bin/setup
|
|
44
|
-
- lib/ext/hash.rb
|
|
45
44
|
- lib/usps/imis.rb
|
|
46
45
|
- lib/usps/imis/api.rb
|
|
47
46
|
- lib/usps/imis/business_object.rb
|
|
48
|
-
- lib/usps/imis/business_object_mock.rb
|
|
49
47
|
- lib/usps/imis/config.rb
|
|
50
|
-
- lib/usps/imis/error
|
|
51
|
-
- lib/usps/imis/
|
|
52
|
-
- lib/usps/imis/
|
|
48
|
+
- lib/usps/imis/error.rb
|
|
49
|
+
- lib/usps/imis/errors/api_error.rb
|
|
50
|
+
- lib/usps/imis/errors/config_error.rb
|
|
51
|
+
- lib/usps/imis/errors/locked_id_error.rb
|
|
52
|
+
- lib/usps/imis/errors/mapper_error.rb
|
|
53
|
+
- lib/usps/imis/errors/not_found_error.rb
|
|
54
|
+
- lib/usps/imis/errors/panel_unimplemented_error.rb
|
|
55
|
+
- lib/usps/imis/errors/response_error.rb
|
|
56
|
+
- lib/usps/imis/errors/unexpected_property_type_error.rb
|
|
53
57
|
- lib/usps/imis/mapper.rb
|
|
54
|
-
- lib/usps/imis/
|
|
55
|
-
- lib/usps/imis/
|
|
56
|
-
- lib/usps/imis/
|
|
58
|
+
- lib/usps/imis/mocks.rb
|
|
59
|
+
- lib/usps/imis/mocks/business_object.rb
|
|
60
|
+
- lib/usps/imis/panels.rb
|
|
61
|
+
- lib/usps/imis/panels/base_panel.rb
|
|
62
|
+
- lib/usps/imis/panels/education.rb
|
|
63
|
+
- lib/usps/imis/panels/vsc.rb
|
|
57
64
|
- lib/usps/imis/properties.rb
|
|
58
65
|
- lib/usps/imis/requests.rb
|
|
59
66
|
- lib/usps/imis/version.rb
|
|
60
67
|
- spec/lib/usps/imis/api_spec.rb
|
|
61
|
-
- spec/lib/usps/imis/business_object_mock_spec.rb
|
|
62
68
|
- spec/lib/usps/imis/business_object_spec.rb
|
|
63
69
|
- spec/lib/usps/imis/config_spec.rb
|
|
64
|
-
- spec/lib/usps/imis/
|
|
65
|
-
- spec/lib/usps/imis/
|
|
70
|
+
- spec/lib/usps/imis/error_spec.rb
|
|
71
|
+
- spec/lib/usps/imis/errors/response_error_spec.rb
|
|
66
72
|
- spec/lib/usps/imis/mapper_spec.rb
|
|
67
|
-
- spec/lib/usps/imis/
|
|
68
|
-
- spec/lib/usps/imis/
|
|
69
|
-
- spec/lib/usps/imis/
|
|
73
|
+
- spec/lib/usps/imis/mocks/business_object_spec.rb
|
|
74
|
+
- spec/lib/usps/imis/panels/base_panel_spec.rb
|
|
75
|
+
- spec/lib/usps/imis/panels/education_spec.rb
|
|
76
|
+
- spec/lib/usps/imis/panels/vsc_spec.rb
|
|
70
77
|
- spec/lib/usps/imis/properties_spec.rb
|
|
71
78
|
- spec/lib/usps/imis_spec.rb
|
|
72
79
|
- spec/spec_helper.rb
|
|
73
80
|
- usps-imis-api.gemspec
|
|
74
|
-
homepage:
|
|
81
|
+
homepage: https://github.com/unitedstatespowersquadrons/imis-api-ruby
|
|
75
82
|
licenses: []
|
|
76
83
|
metadata:
|
|
77
84
|
rubygems_mfa_required: 'true'
|
data/lib/ext/hash.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Usps
|
|
4
|
-
module Imis
|
|
5
|
-
# Mock data response for testing
|
|
6
|
-
#
|
|
7
|
-
class BusinessObjectMock
|
|
8
|
-
attr_reader :fields
|
|
9
|
-
|
|
10
|
-
def initialize(**fields)
|
|
11
|
-
@fields = fields.transform_keys(&:to_s)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def get_field(name) = fields[name]
|
|
15
|
-
|
|
16
|
-
def get
|
|
17
|
-
Usps::Imis::Properties.build do |props|
|
|
18
|
-
fields.each { |name, value| props.add(name, value) }
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def put_fields(data)
|
|
23
|
-
Usps::Imis::Properties.build do |props|
|
|
24
|
-
fields.merge(data.transform_keys(&:to_s)).each { |name, value| props.add(name, value) }
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def put(data) = data
|
|
29
|
-
|
|
30
|
-
def post(data) = data
|
|
31
|
-
|
|
32
|
-
def delete = ''
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Usps
|
|
4
|
-
module Imis
|
|
5
|
-
module Error
|
|
6
|
-
# Base error class for all internal exceptions
|
|
7
|
-
#
|
|
8
|
-
class ApiError < StandardError
|
|
9
|
-
# Additional call-specific metadata to pass through to Bugsnag
|
|
10
|
-
#
|
|
11
|
-
attr_accessor :metadata
|
|
12
|
-
|
|
13
|
-
# A new instance of +ApiError+
|
|
14
|
-
#
|
|
15
|
-
# @param message [String] The base exception message
|
|
16
|
-
# @param metadata [Hash] Additional call-specific metadata to pass through to Bugsnag
|
|
17
|
-
#
|
|
18
|
-
def initialize(message, metadata = {})
|
|
19
|
-
super(message)
|
|
20
|
-
@metadata = metadata
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# Additional metadata to include in Bugsnag reports
|
|
24
|
-
#
|
|
25
|
-
# Can include fields at the top level, which will be shows on the custom tab
|
|
26
|
-
#
|
|
27
|
-
# Can include fields nested under a top-level key, which will be shown on a tab with the
|
|
28
|
-
# top-level key as its name
|
|
29
|
-
#
|
|
30
|
-
# @return [Hash]
|
|
31
|
-
#
|
|
32
|
-
def bugsnag_meta_data
|
|
33
|
-
metadata == {} ? {} : base_metadata
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
private
|
|
37
|
-
|
|
38
|
-
def base_metadata
|
|
39
|
-
{ api: metadata }
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
|
|
5
|
-
module Usps
|
|
6
|
-
module Imis
|
|
7
|
-
module Panel
|
|
8
|
-
class InvalidPanel < BasePanel; end
|
|
9
|
-
|
|
10
|
-
class InvalidPanelWithBusinessObject < BasePanel
|
|
11
|
-
private
|
|
12
|
-
|
|
13
|
-
def business_object = 'Something'
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
describe Usps::Imis::Panel::BasePanel do
|
|
20
|
-
it 'requires #business_object to be defined' do
|
|
21
|
-
expect { Usps::Imis::Panel::InvalidPanel.new.get(1) }.to raise_error(
|
|
22
|
-
Usps::Imis::Error::ApiError, 'Usps::Imis::Panel::InvalidPanel must implement #business_object'
|
|
23
|
-
)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it 'requires #payload(data) to be defined' do
|
|
27
|
-
expect { Usps::Imis::Panel::InvalidPanelWithBusinessObject.new.create({}) }.to raise_error(
|
|
28
|
-
Usps::Imis::Error::ApiError,
|
|
29
|
-
'Usps::Imis::Panel::InvalidPanelWithBusinessObject must implement #payload(data)'
|
|
30
|
-
)
|
|
31
|
-
end
|
|
32
|
-
end
|