seven_api 0.6.0 → 0.6.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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -6
  3. data/.idea/inspectionProfiles/Project_Default.xml +5 -5
  4. data/.idea/ruby-client.iml +48 -13
  5. data/Gemfile +2 -2
  6. data/LICENSE +21 -21
  7. data/README.md +1 -1
  8. data/Rakefile +5 -5
  9. data/doc/SevenApi/Client.html +8 -8
  10. data/doc/SevenApi/Contacts/Action.html +0 -0
  11. data/doc/SevenApi/Contacts.html +0 -0
  12. data/doc/SevenApi/Endpoint.html +0 -0
  13. data/doc/SevenApi/Hooks/Action.html +0 -0
  14. data/doc/SevenApi/Hooks/EventType.html +0 -0
  15. data/doc/SevenApi/Hooks/RequestMethod.html +0 -0
  16. data/doc/SevenApi/Hooks/Validator.html +26 -26
  17. data/doc/SevenApi/Hooks.html +0 -0
  18. data/doc/SevenApi/Journal/Type.html +0 -0
  19. data/doc/SevenApi/Journal/Validator.html +18 -18
  20. data/doc/SevenApi/Journal.html +0 -0
  21. data/doc/SevenApi/Lookup/Type.html +0 -0
  22. data/doc/SevenApi/Lookup.html +0 -0
  23. data/doc/SevenApi/Resource.html +13 -13
  24. data/doc/SevenApi/Resources/Analytics.html +2 -2
  25. data/doc/SevenApi/Resources/Balance.html +2 -2
  26. data/doc/SevenApi/Resources/Contacts.html +6 -6
  27. data/doc/SevenApi/Resources/Hooks.html +10 -10
  28. data/doc/SevenApi/Resources/Journal.html +2 -2
  29. data/doc/SevenApi/Resources/Lookup.html +8 -8
  30. data/doc/SevenApi/Resources/Pricing.html +2 -2
  31. data/doc/SevenApi/Resources/Sms.html +2 -2
  32. data/doc/SevenApi/Resources/Status.html +2 -2
  33. data/doc/SevenApi/Resources/Subaccounts.html +18 -18
  34. data/doc/SevenApi/Resources/ValidateForVoice.html +2 -2
  35. data/doc/SevenApi/Resources/Voice.html +2 -2
  36. data/doc/SevenApi/Resources.html +0 -0
  37. data/doc/SevenApi/Sms/Type.html +0 -0
  38. data/doc/SevenApi/Sms.html +0 -0
  39. data/doc/SevenApi/Subaccounts/Action.html +0 -0
  40. data/doc/SevenApi/Subaccounts/Validator.html +29 -29
  41. data/doc/SevenApi/Subaccounts.html +0 -0
  42. data/doc/SevenApi/Util.html +39 -39
  43. data/doc/SevenApi.html +0 -0
  44. data/document.sh +3 -0
  45. data/lib/seven_api/client.rb +32 -32
  46. data/lib/seven_api/contacts.rb +5 -5
  47. data/lib/seven_api/endpoint.rb +0 -0
  48. data/lib/seven_api/hooks.rb +69 -68
  49. data/lib/seven_api/journal.rb +39 -39
  50. data/lib/seven_api/lookup.rb +12 -12
  51. data/lib/seven_api/numbers.rb +9 -9
  52. data/lib/seven_api/paginated.rb +10 -10
  53. data/lib/seven_api/rcs.rb +0 -0
  54. data/lib/seven_api/resource.rb +1 -2
  55. data/lib/seven_api/resources/analytics.rb +54 -54
  56. data/lib/seven_api/resources/balance.rb +19 -19
  57. data/lib/seven_api/resources/contacts.rb +56 -56
  58. data/lib/seven_api/resources/groups.rb +56 -56
  59. data/lib/seven_api/resources/hooks.rb +40 -40
  60. data/lib/seven_api/resources/journal.rb +20 -20
  61. data/lib/seven_api/resources/lookup.rb +63 -63
  62. data/lib/seven_api/resources/numbers.rb +70 -69
  63. data/lib/seven_api/resources/pricing.rb +20 -20
  64. data/lib/seven_api/resources/rcs.rb +3 -3
  65. data/lib/seven_api/resources/sms.rb +29 -20
  66. data/lib/seven_api/resources/status.rb +20 -20
  67. data/lib/seven_api/resources/subaccounts.rb +65 -65
  68. data/lib/seven_api/resources/validate_for_voice.rb +20 -20
  69. data/lib/seven_api/resources/voice.rb +29 -20
  70. data/lib/seven_api/sms.rb +9 -9
  71. data/lib/seven_api/subaccounts.rb +55 -55
  72. data/lib/seven_api/util.rb +68 -68
  73. data/lib/seven_api/version.rb +5 -5
  74. data/lib/seven_api.rb +6 -6
  75. data/release.sh +4 -4
  76. data/seven_api.gemspec +0 -0
  77. data/spec/EnvKeyStore.rb +14 -14
  78. data/spec/matchers.rb +22 -22
  79. data/spec/seven_api/analytics_spec.rb +49 -49
  80. data/spec/seven_api/balance_spec.rb +18 -18
  81. data/spec/seven_api/client_spec.rb +15 -15
  82. data/spec/seven_api/contacts_spec.rb +100 -100
  83. data/spec/seven_api/groups_spec.rb +74 -74
  84. data/spec/seven_api/hooks_spec.rb +108 -108
  85. data/spec/seven_api/instance_spec.rb +22 -22
  86. data/spec/seven_api/journal_spec.rb +86 -86
  87. data/spec/seven_api/lookup_spec.rb +197 -197
  88. data/spec/seven_api/numbers_spec.rb +135 -135
  89. data/spec/seven_api/pricing_spec.rb +76 -76
  90. data/spec/seven_api/rcs_spec.rb +0 -0
  91. data/spec/seven_api/sms_spec.rb +103 -103
  92. data/spec/seven_api/subaccounts_spec.rb +121 -121
  93. data/spec/seven_api/validate_for_voice_spec.rb +19 -19
  94. data/spec/seven_api/voice_spec.rb +51 -51
  95. data/spec/seven_api_spec.rb +9 -9
  96. metadata +4 -6
