xednese 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -1
  3. data/README.md +22 -3
  4. data/Rakefile +8 -2
  5. data/bin/xednese +16 -0
  6. data/lib/xednese.rb +36 -9
  7. data/lib/xednese/account.rb +37 -0
  8. data/lib/xednese/account/dispatcher.rb +30 -0
  9. data/lib/xednese/account/messages.rb +47 -0
  10. data/lib/xednese/accounts.rb +14 -6
  11. data/lib/xednese/batch.rb +68 -0
  12. data/lib/xednese/batches.rb +33 -0
  13. data/lib/xednese/client.rb +46 -0
  14. data/lib/xednese/messages.rb +24 -0
  15. data/lib/xednese/requests/account.rb +17 -0
  16. data/lib/xednese/requests/batch.rb +17 -0
  17. data/lib/xednese/requests/messages.rb +1 -1
  18. data/lib/xednese/responses/batch.rb +20 -0
  19. data/lib/xednese/responses/batches.rb +15 -0
  20. data/lib/xednese/responses/status.rb +22 -0
  21. data/lib/xednese/users.rb +3 -8
  22. data/lib/xednese/version.rb +1 -1
  23. data/scenarios/accounts/getting_all_accounts.rb +37 -0
  24. data/scenarios/accounts/getting_an_account.rb +29 -0
  25. data/scenarios/helper.rb +113 -0
  26. data/spec/helper.rb +3 -3
  27. data/spec/xednese/{dispatcher_spec.rb → account/dispatcher_spec.rb} +5 -4
  28. data/spec/xednese/account/messages_spec.rb +56 -0
  29. data/spec/xednese/account_spec.rb +93 -0
  30. data/spec/xednese/accounts_spec.rb +19 -14
  31. data/spec/xednese/batch_spec.rb +121 -0
  32. data/spec/xednese/batches_spec.rb +70 -0
  33. data/spec/xednese/client_spec.rb +76 -2
  34. data/spec/xednese/messages_spec.rb +25 -1
  35. data/spec/xednese/requests/account_spec.rb +20 -0
  36. data/spec/xednese/requests/batch_spec.rb +20 -0
  37. data/spec/xednese/requests/messages_spec.rb +1 -1
  38. data/spec/xednese/responses/account_spec.rb +1 -1
  39. data/spec/xednese/responses/accounts_spec.rb +1 -1
  40. data/spec/xednese/responses/batch_spec.rb +83 -0
  41. data/spec/xednese/responses/batches_spec.rb +95 -0
  42. data/spec/xednese/responses/message_dispatcher_headers_spec.rb +1 -1
  43. data/spec/xednese/responses/message_header_spec.rb +1 -1
  44. data/spec/xednese/responses/message_headers_spec.rb +1 -1
  45. data/spec/xednese/responses/status_spec.rb +55 -0
  46. data/spec/xednese/users_spec.rb +1 -12
  47. data/spec/xednese_spec.rb +52 -12
  48. metadata +58 -8
  49. data/lib/xednese/dispatcher.rb +0 -20
@@ -1,4 +1,4 @@
1
- require_relative '../helper'
1
+ require 'helper'
2
2
 
3
3
  describe Esendex::Messages do
4
4
  subject { dummy_esendex }
@@ -28,6 +28,30 @@ describe Esendex::Messages do
28
28
  end
29
29
  end
30
30
 
31
+ describe '#received' do
32
+ let(:xml) { "Hey I'm xml" }
33
+ let(:first_message) { mock }
34
+ let(:parsed_messages) { stub(message_headers: [first_message]) }
35
+
36
+ before {
37
+ Esendex::Client
38
+ .expects(:get)
39
+ .with(credentials, "v1.0/inbox/messages", startIndex: 0, count: 25)
40
+ .yields(200, xml)
41
+ .returns(parsed_messages.message_headers)
42
+
43
+ Esendex::Responses::MessageHeaders
44
+ .expects(:deserialise)
45
+ .with(xml)
46
+ .returns(parsed_messages)
47
+ }
48
+
49
+ it 'returns the messages received by the user on the account' do
50
+ received = subject.messages.received
51
+ received.first.must_equal first_message
52
+ end
53
+ end
54
+
31
55
  describe '#get' do
32
56
  let(:message_id) { "guid" }
