unresponsys 0.3.5 → 0.4.0
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/lib/unresponsys.rb +4 -0
- data/lib/unresponsys/event.rb +22 -5
- data/lib/unresponsys/events.rb +11 -0
- data/lib/unresponsys/extension_tables.rb +11 -0
- data/lib/unresponsys/member.rb +2 -18
- data/lib/unresponsys/message.rb +41 -0
- data/lib/unresponsys/messages.rb +11 -0
- data/lib/unresponsys/version.rb +1 -1
- data/spec/event_spec.rb +43 -0
- data/spec/extension_table_spec.rb +38 -0
- data/spec/folder_spec.rb +26 -0
- data/spec/helpers_spec.rb +28 -0
- data/spec/list_spec.rb +45 -0
- data/spec/member_spec.rb +144 -0
- data/spec/message_spec.rb +52 -0
- data/spec/row_spec.rb +70 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/supplemental_table_spec.rb +33 -0
- metadata +27 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ad00b0e458c1b1740c500dc74c84619d32eefe6
|
4
|
+
data.tar.gz: c8154f6112c4b87fca895b4343b63bd47ed1369f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: defb91efe2c2e71087fc4d7863a49a83d173a6a4a451489852c8c8a96b6e6823b051fd263466fafe7cc35ee85f47374bd9a1682fb0b1ac7e005f9121ec868d69
|
7
|
+
data.tar.gz: e5efb7ac81fb4fc38d6e55ae83fff871206420ede771c4a5fc0a2061801a8a75d7922d556e2d21c1c0f24063a70e746cf5be8c67b6a2e1857452b71d4cd5c000
|
data/lib/unresponsys.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
require 'unresponsys/client'
|
2
2
|
require 'unresponsys/event'
|
3
|
+
require 'unresponsys/events'
|
3
4
|
require 'unresponsys/extension_table'
|
5
|
+
require 'unresponsys/extension_tables'
|
4
6
|
require 'unresponsys/errors'
|
5
7
|
require 'unresponsys/folder'
|
6
8
|
require 'unresponsys/helpers'
|
7
9
|
require 'unresponsys/list'
|
8
10
|
require 'unresponsys/member'
|
9
11
|
require 'unresponsys/merge_rule'
|
12
|
+
require 'unresponsys/message'
|
13
|
+
require 'unresponsys/messages'
|
10
14
|
require 'unresponsys/row'
|
11
15
|
require 'unresponsys/supplemental_table'
|
12
16
|
require 'unresponsys/version'
|
data/lib/unresponsys/event.rb
CHANGED
@@ -7,19 +7,36 @@ class Unresponsys
|
|
7
7
|
def initialize(options = {})
|
8
8
|
@event_name = options[:event]
|
9
9
|
@member = options[:member]
|
10
|
+
@properties = options[:properties]
|
10
11
|
end
|
11
12
|
|
12
13
|
def save
|
13
|
-
|
14
|
+
build_body
|
15
|
+
build_properties
|
16
|
+
response = client.post("/events/#{@event_name}", body: @body.to_json)
|
17
|
+
response.first['errorMessage'].blank?
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def build_body
|
23
|
+
@body = {
|
14
24
|
customEvent: {},
|
15
25
|
recipientData: [{
|
16
|
-
recipient: {
|
26
|
+
recipient: {
|
27
|
+
listName: { objectName: @member.list.name },
|
28
|
+
recipientId: @member.riid
|
29
|
+
}
|
17
30
|
}]
|
18
31
|
}
|
32
|
+
end
|
19
33
|
|
20
|
-
|
21
|
-
return
|
22
|
-
|
34
|
+
def build_properties
|
35
|
+
return unless @properties.present?
|
36
|
+
@body[:recipientData].first[:optionalData] = []
|
37
|
+
@properties.each_pair do |key, val|
|
38
|
+
@body[:recipientData].first[:optionalData] << { name: key.to_s, value: val.to_s }
|
39
|
+
end
|
23
40
|
end
|
24
41
|
end
|
25
42
|
end
|
data/lib/unresponsys/member.rb
CHANGED
@@ -67,28 +67,12 @@ class Unresponsys
|
|
67
67
|
@events ||= Events.new(self)
|
68
68
|
end
|
69
69
|
|
70
|
-
class Events
|
71
|
-
def initialize(member)
|
72
|
-
@member = member
|
73
|
-
end
|
74
|
-
|
75
|
-
def new(event, properties = {})
|
76
|
-
Event.new(member: @member, event: event, properties: properties)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
70
|
def extension_tables
|
81
71
|
@extension_tables ||= ExtensionTables.new(self)
|
82
72
|
end
|
83
73
|
|
84
|
-
|
85
|
-
|
86
|
-
@member = member
|
87
|
-
end
|
88
|
-
|
89
|
-
def find(name)
|
90
|
-
Unresponsys::ExtensionTable.new(@member, name)
|
91
|
-
end
|
74
|
+
def messages
|
75
|
+
@messages ||= Messages.new(self)
|
92
76
|
end
|
93
77
|
|
94
78
|
def to_h
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class Unresponsys
|
2
|
+
class Message
|
3
|
+
extend Forwardable
|
4
|
+
delegate [:client] => :member
|
5
|
+
attr_reader :member
|
6
|
+
|
7
|
+
def initialize(options = {})
|
8
|
+
@message_name = options[:message]
|
9
|
+
@member = options[:member]
|
10
|
+
@properties = options[:properties]
|
11
|
+
end
|
12
|
+
|
13
|
+
def save
|
14
|
+
build_body
|
15
|
+
build_properties
|
16
|
+
response = client.post("/campaigns/#{@message_name}/email", body: @body.to_json)
|
17
|
+
response.first['errorMessage'].blank?
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def build_body
|
23
|
+
@body = {
|
24
|
+
recipientData: [{
|
25
|
+
recipient: {
|
26
|
+
listName: { objectName: @member.list.name },
|
27
|
+
recipientId: @member.riid
|
28
|
+
}
|
29
|
+
}]
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
def build_properties
|
34
|
+
return unless @properties.present?
|
35
|
+
@body[:recipientData].first[:optionalData] = []
|
36
|
+
@properties.each_pair do |key, val|
|
37
|
+
@body[:recipientData].first[:optionalData] << { name: key.to_s, value: val.to_s }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/unresponsys/version.rb
CHANGED
data/spec/event_spec.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Unresponsys::Event do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@client = Unresponsys::Client.new(username: ENV['R_USER'], password: ENV['R_PASS'])
|
7
|
+
allow(@client).to receive(:authenticate).and_return(true)
|
8
|
+
|
9
|
+
VCR.use_cassette('get_existing_member') do
|
10
|
+
list = @client.lists.find('TestDataList')
|
11
|
+
@member = list.members.find('kwkimball@gmail.com')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#save' do
|
16
|
+
before(:each) do
|
17
|
+
@event = @member.events.new('Sign_Up')
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'posts to Responsys' do
|
21
|
+
VCR.use_cassette('save_new_event') do
|
22
|
+
expect(@client).to receive(:post).and_call_original
|
23
|
+
@event.save
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns true' do
|
28
|
+
VCR.use_cassette('save_new_event') do
|
29
|
+
expect(@event.save).to eq(true)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'with undefined event' do
|
34
|
+
it 'returns an error' do
|
35
|
+
VCR.use_cassette('save_new_event_undefined') do
|
36
|
+
@event = @member.events.new('MyEvent')
|
37
|
+
expect { @event.save }.to raise_error(Unresponsys::NotFound)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Unresponsys::ExtensionTable do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@client = Unresponsys::Client.new(username: ENV['R_USER'], password: ENV['R_PASS'])
|
7
|
+
allow(@client).to receive(:authenticate).and_return(true)
|
8
|
+
|
9
|
+
VCR.use_cassette('get_existing_member') do
|
10
|
+
list = @client.lists.find('TestDataList')
|
11
|
+
@member = list.members.find('kwkimball@gmail.com')
|
12
|
+
end
|
13
|
+
|
14
|
+
@table = @member.extension_tables.find('TestExtensionTable')
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#update' do
|
18
|
+
context 'existing record' do
|
19
|
+
it 'posts to Responsys' do
|
20
|
+
VCR.use_cassette('update_existing_extension_row') do
|
21
|
+
expect(@client).to receive(:post).and_call_original
|
22
|
+
@table.update(title: 'My New Title')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'returns true' do
|
27
|
+
VCR.use_cassette('update_existing_extension_row') do
|
28
|
+
expect(@table.update(title: 'My New Title')).to eq(true)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'new record' do
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
data/spec/folder_spec.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Unresponsys::Folder do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@client = Unresponsys::Client.new(username: ENV['R_USER'], password: ENV['R_PASS'])
|
7
|
+
allow(@client).to receive(:authenticate).and_return(true)
|
8
|
+
end
|
9
|
+
|
10
|
+
it '.find returns an instance of Folder' do
|
11
|
+
folder = @client.folders.find('TestData')
|
12
|
+
expect(folder).to be_an_instance_of(Unresponsys::Folder)
|
13
|
+
end
|
14
|
+
|
15
|
+
context do
|
16
|
+
before :each do
|
17
|
+
@folder = @client.folders.find('TestData')
|
18
|
+
end
|
19
|
+
|
20
|
+
it '#supplemental_tables.find returns an instance of SupplementalTable' do
|
21
|
+
table = @folder.supplemental_tables.find('MyTable')
|
22
|
+
expect(table).to be_an_instance_of(Unresponsys::SupplementalTable)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Monkey patches' do
|
4
|
+
describe Object do
|
5
|
+
it 'converts to responsys' do
|
6
|
+
obj = Object.new
|
7
|
+
expect(obj.to_responsys).to eq obj.to_s
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe String do
|
12
|
+
it 'converts to int' do
|
13
|
+
expect('123'.to_ruby).to eq 123
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'doesnt convert hex strings to int' do
|
17
|
+
expect('1e9993'.to_ruby).to eq '1e9993'
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'converts to float' do
|
21
|
+
expect('1.23'.to_ruby).to eq 1.23
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'doesnt convert hex strings to float' do
|
25
|
+
expect('1e9993'.to_ruby).to eq '1e9993'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/spec/list_spec.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Unresponsys::List do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@client = Unresponsys::Client.new(username: ENV['R_USER'], password: ENV['R_PASS'])
|
7
|
+
allow(@client).to receive(:authenticate).and_return(true)
|
8
|
+
|
9
|
+
list = @client.lists.find('TestDataList')
|
10
|
+
member = list.members.new('kwkimball@gmail.com')
|
11
|
+
member.save
|
12
|
+
end
|
13
|
+
|
14
|
+
it '.find returns an instance of List' do
|
15
|
+
list = @client.lists.find('TestDataList')
|
16
|
+
expect(list).to be_an_instance_of(Unresponsys::List)
|
17
|
+
end
|
18
|
+
|
19
|
+
context do
|
20
|
+
before :each do
|
21
|
+
@list = @client.lists.find('TestDataList')
|
22
|
+
end
|
23
|
+
|
24
|
+
it '#members.find returns an instance of Member when a member exists' do
|
25
|
+
VCR.use_cassette('find_member_exists') do
|
26
|
+
member = @list.members.find('kwkimball@gmail.com')
|
27
|
+
expect(member).to be_an_instance_of(Unresponsys::Member)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it '#members.find raises an error when a member doesnt exist' do
|
32
|
+
VCR.use_cassette('find_member_doesnt_exist') do
|
33
|
+
expect {
|
34
|
+
@list.members.find('kwkimball+foo@gmail.com')
|
35
|
+
}.to raise_error(Unresponsys::NotFound)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
it '#members.new returns an instance of Member' do
|
40
|
+
member = @list.members.new('kwkimball@gmail.com')
|
41
|
+
expect(member).to be_an_instance_of(Unresponsys::Member)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/spec/member_spec.rb
ADDED
@@ -0,0 +1,144 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Unresponsys::Member do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@client = Unresponsys::Client.new(username: ENV['R_USER'], password: ENV['R_PASS'])
|
7
|
+
allow(@client).to receive(:authenticate).and_return(true)
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'when an existing member' do
|
11
|
+
before :each do
|
12
|
+
VCR.use_cassette('get_existing_member') do
|
13
|
+
@list = @client.lists.find('TestDataList')
|
14
|
+
@member = @list.members.find('kwkimball@gmail.com')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'Responsys attributes can be changed' do
|
19
|
+
@member.city = 'San Francisco'
|
20
|
+
expect(@member.city).to eq('San Francisco')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'custom attributes can be changed' do
|
24
|
+
@member.first_name = 'Kevin'
|
25
|
+
expect(@member.first_name).to eq('Kevin')
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#save' do
|
29
|
+
it 'posts to Responsys' do
|
30
|
+
VCR.use_cassette('save_existing_member') do
|
31
|
+
expect(@client).to receive(:post).and_call_original
|
32
|
+
@member.save
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns true' do
|
37
|
+
VCR.use_cassette('save_existing_member') do
|
38
|
+
expect(@member.save).to eq(true)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'custom text attributes can be saved' do
|
43
|
+
VCR.use_cassette('save_existing_member_with_text') do
|
44
|
+
@member.last_name = 'Kimball'
|
45
|
+
@member.save
|
46
|
+
@member = @list.members.find('kwkimball@gmail.com')
|
47
|
+
expect(@member.last_name).to eq('Kimball')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'custom number attributes can be saved' do
|
52
|
+
VCR.use_cassette('save_existing_member_with_number') do
|
53
|
+
@member.total_revenue = 101.23
|
54
|
+
@member.save
|
55
|
+
@member = @list.members.find('kwkimball@gmail.com')
|
56
|
+
expect(@member.total_revenue).to eq(101.23)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'custom integer attributes can be saved' do
|
61
|
+
VCR.use_cassette('save_existing_member_with_integer') do
|
62
|
+
@member.age = 30
|
63
|
+
@member.save
|
64
|
+
@member = @list.members.find('kwkimball@gmail.com')
|
65
|
+
expect(@member.age).to eq(30)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'custom timestamp attributes can be saved' do
|
70
|
+
VCR.use_cassette('save_existing_member_with_timestamp') do
|
71
|
+
time = Time.new(2015, 10, 7, 5, 00, 00, '-07:00')
|
72
|
+
@member.last_purchase = time
|
73
|
+
@member.save
|
74
|
+
@member = @list.members.find('kwkimball@gmail.com')
|
75
|
+
expect(@member.last_purchase).to eq(time)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'custom boolean attributes can be saved' do
|
80
|
+
VCR.use_cassette('save_existing_member_with_boolean') do
|
81
|
+
@member.mom = false
|
82
|
+
@member.save
|
83
|
+
@member = @list.members.find('kwkimball@gmail.com')
|
84
|
+
expect(@member.mom).to eq(false)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
it '#events.new returns an instance of Event' do
|
90
|
+
expect(@member.events.new('MyEvent')).to be_an_instance_of(Unresponsys::Event)
|
91
|
+
end
|
92
|
+
|
93
|
+
it '#extension_tables.find returns an instance of ExtensionTable' do
|
94
|
+
table = @member.extension_tables.find('MyTable')
|
95
|
+
expect(table).to be_an_instance_of(Unresponsys::ExtensionTable)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
context 'when a new member' do
|
100
|
+
before :each do
|
101
|
+
list = @client.lists.find('TestDataList')
|
102
|
+
@member = list.members.new('kwkimball+bar@gmail.com')
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'Responsys attributes can be changed' do
|
106
|
+
@member.city = 'San Francisco'
|
107
|
+
expect(@member.city).to eq('San Francisco')
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'custom attributes can be changed' do
|
111
|
+
@member.first_name = 'Kevin'
|
112
|
+
expect(@member.first_name).to eq('Kevin')
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '#save' do
|
116
|
+
it 'posts to Responsys' do
|
117
|
+
VCR.use_cassette('save_new_member') do
|
118
|
+
expect(@client).to receive(:post).and_call_original
|
119
|
+
@member.save
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'returns true' do
|
124
|
+
VCR.use_cassette('save_new_member') do
|
125
|
+
expect(@member.save).to eq(true)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
describe '#to_h' do
|
131
|
+
it 'returns the correct hash' do
|
132
|
+
@member.city = 'San Francisco'
|
133
|
+
@member.first_name = 'Kevin'
|
134
|
+
hash = {
|
135
|
+
'EMAIL_ADDRESS_' => 'kwkimball+bar@gmail.com',
|
136
|
+
'CITY_' => 'San Francisco',
|
137
|
+
'FIRST_NAME' => 'Kevin'
|
138
|
+
}
|
139
|
+
expect(@member.to_h).to include(hash)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Unresponsys::Message do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@client = Unresponsys::Client.new(username: ENV['R_USER'], password: ENV['R_PASS'])
|
7
|
+
allow(@client).to receive(:authenticate).and_return(true)
|
8
|
+
|
9
|
+
VCR.use_cassette('get_existing_member') do
|
10
|
+
list = @client.lists.find('TestDataList')
|
11
|
+
@member = list.members.find('kwkimball@gmail.com')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#save' do
|
16
|
+
before(:each) do
|
17
|
+
@message = @member.messages.new('KevinTest')
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'posts to Responsys' do
|
21
|
+
VCR.use_cassette('save_new_message') do
|
22
|
+
expect(@client).to receive(:post).and_call_original
|
23
|
+
@message.save
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns true' do
|
28
|
+
VCR.use_cassette('save_new_message') do
|
29
|
+
expect(@message.save).to eq(true)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'with optional data' do
|
34
|
+
it 'returns true' do
|
35
|
+
VCR.use_cassette('save_new_message_optional_data') do
|
36
|
+
@message = @member.messages.new('KevinTest', testdata: 'success')
|
37
|
+
expect(@message.save).to eq(true)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'with undefined campaign' do
|
43
|
+
it 'returns an error' do
|
44
|
+
VCR.use_cassette('save_new_message_undefined') do
|
45
|
+
@message = @member.messages.new('MyMessage')
|
46
|
+
expect { @message.save }.to raise_error(Unresponsys::NotFound)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
data/spec/row_spec.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Unresponsys::Row do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@client = Unresponsys::Client.new(username: ENV['R_USER'], password: ENV['R_PASS'])
|
7
|
+
allow(@client).to receive(:authenticate).and_return(true)
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'when a new row' do
|
11
|
+
before :each do
|
12
|
+
folder = @client.folders.find('TestData')
|
13
|
+
@table = folder.supplemental_tables.find('TestTable')
|
14
|
+
@row = @table.rows.new(1)
|
15
|
+
|
16
|
+
# at least one field must be set
|
17
|
+
@row.title = 'My Title'
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#save' do
|
21
|
+
it 'posts to Responsys' do
|
22
|
+
VCR.use_cassette('save_new_row') do
|
23
|
+
expect(@client).to receive(:post).and_call_original
|
24
|
+
@row.save
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns true' do
|
29
|
+
VCR.use_cassette('save_new_row') do
|
30
|
+
expect(@row.save).to eq(true)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#to_h' do
|
36
|
+
it 'returns the correct hash' do
|
37
|
+
hash = {
|
38
|
+
'ID_' => '1',
|
39
|
+
'TITLE' => 'My Title'
|
40
|
+
}
|
41
|
+
expect(@row.to_h).to include(hash)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when an existing row' do
|
47
|
+
before :each do
|
48
|
+
VCR.use_cassette('get_existing_row') do
|
49
|
+
folder = @client.folders.find('TestData')
|
50
|
+
@table = folder.supplemental_tables.find('TestTable')
|
51
|
+
@row = @table.rows.find(1)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#destroy' do
|
56
|
+
it 'deletes to Responsys' do
|
57
|
+
VCR.use_cassette('delete_existing_row') do
|
58
|
+
expect(@client).to receive(:delete).and_call_original
|
59
|
+
@row.destroy
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'returns true' do
|
64
|
+
VCR.use_cassette('delete_existing_row') do
|
65
|
+
expect(@row.destroy).to eq(true)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'dotenv'
|
3
|
+
require 'unresponsys'
|
4
|
+
require 'rspec'
|
5
|
+
require 'vcr'
|
6
|
+
require 'webmock'
|
7
|
+
require 'byebug'
|
8
|
+
|
9
|
+
Dotenv.load
|
10
|
+
|
11
|
+
VCR.configure do |c|
|
12
|
+
c.cassette_library_dir = 'fixtures/vcr_cassettes'
|
13
|
+
c.hook_into :webmock
|
14
|
+
c.allow_http_connections_when_no_cassette = true
|
15
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Unresponsys::SupplementalTable do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@client = Unresponsys::Client.new(username: ENV['R_USER'], password: ENV['R_PASS'])
|
7
|
+
allow(@client).to receive(:authenticate).and_return(true)
|
8
|
+
|
9
|
+
folder = @client.folders.find('TestData')
|
10
|
+
@table = folder.supplemental_tables.find('TestTable')
|
11
|
+
end
|
12
|
+
|
13
|
+
it '#rows.find returns an instance of Row when a row exists' do
|
14
|
+
VCR.use_cassette('find_row_exists') do
|
15
|
+
row = @table.rows.find(1)
|
16
|
+
expect(row).to be_an_instance_of(Unresponsys::Row)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it '#rows.find raises an error when a row does not exist' do
|
21
|
+
VCR.use_cassette('find_row_doesnt_exist') do
|
22
|
+
expect {
|
23
|
+
@table.rows.find(2)
|
24
|
+
}.to raise_error(Unresponsys::NotFound)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it '#rows.new returns an instance of Row' do
|
29
|
+
row = @table.rows.new(2)
|
30
|
+
expect(row).to be_an_instance_of(Unresponsys::Row)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unresponsys
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Kimball
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -141,15 +141,29 @@ files:
|
|
141
141
|
- lib/unresponsys/client.rb
|
142
142
|
- lib/unresponsys/errors.rb
|
143
143
|
- lib/unresponsys/event.rb
|
144
|
+
- lib/unresponsys/events.rb
|
144
145
|
- lib/unresponsys/extension_table.rb
|
146
|
+
- lib/unresponsys/extension_tables.rb
|
145
147
|
- lib/unresponsys/folder.rb
|
146
148
|
- lib/unresponsys/helpers.rb
|
147
149
|
- lib/unresponsys/list.rb
|
148
150
|
- lib/unresponsys/member.rb
|
149
151
|
- lib/unresponsys/merge_rule.rb
|
152
|
+
- lib/unresponsys/message.rb
|
153
|
+
- lib/unresponsys/messages.rb
|
150
154
|
- lib/unresponsys/row.rb
|
151
155
|
- lib/unresponsys/supplemental_table.rb
|
152
156
|
- lib/unresponsys/version.rb
|
157
|
+
- spec/event_spec.rb
|
158
|
+
- spec/extension_table_spec.rb
|
159
|
+
- spec/folder_spec.rb
|
160
|
+
- spec/helpers_spec.rb
|
161
|
+
- spec/list_spec.rb
|
162
|
+
- spec/member_spec.rb
|
163
|
+
- spec/message_spec.rb
|
164
|
+
- spec/row_spec.rb
|
165
|
+
- spec/spec_helper.rb
|
166
|
+
- spec/supplemental_table_spec.rb
|
153
167
|
homepage:
|
154
168
|
licenses: []
|
155
169
|
metadata: {}
|
@@ -173,4 +187,14 @@ rubygems_version: 2.4.6
|
|
173
187
|
signing_key:
|
174
188
|
specification_version: 4
|
175
189
|
summary: an opinionated Ruby wrapper for Responsys REST API
|
176
|
-
test_files:
|
190
|
+
test_files:
|
191
|
+
- spec/event_spec.rb
|
192
|
+
- spec/extension_table_spec.rb
|
193
|
+
- spec/folder_spec.rb
|
194
|
+
- spec/helpers_spec.rb
|
195
|
+
- spec/list_spec.rb
|
196
|
+
- spec/member_spec.rb
|
197
|
+
- spec/message_spec.rb
|
198
|
+
- spec/row_spec.rb
|
199
|
+
- spec/spec_helper.rb
|
200
|
+
- spec/supplemental_table_spec.rb
|