live_paper 0.0.8 → 0.0.9

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.
@@ -0,0 +1,183 @@
1
+ require 'spec_helper'
2
+
3
+ describe LivePaper::WmTrigger do
4
+ before do
5
+ stub_request(:post, /.*livepaperapi.com\/auth\/token.*/).to_return(:body => lpp_auth_response_json, :status => 200)
6
+ stub_request(:post, LivePaper::Link.api_url).to_return(:body => lpp_link_response_json, :status => 200)
7
+ stub_request(:get, "#{LivePaper::Link.api_url}/link_id").to_return(:body => lpp_link_response_json, :status => 200)
8
+ stub_request(:get, "#{LivePaper::Link.api_url}/link_not_existent").to_return(:body => '{}', :status => 404)
9
+
10
+ @data = {
11
+ id: 'id',
12
+ name: 'name',
13
+ analytics: 'analytics',
14
+ trigger_id: 'trigger_id',
15
+ payoff_id: 'payoff_id'
16
+ }
17
+ end
18
+
19
+ describe '#initialize' do
20
+ before do
21
+ @link = LivePaper::Link.new @data
22
+ end
23
+
24
+ it 'should map the analytics attribute.' do
25
+ expect(@link.analytics).to eq @data[:analytics]
26
+ end
27
+
28
+ it 'should map the trigger_id attribute.' do
29
+ expect(@link.trigger_id).to eq @data[:trigger_id]
30
+ end
31
+
32
+ it 'should map the payoff_id attribute.' do
33
+ expect(@link.payoff_id).to eq @data[:payoff_id]
34
+ end
35
+ end
36
+
37
+ describe '#save' do
38
+ context 'when all needed attributes are provided,' do
39
+ before do
40
+ @data.delete :id
41
+ @link = LivePaper::Link.new @data
42
+ end
43
+
44
+ it 'should make a POST to the link URL with body.' do
45
+ @link.save
46
+ assert_requested :post, LivePaper::Link.api_url, :body => {
47
+ link: {
48
+ name: 'name',
49
+ triggerId: 'trigger_id',
50
+ payoffId: 'payoff_id'
51
+ }
52
+ }.to_json
53
+ end
54
+ end
55
+
56
+ context 'when we do not have all needed data,' do
57
+ it 'should raise exception if the trigger_id is no provided.' do
58
+ @data.delete :trigger_id
59
+ link = LivePaper::Link.new @data
60
+ expect { link.save }.to raise_error
61
+ end
62
+
63
+ it 'should raise exception if the payoff_id is no provided.' do
64
+ @data.delete :payoff_id
65
+ link = LivePaper::Link.new @data
66
+ expect { link.save }.to raise_error
67
+ end
68
+ end
69
+ end
70
+
71
+ describe '#parse' do
72
+ before do
73
+ @link = LivePaper::Link.parse(lpp_link_response_json)
74
+ end
75
+
76
+ it 'should return a Link object.' do
77
+ expect(@link.class).to eq LivePaper::Link
78
+ end
79
+
80
+ it 'should map the id attribute.' do
81
+ expect(@link.id).to eq 'link_id'
82
+ end
83
+
84
+ it 'should map the name attribute.' do
85
+ expect(@link.name).to eq 'name'
86
+ end
87
+
88
+ it 'should map the analytics attribute.' do
89
+ expect(@link.analytics).to eq 'analytics'
90
+ end
91
+
92
+ it 'should map the trigger_id attribute.' do
93
+ expect(@link.trigger_id).to eq 'trigger_id'
94
+ end
95
+
96
+ it 'should map the payoff_id attribute.' do
97
+ expect(@link.payoff_id).to eq 'payoff_id'
98
+ end
99
+ end
100
+
101
+ describe '.find' do
102
+ context 'the requested Link exists.' do
103
+ before do
104
+ @link = LivePaper::Link.find('link_id')
105
+ end
106
+
107
+ it 'should return the requested link.' do
108
+ expect(@link.id).to eq 'link_id'
109
+ expect(@link.name).to eq 'name'
110
+ expect(@link.analytics).to eq 'analytics'
111
+ expect(@link.trigger_id).to eq 'trigger_id'
112
+ expect(@link.payoff_id).to eq 'payoff_id'
113
+ end
114
+ end
115
+
116
+ context 'the requested link does not exist or some error happened.' do
117
+ it 'should not raise error.' do
118
+ expect { LivePaper::Link.find('link_not_existent') }.to_not raise_error
119
+ end
120
+
121
+ it 'should return nil.' do
122
+ expect(LivePaper::Link.find('link_not_existent')).to eq nil
123
+ end
124
+ end
125
+ end
126
+
127
+ describe '#trigger' do
128
+ before do
129
+ stub_request(:get, "#{LivePaper::WmTrigger.api_url}/trigger_id").to_return(:body => lpp_trigger_response_json, :status => 200)
130
+ stub_request(:get, "#{LivePaper::WmTrigger.api_url}/trigger_not_existent").to_return(:body => '{}', :status => 404)
131
+ end
132
+
133
+ context 'the trigger_id attribute is from a valid trigger.' do
134
+ before do
135
+ @link = LivePaper::Link.new @data
136
+ end
137
+
138
+ it 'should return a Trigger Object.' do
139
+ expect(@link.trigger.class).to eq LivePaper::WmTrigger
140
+ end
141
+ end
142
+
143
+ context 'the trigger_id attribute is not valid.' do
144
+ before do
145
+ @data[:trigger_id] = 'trigger_not_existent'
146
+ @link = LivePaper::Link.new @data
147
+ end
148
+
149
+ it 'should return nil.' do
150
+ expect(@link.trigger).to eq nil
151
+ end
152
+ end
153
+ end
154
+
155
+ describe '#payoff' do
156
+ before do
157
+ stub_request(:get, "#{LivePaper::Payoff.api_url}/payoff_id").to_return(:body => lpp_payoff_response_json, :status => 200)
158
+ stub_request(:get, "#{LivePaper::Payoff.api_url}/payoff_not_existent").to_return(:body => '{}', :status => 404)
159
+ end
160
+
161
+ context 'the payoff_id attribute is from a valid payoff.' do
162
+ before do
163
+ @link = LivePaper::Link.new @data
164
+ end
165
+
166
+ it 'should return a Payoff Object.' do
167
+ expect(@link.payoff.class).to eq LivePaper::Payoff
168
+ end
169
+ end
170
+
171
+ context 'the payoff_id attribute is not valid.' do
172
+ before do
173
+ @data[:payoff_id] = 'payoff_not_existent'
174
+ @link = LivePaper::Link.new @data
175
+ end
176
+
177
+ it 'should return nil.' do
178
+ expect(@link.payoff).to eq nil
179
+ end
180
+ end
181
+ end
182
+
183
+ end
@@ -0,0 +1,220 @@
1
+ require 'spec_helper'
2
+
3
+ describe LivePaper::Payoff do
4
+ before do
5
+ stub_request(:post, /.*livepaperapi.com\/auth\/token.*/).to_return(:body => lpp_auth_response_json, :status => 200)
6
+ stub_request(:post, LivePaper::Payoff.api_url).to_return(:body => lpp_richpayoff_response_json, :status => 200)
7
+ stub_request(:get, "#{LivePaper::Payoff.api_url}/payoff_id").to_return(:body => lpp_payoff_response_json, :status => 200)
8
+ stub_request(:get, "#{LivePaper::Payoff.api_url}/payoff_not_existent").to_return(:body => '{}', :status => 404)
9
+ end
10
+
11
+ describe '#initialize' do
12
+ before do
13
+ @data = {
14
+ id: 'id',
15
+ name: 'name',
16
+ type: 'type',
17
+ url: 'url',
18
+ data_type: 'data_type',
19
+ data: 'data'
20
+ }
21
+ @payoff = LivePaper::Payoff.new @data
22
+ end
23
+
24
+ it 'should map the type attribute.' do
25
+ expect(@payoff.type).to eq @data[:type]
26
+ end
27
+
28
+ it 'should map the url attribute.' do
29
+ expect(@payoff.url).to eq @data[:url]
30
+ end
31
+
32
+ it 'should map the data_type attribute.' do
33
+ expect(@payoff.data_type).to eq @data[:data_type]
34
+ end
35
+
36
+ it 'should map the data attribute.' do
37
+ expect(@payoff.data).to eq @data[:data]
38
+ end
39
+ end
40
+
41
+ describe '#save' do
42
+ context 'all needed attributes are provided.' do
43
+ context 'payoff type is RICH_PAYOFF.' do
44
+ before :each do
45
+ @data = {
46
+ name: 'name',
47
+ type: LivePaper::Payoff::TYPE[:RICH],
48
+ url: 'url',
49
+ data_type: 'data_type',
50
+ data: 'data'
51
+ }
52
+ @payoff = LivePaper::Payoff.new @data
53
+ end
54
+
55
+ it 'should make a POST to the payoff URL with the richpayoff options hash.' do
56
+ @payoff.save
57
+ assert_requested :post, LivePaper::Payoff.api_url, :body => {
58
+ payoff: {
59
+ name: 'name',
60
+ richPayoff: {
61
+ version: 1,
62
+ private: {
63
+ :'content-type' => 'data_type',
64
+ :data => 'data'
65
+ },
66
+ public: {
67
+ url: 'url'
68
+ }
69
+ }
70
+ }
71
+ }.to_json
72
+ end
73
+ end
74
+
75
+ context 'payoff type is WEB_PAYOFF.' do
76
+ before :each do
77
+ @data = {
78
+ name: 'name',
79
+ type: LivePaper::Payoff::TYPE[:WEB],
80
+ url: 'url'
81
+ }
82
+ @payoff = LivePaper::Payoff.new @data
83
+ end
84
+
85
+ it 'should make a POST to the payoff URL with the webpayoff options hash.' do
86
+ @payoff.save
87
+ assert_requested :post, LivePaper::Payoff.api_url, :body => {
88
+ payoff: {
89
+ name: @data[:name],
90
+ URL: @data[:url]
91
+ }
92
+ }.to_json
93
+ end
94
+ end
95
+
96
+ end
97
+
98
+ context 'when we do not have all needed data.' do
99
+ before :each do
100
+ @data = {
101
+ name: 'name',
102
+ type: LivePaper::Payoff::TYPE[:WEB],
103
+ url: 'url'
104
+ }
105
+ @payoff = LivePaper::Payoff.new @data
106
+ end
107
+
108
+ it 'should raise an exception if the name was not provided.' do
109
+ @payoff.name = nil
110
+ expect { @payoff.save }.to raise_error ArgumentError
111
+ end
112
+
113
+ it 'should raise an exception if the type was not provided.' do
114
+ @payoff.type = nil
115
+ expect { @payoff.save }.to raise_error ArgumentError
116
+ end
117
+
118
+ it 'should raise an exception a unsupported type was provided.' do
119
+ @payoff.type = 'unsupported type'
120
+ expect { @payoff.save }.to raise_error ArgumentError
121
+ end
122
+
123
+ it 'should raise an exception if the url was not provided.' do
124
+ @payoff.url = nil
125
+ expect { @payoff.save }.to raise_error ArgumentError
126
+ end
127
+
128
+ context 'payoff type is RICH_PAYOFF.' do
129
+ before :each do
130
+ @data = {
131
+ name: 'name',
132
+ type: LivePaper::Payoff::TYPE[:RICH],
133
+ url: 'url',
134
+ data_type: 'data_type',
135
+ data: 'data'
136
+ }
137
+ @payoff = LivePaper::Payoff.new @data
138
+ end
139
+ it 'should raise an exception if the data_type was not provided.' do
140
+ @payoff.data_type = nil
141
+ expect { @payoff.save }.to raise_error ArgumentError
142
+ end
143
+ it 'should raise an exception if the data was not provided.' do
144
+ @payoff.data = nil
145
+ expect { @payoff.save }.to raise_error ArgumentError
146
+ end
147
+ end
148
+ end
149
+ end
150
+
151
+ describe '#parse' do
152
+ before do
153
+ @payoff = LivePaper::Payoff.parse(lpp_payoff_response_json)
154
+ end
155
+
156
+ it 'should return a Payoff object.' do
157
+ expect(@payoff.class).to eq LivePaper::Payoff
158
+ end
159
+
160
+ it 'should map the id attribute.' do
161
+ expect(@payoff.id).to eq 'payoff_id'
162
+ end
163
+ it 'should map the name attribute.' do
164
+ expect(@payoff.name).to eq 'name'
165
+ end
166
+
167
+ it 'should map the url attribute.' do
168
+ expect(@payoff.url).to eq 'url'
169
+ end
170
+
171
+ context 'when the data is from a web payoff.' do
172
+ it 'should map the payoff type attribute.' do
173
+ expect(@payoff.type).to eq LivePaper::Payoff::TYPE[:WEB]
174
+ end
175
+ end
176
+
177
+ context 'when the data is from a rich payoff.' do
178
+ before do
179
+ @payoff = LivePaper::Payoff.parse(lpp_richpayoff_response_json)
180
+ end
181
+
182
+ it 'should map the payoff type attribute.' do
183
+ expect(@payoff.type).to eq LivePaper::Payoff::TYPE[:RICH]
184
+ end
185
+
186
+ it 'should map the data_type attribute.' do
187
+ expect(@payoff.data_type).to eq 'data_type'
188
+ end
189
+ it 'should map the data attribute.' do
190
+ expect(@payoff.data).to eq ({field: 1})
191
+ end
192
+ end
193
+ end
194
+
195
+ describe '.find' do
196
+ context 'the requested payoff exists.' do
197
+ before do
198
+ @payoff = LivePaper::Payoff.find('payoff_id')
199
+ end
200
+
201
+ it 'should return the requested payoff.' do
202
+ expect(@payoff.id).to eq 'payoff_id'
203
+ expect(@payoff.name).to eq 'name'
204
+ expect(@payoff.url).to eq 'url'
205
+ end
206
+
207
+ end
208
+
209
+ context 'the requested payoff does not exist or some error happened.' do
210
+ it 'should not raise error.' do
211
+ expect { LivePaper::Payoff.find('payoff_not_existent') }.to_not raise_error
212
+ end
213
+
214
+ it 'should return nil.' do
215
+ expect(LivePaper::Payoff.find('payoff_not_existent')).to eq nil
216
+ end
217
+ end
218
+ end
219
+
220
+ end
@@ -0,0 +1,134 @@
1
+ require 'spec_helper'
2
+
3
+ DOWNLOAD_URL = "https://watermark.livepaperapi.com/watermark/v1/triggers"
4
+
5
+ describe LivePaper::WmTrigger do
6
+ before do
7
+ stub_request(:post, /.*livepaperapi.com\/auth\/token.*/).to_return(:body => lpp_auth_response_json, :status => 200)
8
+ stub_request(:post, LivePaper::WmTrigger.api_url).to_return(:body => lpp_trigger_response_json, :status => 200)
9
+ stub_request(:get, 'https://fileapi/id/image').to_return(:body => lpp_watermark_response, :status => 200)
10
+ stub_request(:get, "#{LivePaper::WmTrigger.api_url}/trigger_id").to_return(:body => lpp_trigger_response_json, :status => 200)
11
+ stub_request(:get, "#{LivePaper::WmTrigger.api_url}/trigger_not_existent").to_return(:body => '{}', :status => 404)
12
+
13
+ @data = {
14
+ id: 'id',
15
+ name: 'name',
16
+ watermark: {strength: 10, imageURL: 'url'},
17
+ subscription: 'subscription'
18
+ }
19
+ end
20
+
21
+ describe '#initialize' do
22
+ before do
23
+ @trigger = LivePaper::WmTrigger.new @data
24
+ end
25
+
26
+ it 'should map the watermark attribute.' do
27
+ expect(@trigger.watermark).to eq @data[:watermark]
28
+ end
29
+
30
+ it 'should map the subscription attribute.' do
31
+ expect(@trigger.subscription).to eq @data[:subscription]
32
+ end
33
+ end
34
+
35
+ describe '#save' do
36
+ context 'when all needed attributes are provided,' do
37
+ before do
38
+ @data.delete :id
39
+ @trigger = LivePaper::WmTrigger.new @data
40
+ end
41
+
42
+ it 'should make a POST to the trigger URL with body.' do
43
+ @trigger.save
44
+ assert_requested :post, LivePaper::WmTrigger.api_url, :body => {
45
+ trigger: {
46
+ name: 'name',
47
+ watermark: {
48
+ outputImageFormat: 'JPEG',
49
+ resolution: 75,
50
+ strength: 10,
51
+ imageURL: 'url'
52
+ },
53
+ subscription: {package: 'month'}
54
+ }
55
+ }.to_json
56
+ end
57
+ end
58
+
59
+ context 'when we do not have all needed data,' do
60
+ it 'should raise exception if the name is no provided.' do
61
+ @data.delete :name
62
+ trigger = LivePaper::WmTrigger.new @data
63
+ expect { trigger.save }.to raise_error
64
+ end
65
+
66
+ it 'should raise exception if the watermark is no provided.' do
67
+ @data.delete :watermark
68
+ trigger = LivePaper::WmTrigger.new @data
69
+ expect { trigger.save }.to raise_error
70
+ end
71
+ end
72
+ end
73
+
74
+ describe '#parse' do
75
+ before do
76
+ @trigger = LivePaper::WmTrigger.parse(lpp_trigger_response_json)
77
+ end
78
+
79
+ it 'should return a Trigger object.' do
80
+ expect(@trigger.class).to eq LivePaper::WmTrigger
81
+ end
82
+
83
+ it 'should map the id attribute.' do
84
+ expect(@trigger.id).to eq 'trigger_id'
85
+ end
86
+ it 'should map the name attribute.' do
87
+ expect(@trigger.name).to eq 'name'
88
+ end
89
+
90
+ it 'should map the watermark attribute.' do
91
+ expect(@trigger.watermark).to eq 'watermark'
92
+ end
93
+
94
+ it 'should map the subscription attribute.' do
95
+ expect(@trigger.subscription).to eq 'subscription'
96
+ end
97
+ end
98
+
99
+ describe '.find' do
100
+ context 'the requested trigger exists.' do
101
+ before do
102
+ @trigger = LivePaper::WmTrigger.find('trigger_id')
103
+ end
104
+
105
+ it 'should return the requested trigger.' do
106
+ expect(@trigger.id).to eq 'trigger_id'
107
+ expect(@trigger.name).to eq 'name'
108
+ expect(@trigger.watermark).to eq 'watermark'
109
+ expect(@trigger.subscription).to eq 'subscription'
110
+ end
111
+ end
112
+
113
+ context 'the requested trigger does not exist or some error happened.' do
114
+ it 'should not raise error.' do
115
+ expect { LivePaper::WmTrigger.find('trigger_not_existent') }.to_not raise_error
116
+ end
117
+
118
+ it 'should return nil.' do
119
+ expect(LivePaper::WmTrigger.find('trigger_not_existent')).to eq nil
120
+ end
121
+ end
122
+ end
123
+
124
+ describe '#download_watermark' do
125
+ before do
126
+ @trigger = LivePaper::WmTrigger.new @data
127
+ @trigger.wm_url='https://fileapi/id/image'
128
+ end
129
+
130
+ it 'should return the watermark image data.' do
131
+ expect(@trigger.download_watermark).to eq 'watermark_data'
132
+ end
133
+ end
134
+ end