33
57
  let(:xml) { "Hey I'm xml" }
@@ -0,0 +1,20 @@
1
+ require 'helper'
2
+
3
+ describe Esendex::Requests::Account do
4
+ subject { Esendex::Requests::Account }
5
+
6
+ describe '#serialise' do
7
+ let(:label) { "what a label?" }
8
+
9
+ it 'returns an xml representation of the instance' do
10
+ account = subject.new(label: label)
11
+
12
+ account.serialise.must_equal <<EOS
13
+ <?xml version="1.0" encoding="utf-8"?>
14
+ <account xmlns="http://api.esendex.com/ns/">
15
+ <label>#{label}</label>
16
+ </account>
17
+ EOS
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require 'helper'
2
+
3
+ describe Esendex::Requests::Batch do
4
+ subject { Esendex::Requests::Batch }
5
+
6
+ describe '#serialise' do
7
+ let(:new_name) { "what a name!" }
8
+
9
+ it 'returns an xml representation of the instance' do
10
+ batch = subject.new(name: new_name)
11
+
12
+ batch.serialise.must_equal <<EOS
13
+ <?xml version="1.0" encoding="utf-8"?>
14
+ <messagebatch xmlns="http://api.esendex.com/ns/">
15
+ <name>#{new_name}</name>
16
+ </messagebatch>
17
+ EOS
18
+ end
19
+ end
20
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../../helper'
1
+ require 'helper'
2
2
 
3
3
  describe Esendex::Requests::Messages do
4
4
  subject { Esendex::Requests::Messages }
@@ -1,4 +1,4 @@
1
- require_relative '../../helper'
1
+ require 'helper'
2
2
 
3
3
  describe Esendex::Responses::Account do
4
4
  describe '.deserialise' do
@@ -1,4 +1,4 @@
1
- require_relative '../../helper'
1
+ require 'helper'
2
2
 
3
3
  describe Esendex::Responses::Accounts do
4
4
  describe '.deserialise' do
