seven_api 0.5.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 (112) 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 +51 -4
  5. data/Gemfile +2 -2
  6. data/LICENSE +21 -21
  7. data/README.md +3 -3
  8. data/Rakefile +5 -5
  9. data/doc/{Sms77 → SevenApi}/Client.html +229 -229
  10. data/doc/{Sms77 → SevenApi}/Contacts/Action.html +130 -130
  11. data/doc/{Sms77 → SevenApi}/Contacts.html +125 -125
  12. data/doc/{Sms77 → SevenApi}/Endpoint.html +186 -186
  13. data/doc/{Sms77 → SevenApi}/Hooks/Action.html +130 -130
  14. data/doc/{Sms77 → SevenApi}/Hooks/EventType.html +145 -145
  15. data/doc/{Sms77 → SevenApi}/Hooks/RequestMethod.html +130 -130
  16. data/doc/{Sms77 → SevenApi}/Hooks/Validator.html +597 -597
  17. data/doc/{Sms77 → SevenApi}/Hooks.html +125 -125
  18. data/doc/{Sms77 → SevenApi}/Journal/Type.html +135 -135
  19. data/doc/{Sms77 → SevenApi}/Journal/Validator.html +393 -393
  20. data/doc/{Sms77 → SevenApi}/Journal.html +125 -125
  21. data/doc/{Sms77 → SevenApi}/Lookup/Type.html +135 -135
  22. data/doc/{Sms77 → SevenApi}/Lookup.html +125 -125
  23. data/doc/{Sms77 → SevenApi}/Resource.html +869 -869
  24. data/doc/{Sms77 → SevenApi}/Resources/Analytics.html +262 -262
  25. data/doc/{Sms77 → SevenApi}/Resources/Balance.html +245 -245
  26. data/doc/{Sms77 → SevenApi}/Resources/Contacts.html +448 -448
  27. data/doc/{Sms77 → SevenApi}/Resources/Hooks.html +456 -456
  28. data/doc/{Sms77 → SevenApi}/Resources/Journal.html +260 -260
  29. data/doc/{Sms77 → SevenApi}/Resources/Lookup.html +539 -539
  30. data/doc/{Sms77 → SevenApi}/Resources/Pricing.html +262 -262
  31. data/doc/{Sms77 → SevenApi}/Resources/Sms.html +260 -260
  32. data/doc/{Sms77 → SevenApi}/Resources/Status.html +260 -260
  33. data/doc/{Sms77 → SevenApi}/Resources/Subaccounts.html +650 -650
  34. data/doc/{Sms77 → SevenApi}/Resources/ValidateForVoice.html +260 -260
  35. data/doc/{Sms77 → SevenApi}/Resources/Voice.html +260 -260
  36. data/doc/SevenApi/Resources.html +128 -0
  37. data/doc/{Sms77 → SevenApi}/Sms/Type.html +125 -125
  38. data/doc/{Sms77 → SevenApi}/Sms.html +125 -125
  39. data/doc/{Sms77 → SevenApi}/Subaccounts/Action.html +140 -140
  40. data/doc/SevenApi/Subaccounts/Validator.html +490 -0
  41. data/doc/{Sms77 → SevenApi}/Subaccounts.html +125 -125
  42. data/doc/{Sms77 → SevenApi}/Util.html +1032 -1032
  43. data/doc/{Sms77.html → SevenApi.html} +145 -145
  44. data/doc/_index.html +443 -443
  45. data/doc/class_list.html +51 -51
  46. data/doc/css/full_list.css +58 -58
  47. data/doc/css/style.css +497 -497
  48. data/doc/file.README.html +110 -111
  49. data/doc/file_list.html +56 -56
  50. data/doc/frames.html +17 -17
  51. data/doc/index.html +110 -111
  52. data/doc/js/app.js +314 -314
  53. data/doc/js/full_list.js +216 -216
  54. data/doc/js/jquery.js +3 -3
  55. data/doc/method_list.html +563 -563
  56. data/doc/top-level-namespace.html +109 -109
  57. data/document.sh +3 -0
  58. data/lib/seven_api/client.rb +32 -30
  59. data/lib/seven_api/contacts.rb +5 -10
  60. data/lib/seven_api/endpoint.rb +5 -0
  61. data/lib/seven_api/hooks.rb +69 -67
  62. data/lib/seven_api/journal.rb +39 -39
  63. data/lib/seven_api/lookup.rb +12 -11
  64. data/lib/seven_api/numbers.rb +9 -0
  65. data/lib/seven_api/paginated.rb +10 -0
  66. data/lib/seven_api/rcs.rb +9 -0
  67. data/lib/seven_api/resource.rb +8 -4
  68. data/lib/seven_api/resources/analytics.rb +54 -21
  69. data/lib/seven_api/resources/balance.rb +19 -19
  70. data/lib/seven_api/resources/contacts.rb +56 -38
  71. data/lib/seven_api/resources/groups.rb +57 -0
  72. data/lib/seven_api/resources/hooks.rb +40 -40
  73. data/lib/seven_api/resources/journal.rb +20 -20
  74. data/lib/seven_api/resources/lookup.rb +63 -47
  75. data/lib/seven_api/resources/numbers.rb +71 -0
  76. data/lib/seven_api/resources/pricing.rb +20 -20
  77. data/lib/seven_api/resources/rcs.rb +39 -0
  78. data/lib/seven_api/resources/sms.rb +29 -20
  79. data/lib/seven_api/resources/status.rb +20 -20
  80. data/lib/seven_api/resources/subaccounts.rb +65 -65
  81. data/lib/seven_api/resources/validate_for_voice.rb +20 -20
  82. data/lib/seven_api/resources/voice.rb +29 -20
  83. data/lib/seven_api/sms.rb +9 -9
  84. data/lib/seven_api/subaccounts.rb +55 -55
  85. data/lib/seven_api/util.rb +68 -68
  86. data/lib/seven_api/version.rb +5 -5
  87. data/lib/seven_api.rb +6 -6
  88. data/release.sh +4 -4
  89. data/seven_api.gemspec +5 -5
  90. data/spec/EnvKeyStore.rb +14 -14
  91. data/spec/matchers.rb +22 -22
  92. data/spec/seven_api/analytics_spec.rb +49 -0
  93. data/spec/seven_api/balance_spec.rb +18 -12
  94. data/spec/seven_api/client_spec.rb +15 -15
  95. data/spec/seven_api/contacts_spec.rb +100 -129
  96. data/spec/seven_api/groups_spec.rb +74 -0
  97. data/spec/seven_api/hooks_spec.rb +108 -108
  98. data/spec/seven_api/instance_spec.rb +22 -22
  99. data/spec/seven_api/journal_spec.rb +86 -86
  100. data/spec/seven_api/lookup_spec.rb +197 -179
  101. data/spec/seven_api/numbers_spec.rb +135 -0
  102. data/spec/seven_api/pricing_spec.rb +76 -76
  103. data/spec/seven_api/rcs_spec.rb +99 -0
  104. data/spec/seven_api/sms_spec.rb +103 -103
  105. data/spec/seven_api/subaccounts_spec.rb +121 -121
  106. data/spec/seven_api/validate_for_voice_spec.rb +19 -19
  107. data/spec/seven_api/voice_spec.rb +51 -51
  108. data/spec/seven_api_spec.rb +9 -9
  109. data/spec/spec_helper.rb +8 -17
  110. metadata +62 -50
  111. data/doc/Sms77/Resources.html +0 -128
  112. data/doc/Sms77/Subaccounts/Validator.html +0 -490
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'seven_api/resources/rcs'
5
+
6
+ RSpec.describe SevenApi, 'rcs' do
7
+ $helper = Helper.new(SevenApi::Resources::Rcs)
8
+
9
+ def dispatch(stub, extra_params = {})
10
+ params = {
11
+ text: 'Your glasses are ready for pickup.',
12
+ to: '491716992343'
13
+ }.merge(extra_params)
14
+
15
+ $helper.request($helper.resource.method(:dispatch), stub, params, '/messages')
16
+ end
17
+
18
+ it 'sends a single rcs and returns json response' do
19
+ stub = {
20
+ success: '100',
21
+ total_price: 0,
22
+ balance: 4.52,
23
+ debug: 'true',
24
+ sms_type: 'direct',
25
+ messages: [{ id: nil,
26
+ sender: '491771783130',
27
+ recipient: '491771783130',
28
+ text: 'Your glasses are ready for pickup.',
29
+ encoding: 'gsm',
30
+ parts: 1,
31
+ price: 0,
32
+ success: true,
33
+ error: nil,
34
+ error_text: nil,
35
+ channel: 'RCS'}]
36
+ }
37
+
38
+ body = dispatch(stub)
39
+
40
+ expect(body).to be_a(Hash)
41
+
42
+ expect(body[:success]).to be_a(String)
43
+ expect(body[:total_price]).to be_numeric
44
+ expect(body[:balance]).to be_a(Float)
45
+ expect(body[:debug]).to be_a(String)
46
+ expect(body[:sms_type]).to eq('direct')
47
+ expect(body[:messages]).to be_a(Array)
48
+ body[:messages].each do |message|
49
+ expect(message).to be_a(Hash)
50
+ expect(message[:channel]).to eq('RCS')
51
+ end
52
+ end
53
+
54
+ it 'schedules a rcs message and deletes it again' do
55
+ rcs = dispatch({
56
+ success: '100',
57
+ total_price: 0,
58
+ balance: 4.52,
59
+ debug: 'true',
60
+ sms_type: 'direct',
61
+ messages: [{ id: 12345,
62
+ sender: '491771783130',
63
+ recipient: '491771783130',
64
+ text: 'Your glasses are ready for pickup.',
65
+ encoding: 'gsm',
66
+ parts: 1,
67
+ price: 0,
68
+ success: true,
69
+ error: nil,
70
+ error_text: nil,
71
+ channel: 'RCS'}]
72
+ })
73
+ msg = rcs[:messages].first
74
+ id = msg[:id]
75
+ stub = {
76
+ success: true
77
+ }
78
+ params = {
79
+ id: id
80
+ }
81
+
82
+ deleted = $helper.request($helper.resource.method(:delete), stub, params, "/messages/#{id}")
83
+ expect(deleted[:success]).to eq(true)
84
+ end
85
+
86
+ it 'triggers a rcs event' do
87
+ stub = {
88
+ success: true
89
+ }
90
+ params = {
91
+ event: 'IS_TYPING',
92
+ msg_id: '',
93
+ to: '4915237035388'
94
+ }
95
+
96
+ event = $helper.request($helper.resource.method(:event), stub, params, '/events')
97
+ expect(event[:success]).to eq(true)
98
+ end
99
+ end
@@ -1,103 +1,103 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'seven_api/resources/sms'
5
-
6
- RSpec.describe SevenApi, 'sms' do
7
- $text = 'Your glasses are ready for pickup.'
8
-
9
- def assert_response(response)
10
- if response.is_a?(String)
11
- id, name, number = response.split("\n")
12
- else
13
- id = response['ID']
14
- name = response['Name']
15
- number = response['Number']
16
- end
17
-
18
- expect(Integer(id)).to be_an_instance_of(Integer)
19
- expect(name.to_f).to be_an_instance_of(Float) if id != ''
20
- expect(number.to_f).to be_an_instance_of(Float)
21
- end
22
-
23
- def request(stub, extra_params = {})
24
- params = {
25
- from: Helper::VIRTUAL_INBOUNDS[:eplus],
26
- text: $text,
27
- to: Helper::VIRTUAL_INBOUNDS[:eplus]
28
- }.merge(extra_params)
29
-
30
- helper = Helper.new(SevenApi::Resources::Sms)
31
- helper.request(helper.resource.method(:retrieve), stub, params)
32
- end
33
-
34
- it 'sends a single sms and returns success code' do
35
- expect(request(100)).to be_a(Integer)
36
- end
37
-
38
- it 'sends a single sms and returns detailed text response' do
39
- stub = <<~TEXT
40
- 100
41
- Verbucht: 0
42
- Preis: 0.075
43
- Guthaben: 4.575
44
- Text: Your glasses are ready for pickup.
45
- SMS-Typ: direct
46
- Flash SMS: false
47
- Encoding: gsm
48
- GSM0338: true
49
- Debug: true
50
- TEXT
51
-
52
- body = request(stub, { details: 1 })
53
-
54
- expect(body).to be_a(String)
55
-
56
- code, booked, cost, balance, text, type, flash, encoding, gsm0338, debug = body.split("\n")
57
-
58
- expect(code).to be_a(String)
59
- expect(booked.split(':').last.to_f).to be_a(Float)
60
- expect(cost.split(':').last.to_f).to be_a(Float)
61
- expect(balance.split(':').last.to_f).to be_a(Float)
62
- expect(text.split(':').last.strip!).to eq($text)
63
- expect(type.split(':').last.strip!).to eq('direct')
64
- expect(flash.split(':').last.strip!).to eq('false')
65
- expect(encoding.split(':').last.strip!).to eq('gsm')
66
- expect(gsm0338.split(':').last.strip!).to eq('true')
67
- expect(debug.split(':').last.strip!).to eq('true')
68
- end
69
-
70
- it 'sends a single sms and returns json response' do
71
- stub = {
72
- success: '100',
73
- total_price: 0,
74
- balance: 4.5,
75
- debug: 'true',
76
- sms_type: 'direct',
77
- messages: [{ id: nil,
78
- sender: '491771783130',
79
- recipient: '491771783130',
80
- text: 'Your glasses are ready for pickup.',
81
- encoding: 'gsm',
82
- parts: 1,
83
- price: 0,
84
- success: true,
85
- error: nil,
86
- error_text: nil }]
87
- }
88
-
89
- body = request(stub, { json: 1 })
90
-
91
- expect(body).to be_a(Hash)
92
-
93
- expect(body[:success]).to be_a(String)
94
- expect(body[:total_price]).to be_numeric
95
- expect(body[:balance]).to be_a(Float)
96
- expect(body[:debug]).to be_a(String)
97
- expect(body[:sms_type]).to eq('direct')
98
- expect(body[:messages]).to be_a(Array)
99
- body[:messages].each do |message|
100
- expect(message).to be_a(Hash)
101
- end
102
- end
103
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'seven_api/resources/sms'
5
+
6
+ RSpec.describe SevenApi, 'sms' do
7
+ $text = 'Your glasses are ready for pickup.'
8
+
9
+ def assert_response(response)
10
+ if response.is_a?(String)
11
+ id, name, number = response.split("\n")
12
+ else
13
+ id = response['ID']
14
+ name = response['Name']
15
+ number = response['Number']
16
+ end
17
+
18
+ expect(Integer(id)).to be_an_instance_of(Integer)
19
+ expect(name.to_f).to be_an_instance_of(Float) if id != ''
20
+ expect(number.to_f).to be_an_instance_of(Float)
21
+ end
22
+
23
+ def request(stub, extra_params = {})
24
+ params = {
25
+ from: 'seven',
26
+ text: $text,
27
+ to: '491716992343'
28
+ }.merge(extra_params)
29
+
30
+ helper = Helper.new(SevenApi::Resources::Sms)
31
+ helper.request(helper.resource.method(:retrieve), stub, params)
32
+ end
33
+
34
+ it 'sends a single sms and returns success code' do
35
+ expect(request(100)).to be_a(Integer)
36
+ end
37
+
38
+ it 'sends a single sms and returns detailed text response' do
39
+ stub = <<~TEXT
40
+ 100
41
+ Verbucht: 0
42
+ Preis: 0.075
43
+ Guthaben: 4.575
44
+ Text: Your glasses are ready for pickup.
45
+ SMS-Typ: direct
46
+ Flash SMS: false
47
+ Encoding: gsm
48
+ GSM0338: true
49
+ Debug: true
50
+ TEXT
51
+
52
+ body = request(stub, { details: 1 })
53
+
54
+ expect(body).to be_a(String)
55
+
56
+ code, booked, cost, balance, text, type, flash, encoding, gsm0338, debug = body.split("\n")
57
+
58
+ expect(code).to be_a(String)
59
+ expect(booked.split(':').last.to_f).to be_a(Float)
60
+ expect(cost.split(':').last.to_f).to be_a(Float)
61
+ expect(balance.split(':').last.to_f).to be_a(Float)
62
+ expect(text.split(':').last.strip!).to eq($text)
63
+ expect(type.split(':').last.strip!).to eq('direct')
64
+ expect(flash.split(':').last.strip!).to eq('false')
65
+ expect(encoding.split(':').last.strip!).to eq('gsm')
66
+ expect(gsm0338.split(':').last.strip!).to eq('true')
67
+ expect(debug.split(':').last.strip!).to eq('true')
68
+ end
69
+
70
+ it 'sends a single sms and returns json response' do
71
+ stub = {
72
+ success: '100',
73
+ total_price: 0,
74
+ balance: 4.5,
75
+ debug: 'true',
76
+ sms_type: 'direct',
77
+ messages: [{ id: nil,
78
+ sender: '491771783130',
79
+ recipient: '491771783130',
80
+ text: 'Your glasses are ready for pickup.',
81
+ encoding: 'gsm',
82
+ parts: 1,
83
+ price: 0,
84
+ success: true,
85
+ error: nil,
86
+ error_text: nil }]
87
+ }
88
+
89
+ body = request(stub, { json: 1 })
90
+
91
+ expect(body).to be_a(Hash)
92
+
93
+ expect(body[:success]).to be_a(String)
94
+ expect(body[:total_price]).to be_numeric
95
+ expect(body[:balance]).to be_a(Float)
96
+ expect(body[:debug]).to be_a(String)
97
+ expect(body[:sms_type]).to eq('direct')
98
+ expect(body[:messages]).to be_a(Array)
99
+ body[:messages].each do |message|
100
+ expect(message).to be_a(Hash)
101
+ end
102
+ end
103
+ end
@@ -1,121 +1,121 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'seven_api/resources/subaccounts'
5
-
6
- dummy_subaccount = {
7
- :auto_topup => {
8
- :amount => 5,
9
- :threshold => 1,
10
- },
11
- :balance => 36.8100,
12
- :company => 'Company1',
13
- :contact => {
14
- :email => 'sms@acme-company1.com',
15
- :name => 'John Doe',
16
- },
17
- :id => '1234567891',
18
- :total_usage => 0.3000,
19
- :username => nil,
20
- }
21
-
22
- RSpec.describe SevenApi, 'subaccounts' do
23
- HELPER = Helper.new(SevenApi::Resources::Subaccounts)
24
-
25
- def request(key, stub, extra_params = {})
26
- HELPER.request(HELPER.resource.method(key), stub, extra_params)
27
- end
28
-
29
- it 'returns all subaccounts' do
30
- res = request(:read, [
31
- dummy_subaccount
32
- ])
33
-
34
- expect(res).to be_a(Array)
35
-
36
- res.each do |subaccount|
37
- assert_subaccount(subaccount)
38
- end
39
- end
40
-
41
- it 'creates a subaccount' do
42
- res = request(:create, {
43
- :error => nil,
44
- :subaccount => dummy_subaccount,
45
- :success => true,
46
- })
47
-
48
- expect(res).to be_a(Hash)
49
- expect(res[:error]).to be_nil_or_lengthy_string
50
- assert_subaccount(res[:subaccount])
51
- expect(res[:success]).to be_boolean
52
- end
53
-
54
- it 'deletes a subaccount' do
55
- res = request(
56
- :delete,
57
- {
58
- :error => nil,
59
- :success => true,
60
- },
61
- {
62
- :id => -1,
63
- }
64
- )
65
-
66
- expect(res).to be_a(Hash)
67
- expect(res[:error]).to be_nil_or_lengthy_string
68
- expect(res[:success]).to be_boolean
69
- end
70
-
71
- it 'transfers credits' do
72
- res = request(
73
- :transfer_credits,
74
- {
75
- :error => nil,
76
- :success => true,
77
- },
78
- {
79
- :amount => 0,
80
- :id => -1,
81
- }
82
- )
83
-
84
- expect(res).to be_a(Hash)
85
- expect(res[:error]).to be_nil_or_lengthy_string
86
- expect(res[:success]).to be_boolean
87
- end
88
-
89
- it 'updats automatic charging of credits' do
90
- res = request(
91
- :update,
92
- {
93
- :error => nil,
94
- :success => true,
95
- },
96
- {
97
- :amount => 0,
98
- :id => -1,
99
- :threshold => -1,
100
- }
101
- )
102
-
103
- expect(res).to be_a(Hash)
104
- expect(res[:error]).to be_nil_or_lengthy_string
105
- expect(res[:success]).to be_boolean
106
- end
107
-
108
- private
109
-
110
- def assert_subaccount(subaccount)
111
- expect(subaccount).to be_a(Hash)
112
- expect(subaccount).to include(:auto_topup, :balance, :company, :contact, :id, :total_usage, :username,)
113
- expect(subaccount[:auto_topup]).to be_a(Object)
114
- expect(subaccount[:auto_topup]).to include(:amount, :threshold,)
115
- expect(subaccount[:balance]).to be_a(Float)
116
- expect(subaccount[:contact]).to be_a(Object)
117
- expect(subaccount[:contact]).to include(:email, :name,)
118
- expect(subaccount[:id]).to be_a(String)
119
- expect(subaccount[:total_usage]).to be_a(Float)
120
- end
121
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'seven_api/resources/subaccounts'
5
+
6
+ dummy_subaccount = {
7
+ :auto_topup => {
8
+ :amount => 5,
9
+ :threshold => 1,
10
+ },
11
+ :balance => 36.8100,
12
+ :company => 'Company1',
13
+ :contact => {
14
+ :email => 'sms@acme-company1.com',
15
+ :name => 'John Doe',
16
+ },
17
+ :id => '1234567891',
18
+ :total_usage => 0.3000,
19
+ :username => nil,
20
+ }
21
+
22
+ RSpec.describe SevenApi, 'subaccounts' do
23
+ HELPER = Helper.new(SevenApi::Resources::Subaccounts)
24
+
25
+ def request(key, stub, extra_params = {})
26
+ HELPER.request(HELPER.resource.method(key), stub, extra_params)
27
+ end
28
+
29
+ it 'returns all subaccounts' do
30
+ res = request(:read, [
31
+ dummy_subaccount
32
+ ])
33
+
34
+ expect(res).to be_a(Array)
35
+
36
+ res.each do |subaccount|
37
+ assert_subaccount(subaccount)
38
+ end
39
+ end
40
+
41
+ it 'creates a subaccount' do
42
+ res = request(:create, {
43
+ :error => nil,
44
+ :subaccount => dummy_subaccount,
45
+ :success => true,
46
+ })
47
+
48
+ expect(res).to be_a(Hash)
49
+ expect(res[:error]).to be_nil_or_lengthy_string
50
+ assert_subaccount(res[:subaccount])
51
+ expect(res[:success]).to be_boolean
52
+ end
53
+
54
+ it 'deletes a subaccount' do
55
+ res = request(
56
+ :delete,
57
+ {
58
+ :error => nil,
59
+ :success => true,
60
+ },
61
+ {
62
+ :id => -1,
63
+ }
64
+ )
65
+
66
+ expect(res).to be_a(Hash)
67
+ expect(res[:error]).to be_nil_or_lengthy_string
68
+ expect(res[:success]).to be_boolean
69
+ end
70
+
71
+ it 'transfers credits' do
72
+ res = request(
73
+ :transfer_credits,
74
+ {
75
+ :error => nil,
76
+ :success => true,
77
+ },
78
+ {
79
+ :amount => 0,
80
+ :id => -1,
81
+ }
82
+ )
83
+
84
+ expect(res).to be_a(Hash)
85
+ expect(res[:error]).to be_nil_or_lengthy_string
86
+ expect(res[:success]).to be_boolean
87
+ end
88
+
89
+ it 'updats automatic charging of credits' do
90
+ res = request(
91
+ :update,
92
+ {
93
+ :error => nil,
94
+ :success => true,
95
+ },
96
+ {
97
+ :amount => 0,
98
+ :id => -1,
99
+ :threshold => -1,
100
+ }
101
+ )
102
+
103
+ expect(res).to be_a(Hash)
104
+ expect(res[:error]).to be_nil_or_lengthy_string
105
+ expect(res[:success]).to be_boolean
106
+ end
107
+
108
+ private
109
+
110
+ def assert_subaccount(subaccount)
111
+ expect(subaccount).to be_a(Hash)
112
+ expect(subaccount).to include(:auto_topup, :balance, :company, :contact, :id, :total_usage, :username,)
113
+ expect(subaccount[:auto_topup]).to be_a(Object)
114
+ expect(subaccount[:auto_topup]).to include(:amount, :threshold,)
115
+ expect(subaccount[:balance]).to be_a(Float)
116
+ expect(subaccount[:contact]).to be_a(Object)
117
+ expect(subaccount[:contact]).to include(:email, :name,)
118
+ expect(subaccount[:id]).to be_a(String)
119
+ expect(subaccount[:total_usage]).to be_a(Float)
120
+ end
121
+ end
@@ -1,19 +1,19 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'seven_api/resources/validate_for_voice'
5
-
6
- RSpec.describe SevenApi, 'validate_for_voice' do
7
- it 'returns caller id information' do
8
- number = '491771783130'
9
- callback_host = Helper::IS_HTTP ? `curl http://ipecho.net/plain` : '127.0.0.1'
10
- callback = "#{callback_host}/callback.php"
11
- stub = { success: true }
12
-
13
- helper = Helper.new(SevenApi::Resources::ValidateForVoice)
14
- body = helper.request(helper.resource.method(:retrieve), stub, { number: number, callback: callback })
15
-
16
- expect(body).to be_a(Hash)
17
- expect(body[:success]).to be_boolean
18
- end
19
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'seven_api/resources/validate_for_voice'
5
+
6
+ RSpec.describe SevenApi, 'validate_for_voice' do
7
+ it 'returns caller id information' do
8
+ number = '491771783130'
9
+ callback_host = Helper::IS_HTTP ? `curl http://ipecho.net/plain` : '127.0.0.1'
10
+ callback = "#{callback_host}/callback.php"
11
+ stub = { success: true }
12
+
13
+ helper = Helper.new(SevenApi::Resources::ValidateForVoice)
14
+ body = helper.request(helper.resource.method(:retrieve), stub, { number: number, callback: callback })
15
+
16
+ expect(body).to be_a(Hash)
17
+ expect(body[:success]).to be_boolean
18
+ end
19
+ end