@@ -1,197 +1,197 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'seven_api/endpoint'
5
- require 'seven_api/lookup'
6
- require 'seven_api/resources/lookup'
7
- require 'json'
8
-
9
- RSpec.describe SevenApi, 'lookup' do
10
- helper = Helper.new(SevenApi::Resources::Lookup)
11
-
12
- def request(type, stub, params = { number: '+491771783130' })
13
- helper.request(helper.resource.method(type), stub, params)
14
- end
15
-
16
- it 'misses number to lookup' do
17
- stub = {
18
- carrier: nil,
19
- country_code: false,
20
- country_iso: nil,
21
- country_name: nil,
22
- international: '+',
23
- international_formatted: '',
24
- national: '',
25
- network_type: nil,
26
- success: false
27
- }
28
- path = SevenApi::Resources::Lookup.const_get('PATHS')[:format]
29
- res = helper.request(helper.resource.method(:format), stub, { number: '' }, path)
30
-
31
- expect(res).to be_a(Hash)
32
- expect(res[:success]).to match(false)
33
- end
34
-
35
- it 'returns number formatting details' do
36
- stub = {
37
- carrier: 'Eplus',
38
- country_code: '49',
39
- country_iso: 'DE',
40
- country_name: 'Germany',
41
- international: '+491771783130',
42
- international_formatted: '+49 177 1783130',
43
- national: '0177 1783130',
44
- network_type: 'mobile',
45
- success: true
46
- }
47
- path = SevenApi::Resources::Lookup.const_get('PATHS')[:format]
48
- body = helper.request(helper.resource.method(:format), stub, { number: '+491771783130' }, path)
49
-
50
- assert_format(body)
51
- end
52
-
53
- it 'returns RCS lookup capabilities' do
54
- stub = {
55
- carrier: "O2",
56
- country_code: "49",
57
- country_iso: "DE",
58
- country_name: "Germany",
59
- international: "+49176123456789",
60
- international_formatted: "+49 179 123456789",
61
- national: "0176 12345679",
62
- network_type: "mobile",
63
- rcs_capabilities: %w[ACTION_CREATE_CALENDAR_EVENT ACTION_DIAL ACTION_OPEN_URL ACTION_SHARE_LOCATION ACTION_VIEW_LOCATION RICHCARD_CAROUSEL RICHCARD_STANDALONE],
64
- success: true
65
- }
66
- path = SevenApi::Resources::Lookup.const_get('PATHS')[:rcs_capabilities]
67
- body = helper.request(helper.resource.method(:rcs_capabilities), stub, { number: '+491771783130' }, path)
68
-
69
- assert_format(body)
70
- expect(body[:rcs_capabilities]).to be_a(Array)
71
- end
72
-
73
- it 'returns CNAM details' do
74
- stub = {
75
- code: '100',
76
- name: 'GERMANY',
77
- number: '+491771783130',
78
- success: 'true'
79
- }
80
- path = SevenApi::Resources::Lookup.const_get('PATHS')[:cnam]
81
- body = helper.request(helper.resource.method(:cnam), stub, { number: '+491771783130' }, path)
82
-
83
- expect(body).to be_a(Hash)
84
- expect(body[:code]).to be_a(String)
85
- expect(body[:name]).to be_a(String)
86
- expect(body[:number]).to be_a(String)
87
- expect(body[:success]).to be_a(String)
88
- end
89
-
90
- it 'returns MNP details' do
91
- stub = {
92
- code: 100,
93
- mnp: {
94
- country: 'DE',
95
- international_formatted: '+49 177 1783130',
96
- isPorted: false,
97
- mccmnc: '26203',
98
- national_format: '0177 1783130',
99
- network: "Telef\u00f3nica Germany GmbH & Co. oHG (O2)",
100
- number: '+491771783130'
101
- },
102
- price: 0.005,
103
- success: true
104
- }
105
- path = SevenApi::Resources::Lookup.const_get('PATHS')[:mnp]
106
- body = helper.request(helper.resource.method(:mnp), stub, { number: '+491771783130' }, path)
107
-
108
- expect(body).to be_a(Hash)
109
- expect(body[:code]).to be_a(Integer)
110
- expect(body[:price]).to be_a(Float)
111
- expect(body[:mnp]).to be_a(Hash)
112
- expect(body[:mnp][:country]).to be_a(String)
113
- expect(body[:mnp][:international_formatted]).to be_a(String)
114
- expect(body[:mnp][:isPorted]).to be_boolean
115
- expect(body[:mnp][:mccmnc]).to be_a(String)
116
- expect(body[:mnp][:national_format]).to be_a(String)
117
- expect(body[:mnp][:network]).to be_a(String)
118
- expect(body[:mnp][:number]).to be_a(String)
119
- expect(body[:success]).to be_boolean
120
- end
121
-
122
- it 'returns HLR details' do
123
- stub = {
124
- country_code: 'DE',
125
- country_name: 'Germany',
126
- country_prefix: '49',
127
- current_carrier: {
128
- country: 'DE',
129
- name: "Telef\u00f3nica Germany GmbH & Co. oHG (O2)",
130
- network_code: '26203',
131
- network_type: 'mobile'
132
- },
133
- international_format_number: '491771783130',
134
- international_formatted: '+49 177 1783130',
135
- lookup_outcome: true,
136
- lookup_outcome_message: 'success',
137
- national_format_number: '0177 1783130',
138
- original_carrier: {
139
- country: 'DE',
140
- name: "Telef\u00f3nica Germany GmbH & Co. oHG (O2)",
141
- network_code: '26203',
142
- network_type: 'mobile'
143
- },
144
- status: true,
145
- status_message: 'success',
146
- gsm_code: '0',
147
- gsm_message: 'No error',
148
- ported: 'assumed_not_ported',
149
- reachable: 'reachable',
150
- roaming: 'not_roaming',
151
- valid_number: 'valid'
152
- }
153
- path = SevenApi::Resources::Lookup.const_get('PATHS')[:hlr]
154
- body = helper.request(helper.resource.method(:hlr), stub, { number: '+491771783130' }, path)
155
-
156
- expect(body).to be_a(Hash)
157
- expect(body[:country_code]).to be_a(String)
158
- expect(body[:country_name]).to be_a(String)
159
- expect(body[:country_prefix]).to be_a(String)
160
- assert_carrier(body[:current_carrier])
161
- expect(body[:international_format_number]).to be_a(String)
162
- expect(body[:international_formatted]).to be_a(String)
163
- expect(body[:lookup_outcome]).to be_boolean
164
- expect(body[:lookup_outcome_message]).to be_a(String)
165
- expect(body[:national_format_number]).to be_a(String)
166
- assert_carrier(body[:original_carrier])
167
- expect(body[:status]).to be_boolean
168
- expect(body[:status_message]).to be_a(String)
169
- expect(body[:gsm_code]).to be_a(String)
170
- expect(body[:gsm_message]).to be_a(String)
171
- expect(body[:ported]).to be_a(String)
172
- expect(body[:reachable]).to be_a(String)
173
- expect(body[:roaming]).to be_a(String)
174
- expect(body[:valid_number]).to be_a(String)
175
- end
176
-
177
- def assert_carrier(hash)
178
- expect(hash).to be_a(Hash)
179
- expect(hash[:country]).to be_a(String)
180
- expect(hash[:name]).to be_a(String)
181
- expect(hash[:network_code]).to be_a(String)
182
- expect(hash[:network_type]).to be_a(String)
183
- end
184
-
185
- def assert_format(body)
186
- expect(body).to be_a(Hash)
187
- expect(body[:carrier]).to be_a(String)
188
- expect(body[:country_code]).to be_a(String)
189
- expect(body[:country_iso]).to be_a(String)
190
- expect(body[:country_name]).to be_a(String)
191
- expect(body[:international]).to be_a(String)
192
- expect(body[:international_formatted]).to be_a(String)
193
- expect(body[:national]).to be_a(String)
194
- expect(body[:network_type]).to be_a(String)
195
- expect(body[:success]).to be_boolean
196
- end
197
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'seven_api/endpoint'
5
+ require 'seven_api/lookup'
6
+ require 'seven_api/resources/lookup'
7
+ require 'json'
8
+
9
+ RSpec.describe SevenApi, 'lookup' do
10
+ helper = Helper.new(SevenApi::Resources::Lookup)
11
+
12
+ def request(type, stub, params = { number: '+491771783130' })
13
+ helper.request(helper.resource.method(type), stub, params)
14
+ end
15
+
16
+ it 'misses number to lookup' do
17
+ stub = {
18
+ carrier: nil,
19
+ country_code: false,
20
+ country_iso: nil,
21
+ country_name: nil,
22
+ international: '+',
23
+ international_formatted: '',
24
+ national: '',
25
+ network_type: nil,
26
+ success: false
27
+ }
28
+ path = SevenApi::Resources::Lookup.const_get('PATHS')[:format]
29
+ res = helper.request(helper.resource.method(:format), stub, { number: '' }, path)
30
+
31
+ expect(res).to be_a(Hash)
32
+ expect(res[:success]).to match(false)
33
+ end
34
+
35
+ it 'returns number formatting details' do
36
+ stub = {
37
+ carrier: 'Eplus',
38
+ country_code: '49',
39
+ country_iso: 'DE',
40
+ country_name: 'Germany',
41
+ international: '+491771783130',
42
+ international_formatted: '+49 177 1783130',
43
+ national: '0177 1783130',
44
+ network_type: 'mobile',
45
+ success: true
46
+ }
47
+ path = SevenApi::Resources::Lookup.const_get('PATHS')[:format]
48
+ body = helper.request(helper.resource.method(:format), stub, { number: '+491771783130' }, path)
49
+
50
+ assert_format(body)
51
+ end
52
+
53
+ it 'returns RCS lookup capabilities' do
54
+ stub = {
55
+ carrier: "O2",
56
+ country_code: "49",
57
+ country_iso: "DE",
58
+ country_name: "Germany",
59
+ international: "+49176123456789",
60
+ international_formatted: "+49 179 123456789",
61
+ national: "0176 12345679",
62
+ network_type: "mobile",
63
+ rcs_capabilities: %w[ACTION_CREATE_CALENDAR_EVENT ACTION_DIAL ACTION_OPEN_URL ACTION_SHARE_LOCATION ACTION_VIEW_LOCATION RICHCARD_CAROUSEL RICHCARD_STANDALONE],
64
+ success: true
65
+ }
66
+ path = SevenApi::Resources::Lookup.const_get('PATHS')[:rcs_capabilities]
67
+ body = helper.request(helper.resource.method(:rcs_capabilities), stub, { number: '+491771783130' }, path)
68
+
69
+ assert_format(body)
70
+ expect(body[:rcs_capabilities]).to be_a(Array)
71
+ end
72
+
73
+ it 'returns CNAM details' do
74
+ stub = {
75
+ code: '100',
76
+ name: 'GERMANY',
77
+ number: '+491771783130',
78
+ success: 'true'
79
+ }
80
+ path = SevenApi::Resources::Lookup.const_get('PATHS')[:cnam]
81
+ body = helper.request(helper.resource.method(:cnam), stub, { number: '+491771783130' }, path)
82
+
83
+ expect(body).to be_a(Hash)
84
+ expect(body[:code]).to be_a(String)
85
+ expect(body[:name]).to be_a(String)
86
+ expect(body[:number]).to be_a(String)
87
+ expect(body[:success]).to be_a(String)
88
+ end
89
+
90
+ it 'returns MNP details' do
91
+ stub = {
92
+ code: 100,
93
+ mnp: {
94
+ country: 'DE',
95
+ international_formatted: '+49 177 1783130',
96
+ isPorted: false,
97
+ mccmnc: '26203',
98
+ national_format: '0177 1783130',
99
+ network: "Telef\u00f3nica Germany GmbH & Co. oHG (O2)",
100
+ number: '+491771783130'
101
+ },
102
+ price: 0.005,
103
+ success: true
104
+ }
105
+ path = SevenApi::Resources::Lookup.const_get('PATHS')[:mnp]
106
+ body = helper.request(helper.resource.method(:mnp), stub, { number: '+491771783130' }, path)
107
+
108
+ expect(body).to be_a(Hash)
109
+ expect(body[:code]).to be_a(Integer)
110
+ expect(body[:price]).to be_a(Float)
111
+ expect(body[:mnp]).to be_a(Hash)
112
+ expect(body[:mnp][:country]).to be_a(String)
113
+ expect(body[:mnp][:international_formatted]).to be_a(String)
114
+ expect(body[:mnp][:isPorted]).to be_boolean
115
+ expect(body[:mnp][:mccmnc]).to be_a(String)
116
+ expect(body[:mnp][:national_format]).to be_a(String)
117
+ expect(body[:mnp][:network]).to be_a(String)
118
+ expect(body[:mnp][:number]).to be_a(String)
119
+ expect(body[:success]).to be_boolean
120
+ end
121
+
122
+ it 'returns HLR details' do
123
+ stub = {
124
+ country_code: 'DE',
125
+ country_name: 'Germany',
126
+ country_prefix: '49',
127
+ current_carrier: {
128
+ country: 'DE',
129
+ name: "Telef\u00f3nica Germany GmbH & Co. oHG (O2)",
130
+ network_code: '26203',
131
+ network_type: 'mobile'
132
+ },
133
+ international_format_number: '491771783130',
134
+ international_formatted: '+49 177 1783130',
135
+ lookup_outcome: true,
136
+ lookup_outcome_message: 'success',
137
+ national_format_number: '0177 1783130',
138
+ original_carrier: {
139
+ country: 'DE',
140
+ name: "Telef\u00f3nica Germany GmbH & Co. oHG (O2)",
141
+ network_code: '26203',
142
+ network_type: 'mobile'
143
+ },
144
+ status: true,
145
+ status_message: 'success',
146
+ gsm_code: '0',
147
+ gsm_message: 'No error',
148
+ ported: 'assumed_not_ported',
149
+ reachable: 'reachable',
150
+ roaming: 'not_roaming',
151
+ valid_number: 'valid'
152
+ }
153
+ path = SevenApi::Resources::Lookup.const_get('PATHS')[:hlr]
154
+ body = helper.request(helper.resource.method(:hlr), stub, { number: '+491771783130' }, path)
155
+
156
+ expect(body).to be_a(Hash)
157
+ expect(body[:country_code]).to be_a(String)
158
+ expect(body[:country_name]).to be_a(String)
159
+ expect(body[:country_prefix]).to be_a(String)
160
+ assert_carrier(body[:current_carrier])
161
+ expect(body[:international_format_number]).to be_a(String)
162
+ expect(body[:international_formatted]).to be_a(String)
163
+ expect(body[:lookup_outcome]).to be_boolean
164
+ expect(body[:lookup_outcome_message]).to be_a(String)
165
+ expect(body[:national_format_number]).to be_a(String)
166
+ assert_carrier(body[:original_carrier])
167
+ expect(body[:status]).to be_boolean
168
+ expect(body[:status_message]).to be_a(String)
169
+ expect(body[:gsm_code]).to be_a(String)
170
+ expect(body[:gsm_message]).to be_a(String)
171
+ expect(body[:ported]).to be_a(String)
172
+ expect(body[:reachable]).to be_a(String)
173
+ expect(body[:roaming]).to be_a(String)
174
+ expect(body[:valid_number]).to be_a(String)
175
+ end
176
+
177
+ def assert_carrier(hash)
178
+ expect(hash).to be_a(Hash)
179
+ expect(hash[:country]).to be_a(String)
180
+ expect(hash[:name]).to be_a(String)
181
+ expect(hash[:network_code]).to be_a(String)
182
+ expect(hash[:network_type]).to be_a(String)
183
+ end
184
+
185
+ def assert_format(body)
186
+ expect(body).to be_a(Hash)
187
+ expect(body[:carrier]).to be_a(String)
188
+ expect(body[:country_code]).to be_a(String)
189
+ expect(body[:country_iso]).to be_a(String)
190
+ expect(body[:country_name]).to be_a(String)
191
+ expect(body[:international]).to be_a(String)
192
+ expect(body[:international_formatted]).to be_a(String)
193
+ expect(body[:national]).to be_a(String)
194
+ expect(body[:network_type]).to be_a(String)
195
+ expect(body[:success]).to be_boolean
196
+ end
197
+ end
@@ -1,135 +1,135 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'seven_api/resources/numbers'
5
-
6
- dummy_number = {
7
- "country": "DE",
8
- "number": "49176123456789",
9
- "friendly_name": "",
10
- "billing": {
11
- "fees": {
12
- "setup": 19.9,
13
- "basic_charge": 238.8,
14
- "sms_mo": 0,
15
- "voice_mo": 0
16
- },
17
- "payment_interval": "annually"
18
- },
19
- "features": {
20
- "sms": true,
21
- "a2p_sms": false,
22
- "voice": true
23
- },
24
- "forward_sms_mo": {
25
- "sms": {
26
- "number": [
27
- "4917612345678"
28
- ],
29
- "enabled": true
30
- },
31
- "email": {
32
- "address": %w[j.doe@acme.inc john@doe.com],
33
- "enabled": true
34
- }
35
- },
36
- "expires": nil,
37
- "created": "2024-01-31 17:06:27"
38
- }
39
-
40
- RSpec.describe SevenApi, 'numbers' do
41
- $new_number_id = nil
42
-
43
- def assert_new(response_body)
44
- code = response_body[:return]
45
- $new_number_id = response_body[:id]
46
-
47
- expect(code).to be_numeric
48
- expect($new_number_id).to be_an_instance_of(Integer)
49
- end
50
-
51
- def assert_number(number)
52
- expect(number[:id]).to be_numeric
53
- expect(number[:name]).to be_an_instance_of(String)
54
- end
55
-
56
- it 'returns available numbers' do
57
- stub = {
58
- availableNumbers: [
59
- dummy_number,
60
- dummy_number
61
- ],
62
- }
63
-
64
- helper = Helper.new(SevenApi::Resources::Numbers)
65
- body = helper.request(helper.resource.method(:available), stub)
66
-
67
- expect(body).to be_a(Hash)
68
- expect(body).to have_key(:availableNumbers)
69
- expect(body[:availableNumbers]).to be_a(Array)
70
-
71
- body[:availableNumbers].each do |number|
72
- assert_number(number)
73
- end
74
- end
75
-
76
- it 'returns active numbers' do
77
- stub = {
78
- availableNumbers: [
79
- dummy_number,
80
- dummy_number
81
- ],
82
- }
83
-
84
- helper = Helper.new(SevenApi::Resources::Numbers)
85
- body = helper.request(helper.resource.method(:active), stub)
86
-
87
- expect(body).to be_a(Array)
88
-
89
- body.each do |number|
90
- assert_number(number)
91
- end
92
- end
93
-
94
- it 'order a number' do
95
- stub = dummy_number
96
- helper = Helper.new(SevenApi::Resources::Numbers)
97
- body = helper.request(helper.resource.method(:order), stub)
98
-
99
- expect(body).to be_a(Hash)
100
-
101
- assert_new(body)
102
- end
103
-
104
- it 'update a number' do
105
- stub = dummy_number
106
- helper = Helper.new(SevenApi::Resources::Numbers)
107
- body = helper.request(helper.resource.method(:update), stub)
108
-
109
- expect(body).to be_a(Hash)
110
-
111
- assert_new(body)
112
- end
113
-
114
- it 'get a number' do
115
- stub = dummy_number
116
- helper = Helper.new(SevenApi::Resources::Numbers)
117
- body = helper.request(helper.resource.method(:one[:number]), stub)
118
-
119
- expect(body).to be_a(Hash)
120
-
121
- assert_new(body)
122
- end
123
-
124
- it 'deletes a number' do
125
- helper = Helper.new(SevenApi::Resources::Numbers)
126
- body = helper.request(
127
- helper.resource.method(:delete),
128
- nil,
129
- 0
130
- )
131
-
132
- expect(body).to be_a(Hash)
133
- expect(body[:return]).to be_a(String)
134
- end
135
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'seven_api/resources/numbers'
5
+
6
+ dummy_number = {
7
+ "country": "DE",
8
+ "number": "49176123456789",
9
+ "friendly_name": "",
10
+ "billing": {
11
+ "fees": {
12
+ "setup": 19.9,
13
+ "basic_charge": 238.8,
14
+ "sms_mo": 0,
15
+ "voice_mo": 0
16
+ },
17
+ "payment_interval": "annually"
18
+ },
19
+ "features": {
20
+ "sms": true,
21
+ "a2p_sms": false,
22
+ "voice": true
23
+ },
24
+ "forward_sms_mo": {
25
+ "sms": {
26
+ "number": [
27
+ "4917612345678"
28
+ ],
29
+ "enabled": true
30
+ },
31
+ "email": {
32
+ "address": %w[j.doe@acme.inc john@doe.com],
33
+ "enabled": true
34
+ }
35
+ },
36
+ "expires": nil,
37
+ "created": "2024-01-31 17:06:27"
38
+ }
39
+
40
+ RSpec.describe SevenApi, 'numbers' do
41
+ $new_number_id = nil
42
+
43
+ def assert_new(response_body)
44
+ code = response_body[:return]
45
+ $new_number_id = response_body[:id]
46
+
47
+ expect(code).to be_numeric
48
+ expect($new_number_id).to be_an_instance_of(Integer)
49
+ end
50
+
51
+ def assert_number(number)
52
+ expect(number[:id]).to be_numeric
53
+ expect(number[:name]).to be_an_instance_of(String)
54
+ end
55
+
56
+ it 'returns available numbers' do
57
+ stub = {
58
+ availableNumbers: [
59
+ dummy_number,
60
+ dummy_number
61
+ ],
62
+ }
63
+
64
+ helper = Helper.new(SevenApi::Resources::Numbers)
65
+ body = helper.request(helper.resource.method(:available), stub)
66
+
67
+ expect(body).to be_a(Hash)
68
+ expect(body).to have_key(:availableNumbers)
69
+ expect(body[:availableNumbers]).to be_a(Array)
70
+
71
+ body[:availableNumbers].each do |number|
72
+ assert_number(number)
73
+ end
74
+ end
75
+
76
+ it 'returns active numbers' do
77
+ stub = {
78
+ availableNumbers: [
79
+ dummy_number,
80
+ dummy_number
81
+ ],
82
+ }
83
+
84
+ helper = Helper.new(SevenApi::Resources::Numbers)
85
+ body = helper.request(helper.resource.method(:active), stub)
86
+
87
+ expect(body).to be_a(Array)
88
+
89
+ body.each do |number|
90
+ assert_number(number)
91
+ end
92
+ end
93
+
94
+ it 'order a number' do
95
+ stub = dummy_number
96
+ helper = Helper.new(SevenApi::Resources::Numbers)
97
+ body = helper.request(helper.resource.method(:order), stub)
98
+
99
+ expect(body).to be_a(Hash)
100
+
101
+ assert_new(body)
102
+ end
103
+
104
+ it 'update a number' do
105
+ stub = dummy_number
106
+ helper = Helper.new(SevenApi::Resources::Numbers)
107
+ body = helper.request(helper.resource.method(:update), stub)
108
+
109
+ expect(body).to be_a(Hash)
110
+
111
+ assert_new(body)
112
+ end
113
+
114
+ it 'get a number' do
115
+ stub = dummy_number
116
+ helper = Helper.new(SevenApi::Resources::Numbers)
117
+ body = helper.request(helper.resource.method(:one[:number]), stub)
118
+
119
+ expect(body).to be_a(Hash)
120
+
121
+ assert_new(body)
122
+ end
123
+
124
+ it 'deletes a number' do
125
+ helper = Helper.new(SevenApi::Resources::Numbers)
126
+ body = helper.request(
127
+ helper.resource.method(:delete),
128
+ nil,
129
+ 0
130
+ )
131
+
132
+ expect(body).to be_a(Hash)
133
+ expect(body[:return]).to be_a(String)
134
+ end
135
+ end