@@ -0,0 +1,83 @@
1
+ require 'helper'
2
+
3
+ describe Esendex::Responses::Batch do
4
+ describe '.deserialise' do
5
+ let(:id) { "642A01A6-A483-44F3-A2F2-A48B1D0FE141" }
6
+ let(:createdat) { "2012-01-01T12:00:00.000Z" }
7
+ let(:batchsize) { 1 }
8
+ let(:persistedbatchsize) { 1 }
9
+
10
+ let(:acknowledged) { 0 }
11
+ let(:authorisationfailed) { 0 }
12
+ let(:connecting) { 0 }
13
+ let(:delivered) { 0 }
14
+ let(:failed) { 0 }
15
+ let(:partiallydelivered) { 0 }
16
+ let(:rejected) { 0 }
17
+ let(:scheduled) { 0 }
18
+ let(:sent) { 0 }
19
+ let(:submitted) { 1 }
20
+ let(:validityperiodexpired) { 0 }
21
+ let(:cancelled) { 0 }
22
+
23
+ let(:accountreference) { "EX0000000" }
24
+ let(:createdby) { "user@example.com" }
25
+ let(:batch_name) { "hey my batch" }
26
+
27
+ let(:xml) {
28
+ <<EOS
29
+ <?xml version="1.0" encoding="utf-8"?>
30
+ <messagebatch id="#{id}"
31
+ uri="https://api.esendex.com/v1.1/messagebatches/#{id}"
32
+ xmlns="http://api.esendex.com/ns/">
33
+ <createdat>#{createdat}</createdat>
34
+ <batchsize>#{batchsize}</batchsize>
35
+ <persistedbatchsize>#{persistedbatchsize}</persistedbatchsize>
36
+ <status>
37
+ <acknowledged>#{acknowledged}</acknowledged>
38
+ <authorisationfailed>#{authorisationfailed}</authorisationfailed>
39
+ <connecting>#{connecting}</connecting>
40
+ <delivered>#{delivered}</delivered>
41
+ <failed>#{failed}</failed>
42
+ <partiallydelivered>#{partiallydelivered}</partiallydelivered>
43
+ <rejected>#{rejected}</rejected>
44
+ <scheduled>#{scheduled}</scheduled>
45
+ <sent>#{sent}</sent>
46
+ <submitted>#{submitted}</submitted>
47
+ <validityperiodexpired>#{validityperiodexpired}</validityperiodexpired>
48
+ <cancelled>#{cancelled}</cancelled>
49
+ </status>
50
+ <accountreference>#{accountreference}</accountreference>
51
+ <createdby>#{createdby}</createdby>
52
+ <name>#{batch_name}</name>
53
+ </messagebatch>
54
+ EOS
55
+ }
56
+
57
+ it 'deserialises xml into a Batch instance' do
58
+ batch = Esendex::Responses::Batch.deserialise(xml)
59
+
60
+ batch.id.must_equal id
61
+ batch.created_at.must_equal createdat
62
+ batch.batch_size.must_equal batchsize
63
+ batch.persisted_batch_size.must_equal persistedbatchsize
64
+
65
+ batch.account_reference.must_equal accountreference
66
+ batch.created_by.must_equal createdby
67
+ batch.name.must_equal batch_name
68
+
69
+ batch.status.acknowledged.must_equal acknowledged
70
+ batch.status.authorisation_failed.must_equal authorisationfailed
71
+ batch.status.connecting.must_equal connecting
72
+ batch.status.delivered.must_equal delivered
73
+ batch.status.failed.must_equal failed
74
+ batch.status.partially_delivered.must_equal partiallydelivered
75
+ batch.status.rejected.must_equal rejected
76
+ batch.status.scheduled.must_equal scheduled
77
+ batch.status.sent.must_equal sent
78
+ batch.status.submitted.must_equal submitted
79
+ batch.status.validity_period_expired.must_equal validityperiodexpired
80
+ batch.status.cancelled.must_equal cancelled
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,95 @@
1
+ require 'helper'
2
+
3
+ describe Esendex::Responses::Batches do
4
+ describe '.deserialise' do
5
+ let(:startindex) { 5 }
6
+ let(:count) { 2000 }
7
+ let(:totalcount) { 24565 }
8
+
9
+ let(:id) { "642A01A6-A483-44F3-A2F2-A48B1D0FE141" }
10
+ let(:createdat) { "2012-01-01T12:00:00.000Z" }
11
+ let(:batchsize) { 1 }
12
+ let(:persistedbatchsize) { 1 }
13
+
14
+ let(:acknowledged) { 0 }
15
+ let(:authorisationfailed) { 0 }
16
+ let(:connecting) { 0 }
17
+ let(:delivered) { 0 }
18
+ let(:failed) { 0 }
19
+ let(:partiallydelivered) { 0 }
20
+ let(:rejected) { 0 }
21
+ let(:scheduled) { 0 }
22
+ let(:sent) { 0 }
23
+ let(:submitted) { 1 }
24
+ let(:validityperiodexpired) { 0 }
25
+ let(:cancelled) { 0 }
26
+
27
+ let(:accountreference) { "EX0000000" }
28
+ let(:createdby) { "user@example.com" }
29
+ let(:batch_name) { "hey my batch" }
30
+
31
+ let(:xml) {
32
+ <<EOS
33
+ <?xml version="1.0" encoding="utf-8"?>
34
+ <messagebatches startindex="#{startindex}" count="#{count}" totalcount="#{totalcount}"
35
+ xmlns="http://api.esendex.com/ns/">
36
+ <messagebatch id="#{id}"
37
+ uri="https://api.esendex.com/v1.1/messagebatches/#{id}">
38
+ <createdat>#{createdat}</createdat>
39
+ <batchsize>#{batchsize}</batchsize>
40
+ <persistedbatchsize>#{persistedbatchsize}</persistedbatchsize>
41
+ <status>
42
+ <acknowledged>#{acknowledged}</acknowledged>
43
+ <authorisationfailed>#{authorisationfailed}</authorisationfailed>
44
+ <connecting>#{connecting}</connecting>
45
+ <delivered>#{delivered}</delivered>
46
+ <failed>#{failed}</failed>
47
+ <partiallydelivered>#{partiallydelivered}</partiallydelivered>
48
+ <rejected>#{rejected}</rejected>
49
+ <scheduled>#{scheduled}</scheduled>
50
+ <sent>#{sent}</sent>
51
+ <submitted>#{submitted}</submitted>
52
+ <validityperiodexpired>#{validityperiodexpired}</validityperiodexpired>
53
+ <cancelled>#{cancelled}</cancelled>
54
+ </status>
55
+ <accountreference>#{accountreference}</accountreference>
56
+ <createdby>#{createdby}</createdby>
57
+ <name>#{batch_name}</name>
58
+ </messagebatch>
59
+ </messagebatches>
60
+ EOS
61
+ }
62
+
63
+ it 'deserialises xml into a Batches instance' do
64
+ batches = Esendex::Responses::Batches.deserialise(xml)
65
+
66
+ batches.start_index.must_equal startindex
67
+ batches.count.must_equal count
68
+ batches.total_count.must_equal totalcount
69
+
70
+ batch = batches.batches.first
71
+
72
+ batch.id.must_equal id
73
+ batch.created_at.must_equal createdat
74
+ batch.batch_size.must_equal batchsize
75
+ batch.persisted_batch_size.must_equal persistedbatchsize
76
+
77
+ batch.account_reference.must_equal accountreference
78
+ batch.created_by.must_equal createdby
79
+ batch.name.must_equal batch_name
80
+
81
+ batch.status.acknowledged.must_equal acknowledged
82
+ batch.status.authorisation_failed.must_equal authorisationfailed
83
+ batch.status.connecting.must_equal connecting
84
+ batch.status.delivered.must_equal delivered
85
+ batch.status.failed.must_equal failed
86
+ batch.status.partially_delivered.must_equal partiallydelivered
87
+ batch.status.rejected.must_equal rejected
88
+ batch.status.scheduled.must_equal scheduled
89
+ batch.status.sent.must_equal sent
90
+ batch.status.submitted.must_equal submitted
91
+ batch.status.validity_period_expired.must_equal validityperiodexpired
92
+ batch.status.cancelled.must_equal cancelled
93
+ end
94
+ end
95
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../../helper'
1
+ require 'helper'
2
2
 
3
3
  describe Esendex::Responses::MessageDispatcherHeaders do
4
4
  subject { Esendex::Responses::MessageDispatcherHeaders }
@@ -1,4 +1,4 @@
1
- require_relative '../../helper'
1
+ require 'helper'
2
2
 
3
3
  describe Esendex::Responses::MessageHeader do
4
4
  describe '.deserialise' do
@@ -1,4 +1,4 @@
1
- require_relative '../../helper'
1
+ require 'helper'
2
2
 
3
3
  describe Esendex::Responses::MessageHeaders do
4
4
  describe '.deserialise' do
@@ -0,0 +1,55 @@
1
+ require 'helper'
2
+
3
+ describe Esendex::Responses::Status do
4
+ describe '.deserialise' do
5
+ let(:acknowledged) { 0 }
6
+ let(:authorisationfailed) { 0 }
7
+ let(:connecting) { 0 }
8
+ let(:delivered) { 0 }
9
+ let(:failed) { 0 }
10
+ let(:partiallydelivered) { 0 }
11
+ let(:rejected) { 0 }
12
+ let(:scheduled) { 0 }
13
+ let(:sent) { 0 }
14
+ let(:submitted) { 1 }
15
+ let(:validityperiodexpired) { 0 }
16
+ let(:cancelled) { 0 }
17
+
18
+ let(:xml) {
19
+ <<EOS
20
+ <?xml version="1.0" encoding="utf-8"?>
21
+ <status>
22
+ <acknowledged>#{acknowledged}</acknowledged>
23
+ <authorisationfailed>#{authorisationfailed}</authorisationfailed>
24
+ <connecting>#{connecting}</connecting>
25
+ <delivered>#{delivered}</delivered>
26
+ <failed>#{failed}</failed>
27
+ <partiallydelivered>#{partiallydelivered}</partiallydelivered>
28
+ <rejected>#{rejected}</rejected>
29
+ <scheduled>#{scheduled}</scheduled>
30
+ <sent>#{sent}</sent>
31
+ <submitted>#{submitted}</submitted>
32
+ <validityperiodexpired>#{validityperiodexpired}</validityperiodexpired>
33
+ <cancelled>#{cancelled}</cancelled>
34
+ </status>
35
+ EOS
36
+ }
37
+
38
+ it 'deserialises xml into a Status instance' do
39
+ status = Esendex::Responses::Status.deserialise(xml)
40
+
41
+ status.acknowledged.must_equal acknowledged
42
+ status.authorisation_failed.must_equal authorisationfailed
43
+ status.connecting.must_equal connecting
44
+ status.delivered.must_equal delivered
45
+ status.failed.must_equal failed
46
+ status.partially_delivered.must_equal partiallydelivered
47
+ status.rejected.must_equal rejected
48
+ status.scheduled.must_equal scheduled
49
+ status.sent.must_equal sent
50
+ status.submitted.must_equal submitted
51
+ status.validity_period_expired.must_equal validityperiodexpired
52
+ status.cancelled.must_equal cancelled
53
+ end
54
+ end
55
+ end
@@ -1,18 +1,7 @@
1
- require_relative '../helper'
1
+ require 'helper'
2
2
 
3
3
  describe Esendex::Users do
4
4
  let(:credentials) { Esendex::Credentials.new('user', 'pass', 'ref') }
5
5
  subject { Esendex::Users.new(credentials) }
6
6
 
7
- describe '#username' do
8
- it 'returns the username' do
9
- subject.username.must_equal credentials.username
10
- end
11
- end
12
-
13
- describe '#password' do
14
- it 'returns the password' do
15
- subject.password.must_equal credentials.password
16
- end
17
- end
18
7
  end
@@ -1,4 +1,4 @@
1
- require_relative 'helper'
1
+ require 'helper'
2
2
 
3
3
  describe Esendex do
4
4
 
@@ -6,28 +6,68 @@ describe Esendex do
6
6
  let(:credentials) { subject.instance_variable_get(:@credentials) }
7
7
 
8
8
  describe '#account' do
9
- let(:account) { Object.new }
9
+ describe 'when account exists' do
10
+ let(:reference) { mock }
11
+ let(:account) { mock(reference: reference) }
12
+ let(:accounts) { [stub(reference: mock),
13
+ stub(reference: mock),
14
+ account,
15
+ stub(reference: mock)] }
16
+
17
+ before {
18
+ Esendex::Accounts
19
+ .expects(:new)
20
+ .with(credentials)
21
+ .returns(accounts)
22
+ }
23
+
24
+ it 'returns the Account with that reference' do
25
+ subject.account(reference).must_equal account
26
+ end
27
+ end
28
+
29
+ describe 'when account does not exist' do
30
+ let(:reference) { mock }
31
+ let(:accounts) { [stub(reference: mock),
32
+ stub(reference: mock),
33
+ stub(reference: mock)] }
34
+
35
+ before {
36
+ Esendex::Accounts
37
+ .expects(:new)
38
+ .with(credentials)
39
+ .returns(accounts)
40
+ }
41
+
42
+ it 'is nil' do
43
+ subject.account(reference).must_equal nil
44
+ end
45
+ end
46
+ end
47
+
48
+ describe '#accounts' do
49
+ let(:accounts) { Object.new }
10
50
 
11
51
  it 'returns a new Accounts instance' do
12
52
  Esendex::Accounts
13
53
  .expects(:new)
14
54
  .with(credentials)
15
- .returns(account)
55
+ .returns(accounts)
16
56
 
17
- subject.account.must_equal account
57
+ subject.accounts.must_equal accounts
18
58
  end
19
59
  end
20
60
 
21
- describe '#dispatcher' do
22
- let(:dispatcher) { Object.new }
61
+ describe '#batches' do
62
+ let(:batches) { mock }
23
63
 
24
- it 'returns a new Dispatcher instance' do
25
- Esendex::Dispatcher
64
+ it 'returns a new Batches instance' do
65
+ Esendex::Batches
26
66
  .expects(:new)
27
67
  .with(credentials)
28
- .returns(dispatcher)
68
+ .returns(batches)
29
69
 
30
- subject.dispatcher.must_equal dispatcher
70
+ subject.batches.must_equal batches
31
71
  end
32
72
  end
33
73
 
@@ -44,7 +84,7 @@ describe Esendex do
44
84
  end
45
85
  end
46
86
 
47
- describe '#user' do
87
+ describe '#users' do
48
88
  let(:user) { Object.new }
49
89
 
50
90
  it 'returns a new Users instance' do
@@ -53,7 +93,7 @@ describe Esendex do
53
93
  .with(credentials)
54
94
  .returns(user)
55
95
 
56
- subject.user.must_equal user
96
+ subject.users.must_equal user
57
97
  end
58
98
  end
59
99
  end