bobot 3.6.3 → 3.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2ae39f29dc92093c1e5390c223860530717aed9
4
- data.tar.gz: 9e63115deb48163e9ce4cb2d7c67010578785628
3
+ metadata.gz: 6c99e1858ab5920d04639c1ac7231851463efd12
4
+ data.tar.gz: 6b11a790f7161b698050b77b2bbeb89f3e6a5c7c
5
5
  SHA512:
6
- metadata.gz: 7ad33aed1ba080fa845349db124bbfc6d7609cd49a3bfe25e90d54149063da5a7168926be20e2f95a917f2200c2c846d898664f4751f3ef96cde4cbae7f7ce07
7
- data.tar.gz: 0c3630df5108f2b73693fa61510b011d6e9f51fbf57c60aba5a7e8e60556eac1a5c36d57c3a0745460b54b8f9b7d33304fc42b6b5c52403c271ed0093bdecade
6
+ metadata.gz: 427c44cb577011eab720a2fcd4672a187bffbde09041dbc4e6dfd2f9a5dbd662330a97deaed0020b13f64f07b0bd80fa731434cbfc0cc2efe75a5a98f267eeb0
7
+ data.tar.gz: f01481c7cd962c33c1cf9973b2c33ff91f5af93f42406480dd81e3ed6ba7c261abcaf4c47a406045136ca3b9fb42dddd96f57d6dd5b9ca09ac4a77cf22b2eb29
@@ -12,11 +12,11 @@ module Bobot
12
12
  end
13
13
 
14
14
  def self.postback(title:, payload:)
15
- raise Bobot::FieldFormat.new('title is required.') unless title.present?
16
- raise Bobot::FieldFormat.new('title length is limited to 20.', title) if title.size > 20
17
- raise Bobot::FieldFormat.new('payload is required.') unless payload.present?
15
+ raise Bobot::FieldFormat.new('title is required') unless title.present?
16
+ raise Bobot::FieldFormat.new('title size is limited to 20', "#{title} (#{title.size} chars)") if title.size > 20
17
+ raise Bobot::FieldFormat.new('payload is required') unless payload.present?
18
18
  payload = Bobot::Buttons.encode_payload(payload: payload)
19
- raise Bobot::FieldFormat.new('payload length is limited to 1000.') if payload.bytesize > 1000
19
+ raise Bobot::FieldFormat.new('payload size is limited to 1000', "#{payload.size} chars") if payload.size > 1000
20
20
  {
21
21
  type: 'postback',
22
22
  title: title,
@@ -25,10 +25,10 @@ module Bobot
25
25
  end
26
26
 
27
27
  def self.generic_element(title:, subtitle: nil, image_url: nil, default_action_url: nil, buttons: nil)
28
- raise Bobot::FieldFormat.new('title is required.') unless title.present?
29
- raise Bobot::FieldFormat.new('title length is limited to 80.', title) if title.size > 80
30
- raise Bobot::FieldFormat.new('subtitle length is limited to 80.', subtitle) if subtitle.present? && subtitle.size > 80
31
- raise Bobot::FieldFormat.new('buttons are limited to 3.') if buttons.present? && buttons.size > 3
28
+ raise Bobot::FieldFormat.new('title is required') unless title.present?
29
+ raise Bobot::FieldFormat.new('title size is limited to 80', "#{title} (#{title.size} chars)") if title.size > 80
30
+ raise Bobot::FieldFormat.new('subtitle size is limited to 80', "#{subtitle} (#{subtitle.size} chars)") if subtitle.present? && subtitle.size > 80
31
+ raise Bobot::FieldFormat.new('buttons are limited to 3', buttons.size) if buttons.present? && buttons.size > 3
32
32
  {
33
33
  title: title,
34
34
  }.tap do |properties|
@@ -51,11 +51,11 @@ module Bobot
51
51
  end
52
52
 
53
53
  def self.quick_reply_text(title:, payload:, image_url: nil)
54
- raise Bobot::FieldFormat.new('title is required.') unless title.present?
55
- raise Bobot::FieldFormat.new('title length is limited to 20.', title) if title.size > 20
56
- raise Bobot::FieldFormat.new('payload is required.') unless payload.present?
54
+ raise Bobot::FieldFormat.new('title is required') unless title.present?
55
+ raise Bobot::FieldFormat.new('title size is limited to 20', "#{title} (#{title.size} chars)") if title.size > 20
56
+ raise Bobot::FieldFormat.new('payload is required') unless payload.present?
57
57
  payload = Bobot::Buttons.encode_payload(payload: payload)
58
- raise Bobot::FieldFormat.new('payload length is limited to 1000.') if payload.bytesize > 1000
58
+ raise Bobot::FieldFormat.new('payload size is limited to 1000', "#{payload.size} chars") if payload.size > 1000
59
59
  {
60
60
  content_type: 'text',
61
61
  title: title,
@@ -72,12 +72,12 @@ module Bobot
72
72
  end
73
73
 
74
74
  def self.share_custom(title:, subtitle:, image_url:, web_url:, button_title:, image_aspect_ratio: "square")
75
- raise Bobot::FieldFormat.new('title is required.') unless title.present?
76
- raise Bobot::FieldFormat.new('title length is limited to 80.', title) if title.size > 80
77
- raise Bobot::FieldFormat.new('subtitle is required.') unless subtitle.present?
78
- raise Bobot::FieldFormat.new('subtitle length is limited to 80.', subtitle) if subtitle.size > 80
79
- raise Bobot::FieldFormat.new('button_title is required.') unless button_title.present?
80
- raise Bobot::FieldFormat.new('button_title length is limited to 20.', button_title) if button_title.size > 20
75
+ raise Bobot::FieldFormat.new('title is required') unless title.present?
76
+ raise Bobot::FieldFormat.new('title size is limited to 80', "#{title} (#{title.size} chars)") if title.size > 80
77
+ raise Bobot::FieldFormat.new('subtitle is required') unless subtitle.present?
78
+ raise Bobot::FieldFormat.new('subtitle size is limited to 80', "#{subtitle} (#{subtitle.size} chars)") if subtitle.size > 80
79
+ raise Bobot::FieldFormat.new('button_title is required') unless button_title.present?
80
+ raise Bobot::FieldFormat.new('button_title size is limited to 20', "#{button_title} (#{button_title.size} chars)") if button_title.size > 20
81
81
  {
82
82
  type: 'element_share',
83
83
  share_contents: {
@@ -111,12 +111,12 @@ module Bobot
111
111
  end
112
112
 
113
113
  def self.default_action_url(url:, options: {})
114
- raise Bobot::FieldFormat.new('url is required.') unless url.present?
114
+ raise Bobot::FieldFormat.new('url is required') unless url.present?
115
115
  if options.key?(:messenger_extensions) && options[:messenger_extensions] && !url.include?('https')
116
- raise Bobot::FieldFormat.new('must use url HTTPS protocol if messenger_extensions is true.')
116
+ raise Bobot::FieldFormat.new('must use url HTTPS protocol if messenger_extensions is true.', url)
117
117
  end
118
118
  if options.key?(:webview_height_ratio) && !%w[compact tall full].include?(options[:webview_height_ratio])
119
- raise Bobot::FieldFormat.new('invalid webview_height_ratio, only "compact, tall, full" are permitted.')
119
+ raise Bobot::FieldFormat.new('invalid webview_height_ratio, only "compact, tall, full" are permitted.', options[:webview_height_ratio])
120
120
  end
121
121
  {
122
122
  type: 'web_url',
@@ -130,14 +130,14 @@ module Bobot
130
130
  end
131
131
 
132
132
  def self.url(title:, url:, options: {})
133
- raise Bobot::FieldFormat.new('title is required.') unless title.present?
134
- raise Bobot::FieldFormat.new('title length is limited to 20.', title) if title.size > 20
135
- raise Bobot::FieldFormat.new('url is required.') unless url.present?
133
+ raise Bobot::FieldFormat.new('title is required') unless title.present?
134
+ raise Bobot::FieldFormat.new('title size is limited to 20', "#{title} (#{title.size} chars)") if title.size > 20
135
+ raise Bobot::FieldFormat.new('url is required') unless url.present?
136
136
  if options.key?(:messenger_extensions) && options[:messenger_extensions] && !url.include?('https')
137
- raise Bobot::FieldFormat.new('must use url HTTPS protocol if messenger_extensions is true.')
137
+ raise Bobot::FieldFormat.new('must use url HTTPS protocol if messenger_extensions is true.', url)
138
138
  end
139
139
  if options.key?(:webview_height_ratio) && !%w[compact tall full].include?(options[:webview_height_ratio])
140
- raise Bobot::FieldFormat.new('invalid webview_height_ratio, only "compact, tall, full" are permitted.')
140
+ raise Bobot::FieldFormat.new('invalid webview_height_ratio, only "compact, tall, full" are permitted.', options[:webview_height_ratio])
141
141
  end
142
142
  {
143
143
  type: 'web_url',
@@ -153,11 +153,11 @@ module Bobot
153
153
 
154
154
  REGEX_PHONE_NUMBER = /\A(?:\+)(?:\d{1,3}\s*-?)?\(?(?:\d{3})?\)?[- ]?\d{3}[- ]?\d{4}\z/
155
155
  def self.call(title:, payload:)
156
- raise Bobot::FieldFormat.new('title is required.') unless title.present?
157
- raise Bobot::FieldFormat.new('title length is limited to 20.', title) if title.size > 20
158
- raise Bobot::FieldFormat.new('payload is required.') unless payload.present?
159
- raise Bobot::FieldFormat.new('payload has to be only a string') unless payload.is_a?(String)
160
- raise Bobot::FieldFormat.new('payload has to start with a "+" and be a valid phone number') unless REGEX_PHONE_NUMBER =~ payload
156
+ raise Bobot::FieldFormat.new('title is required') unless title.present?
157
+ raise Bobot::FieldFormat.new('title size is limited to 20', "#{title} (#{title.size} chars)") if title.size > 20
158
+ raise Bobot::FieldFormat.new('payload is required') unless payload.present?
159
+ raise Bobot::FieldFormat.new('payload has to be only a string', payload.class.to_s) unless payload.is_a?(String)
160
+ raise Bobot::FieldFormat.new('payload has to start with a "+" and be a valid phone number', payload) unless REGEX_PHONE_NUMBER =~ payload
161
161
  {
162
162
  type: 'phone_number',
163
163
  title: title,
@@ -10,7 +10,7 @@ module Bobot
10
10
  elsif rhs.is_a?(Array)
11
11
  @domains = rhs
12
12
  else
13
- raise Bobot::InvalidParameter.new(:domains, "should be a string or an array")
13
+ raise Bobot::FieldFormat.new("domains should be a string or an array")
14
14
  end
15
15
  end
16
16
  end
@@ -16,6 +16,15 @@ module Bobot
16
16
  @messaging['recipient']
17
17
  end
18
18
 
19
+ # If the user responds to your message, the appropriate event
20
+ # (messages, messaging_postbacks, etc.) will be sent to your webhook,
21
+ # with a prior_message object appended. The prior_message object
22
+ # includes the source of the message the user is responding to, as well
23
+ # as the user_ref used for the original message send.
24
+ def prior_message
25
+ @messaging['prior_message']
26
+ end
27
+
19
28
  def sent_at
20
29
  Time.zone.at(@messaging['timestamp'] / 1000)
21
30
  end
@@ -18,7 +18,7 @@ module Bobot
18
18
  end
19
19
 
20
20
  def echo?
21
- @messaging['message']['is_echo']
21
+ @messaging['message']['is_echo'].present?
22
22
  end
23
23
 
24
24
  def attachments
@@ -2,15 +2,9 @@ module Bobot
2
2
  # Base Facebook Messenger exception.
3
3
  class Error < ::StandardError; end
4
4
 
5
- class InvalidParameter < ::ArgumentError
6
- def initialize(name, description = "")
7
- super("invalid value of parameter #{name}#{description.present? ? ": '#{description}'" : ''}")
8
- end
9
- end
10
-
11
5
  class FieldFormat < ::ArgumentError
12
- def initialize(description)
13
- super("invalid field value with API limits: #{description}")
6
+ def initialize(description, value = nil)
7
+ super("#{description}#{value.present? ? " : #{value}'" : ''}")
14
8
  end
15
9
  end
16
10
 
@@ -35,7 +35,7 @@ module Bobot
35
35
  #####################################
36
36
 
37
37
  def deliver(payload_template:, to:)
38
- raise Bobot::FieldFormat.new('payload_template is required.') unless payload_template.present?
38
+ raise Bobot::FieldFormat.new('payload_template is required') unless payload_template.present?
39
39
  Bobot::Commander.deliver(
40
40
  body: {
41
41
  recipient: { id: to },
@@ -63,8 +63,8 @@ module Bobot
63
63
  end
64
64
 
65
65
  def send_text(text:, to: nil)
66
- raise Bobot::FieldFormat.new('text is required.') unless text.present?
67
- raise Bobot::FieldFormat.new('text length is limited to 640.') if text.size > 640
66
+ raise Bobot::FieldFormat.new('text is required') unless text.present?
67
+ raise Bobot::FieldFormat.new('text size is limited to 640.', "#{text} (#{text.size} chars)") if text.size > 640
68
68
  send(
69
69
  payload_message: {
70
70
  text: text,
@@ -74,9 +74,9 @@ module Bobot
74
74
  end
75
75
 
76
76
  def send_attachment(url:, type:, to: nil)
77
- raise Bobot::FieldFormat.new('url is required.') unless url.present?
78
- raise Bobot::FieldFormat.new('type is required.') unless type.present?
79
- raise Bobot::FieldFormat.new('type is invalid, only "image, audio, video, file" are permitted.') unless %w[image audio video file].include?(type)
77
+ raise Bobot::FieldFormat.new('url is required') unless url.present?
78
+ raise Bobot::FieldFormat.new('type is required') unless type.present?
79
+ raise Bobot::FieldFormat.new('type is invalid, only "image, audio, video, file" are permitted.', type) unless %w[image audio video file].include?(type)
80
80
  send(
81
81
  payload_message: {
82
82
  attachment: {
@@ -107,10 +107,10 @@ module Bobot
107
107
  end
108
108
 
109
109
  def send_quick_replies(text:, quick_replies:, to: nil)
110
- raise Bobot::FieldFormat.new('text is required.') unless text.present?
111
- raise Bobot::FieldFormat.new('text length is limited to 640.') if text.size > 640
112
- raise Bobot::FieldFormat.new('quick_replies are required.') unless quick_replies.present?
113
- raise Bobot::FieldFormat.new('quick_replies are limited to 11.') if quick_replies.size > 11
110
+ raise Bobot::FieldFormat.new('text is required') unless text.present?
111
+ raise Bobot::FieldFormat.new('text size is limited to 640.', "#{text} (#{text.size} chars)") if text.size > 640
112
+ raise Bobot::FieldFormat.new('quick_replies are required') unless quick_replies.present?
113
+ raise Bobot::FieldFormat.new('quick_replies are limited to 11.', "#{quick_replies.size} quick replies") if quick_replies.size > 11
114
114
  send(
115
115
  payload_message: {
116
116
  text: text,
@@ -121,10 +121,10 @@ module Bobot
121
121
  end
122
122
 
123
123
  def send_buttons(text:, buttons:, to: nil)
124
- raise Bobot::FieldFormat.new('text is required.') unless text.present?
125
- raise Bobot::FieldFormat.new('text length is limited to 640.') if text.size > 640
126
- raise Bobot::FieldFormat.new('buttons are required.') unless buttons.present?
127
- raise Bobot::FieldFormat.new('buttons are limited to 3.') if buttons.size > 3
124
+ raise Bobot::FieldFormat.new('text is required') unless text.present?
125
+ raise Bobot::FieldFormat.new('text size is limited to 640.', "#{text} (#{text.size} chars)") if text.size > 640
126
+ raise Bobot::FieldFormat.new('buttons are required') unless buttons.present?
127
+ raise Bobot::FieldFormat.new('buttons are limited to 3', "#{buttons.size} buttons") if buttons.size > 3
128
128
  send(
129
129
  payload_message: {
130
130
  attachment: {
@@ -141,10 +141,10 @@ module Bobot
141
141
  end
142
142
 
143
143
  def send_generic(elements:, image_aspect_ratio: 'square', to: nil)
144
- raise Bobot::FieldFormat.new('elements are required.') if elements.nil?
145
- raise Bobot::FieldFormat.new('elements are limited to 10.') if elements.size > 10
146
- raise Bobot::FieldFormat.new('image_aspect_ratio is required.') if image_aspect_ratio.nil?
147
- raise Bobot::FieldFormat.new('image_aspect_ratio is invalid, only "square, horizontal" are permitted.') unless %w[square horizontal].include?(image_aspect_ratio)
144
+ raise Bobot::FieldFormat.new('elements are required') if elements.nil?
145
+ raise Bobot::FieldFormat.new('elements are limited to 10.', "#{elements.size} elements") if elements.size > 10
146
+ raise Bobot::FieldFormat.new('image_aspect_ratio is required') if image_aspect_ratio.nil?
147
+ raise Bobot::FieldFormat.new('image_aspect_ratio is invalid, only "square, horizontal" are permitted.', image_aspect_ratio) unless %w[square horizontal].include?(image_aspect_ratio)
148
148
  send(
149
149
  payload_message: {
150
150
  attachment: {
@@ -176,8 +176,8 @@ module Bobot
176
176
 
177
177
  ## == Subcribe your bot to your page ==
178
178
  def subscribe_to_facebook_page!
179
- raise Bobot::InvalidParameter.new(:page_id) unless page_id.present?
180
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
179
+ raise Bobot::FieldFormat.new("page_id is required") unless page_id.present?
180
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
181
181
  Bobot::Subscription.set(
182
182
  query: {
183
183
  page_id: page_id,
@@ -188,8 +188,8 @@ module Bobot
188
188
 
189
189
  ## == Unsubcribe your bot from your page ==
190
190
  def unsubscribe_to_facebook_page!
191
- raise Bobot::InvalidParameter.new(:page_id) unless page_id.present?
192
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
191
+ raise Bobot::FieldFormat.new("page_id is required") unless page_id.present?
192
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
193
193
  Bobot::Subscription.unset(
194
194
  query: {
195
195
  page_id: page_id,
@@ -200,7 +200,7 @@ module Bobot
200
200
 
201
201
  ## == Set bot description (only displayed on first time). ==
202
202
  def set_greeting_text!
203
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
203
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
204
204
  greeting_texts = []
205
205
  if language.nil?
206
206
  # Default text
@@ -222,7 +222,7 @@ module Bobot
222
222
  if greeting_texts.present?
223
223
  greeting_texts.each do |greeting_text|
224
224
  if greeting_text[:text].present? && greeting_text[:text].size > 160
225
- raise Bobot::FieldFormat.new('greeting text for locale #{greeting_text[:locale]} is limited to 160.', greeting_text[:text])
225
+ raise Bobot::FieldFormat.new('greeting text for locale #{greeting_text[:locale]} is limited to 160.', "#{greeting_text[:text]} (#{greeting_text[:text].size} chars)")
226
226
  end
227
227
  end
228
228
  Bobot::Profile.set(
@@ -233,7 +233,7 @@ module Bobot
233
233
  end
234
234
 
235
235
  def unset_greeting_text!
236
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
236
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
237
237
  Bobot::Profile.unset(
238
238
  body: { fields: %w[greeting] },
239
239
  query: { access_token: page_access_token },
@@ -244,8 +244,8 @@ module Bobot
244
244
  ## == Some features like Messenger Extensions and Checkbox Plugin require ==
245
245
  ## == a page to specify a domain whitelist. ==
246
246
  def set_whitelist_domains!
247
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
248
- raise Bobot::InvalidParameter.new(:domains) unless Bobot.config.domains.present?
247
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
248
+ raise Bobot::FieldFormat.new("Bobot.config.domains is required") unless Bobot.config.domains.present?
249
249
  Bobot::Profile.set(
250
250
  body: { whitelisted_domains: Bobot.config.domains },
251
251
  query: { access_token: page_access_token },
@@ -253,7 +253,7 @@ module Bobot
253
253
  end
254
254
 
255
255
  def unset_whitelist_domains!
256
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
256
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
257
257
  Bobot::Profile.unset(
258
258
  body: { fields: ["whitelisted_domains"] },
259
259
  query: { access_token: page_access_token },
@@ -264,8 +264,8 @@ module Bobot
264
264
  ## == the Get Started button. Before doing it you should check to select the ==
265
265
  ## == messaging_postbacks field when setting up your webhook. ==
266
266
  def set_get_started_button!
267
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
268
- raise Bobot::InvalidParameter.new(:get_started_payload) unless get_started_payload.present?
267
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
268
+ raise Bobot::FieldFormat.new("get_started_payload is required") unless get_started_payload.present?
269
269
  Bobot::Profile.set(
270
270
  body: { get_started: { payload: get_started_payload } },
271
271
  query: { access_token: page_access_token },
@@ -273,7 +273,7 @@ module Bobot
273
273
  end
274
274
 
275
275
  def unset_get_started_button!
276
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
276
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
277
277
  Bobot::Profile.unset(
278
278
  body: { fields: %w[persistent_menu get_started] },
279
279
  query: { access_token: page_access_token },
@@ -284,7 +284,7 @@ module Bobot
284
284
  ## == If you want to have a persistent menu, you have to set get_started ==
285
285
  ## == button before. ==
286
286
  def set_persistent_menu!
287
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
287
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
288
288
  persistent_menus = []
289
289
  # Default text
290
290
  if language.nil?
@@ -322,7 +322,7 @@ module Bobot
322
322
  if persistent_menus.present?
323
323
  persistent_menus.each do |persistent_menu|
324
324
  if persistent_menu[:title].present? && persistent_menu[:title].size > 30
325
- raise Bobot::FieldFormat.new('persistent menu text for locale #{persistent_menu[:locale]} is limited to 30.', persistent_menu[:title])
325
+ raise Bobot::FieldFormat.new('persistent menu text for locale #{persistent_menu[:locale]} is limited to 30.', "#{persistent_menu[:title]} (#{persistent_menu[:title].size} chars)")
326
326
  end
327
327
  end
328
328
  Bobot::Profile.set(
@@ -333,7 +333,7 @@ module Bobot
333
333
  end
334
334
 
335
335
  def unset_persistent_menu!
336
- raise Bobot::InvalidParameter.new(:access_token) unless page_access_token.present?
336
+ raise Bobot::FieldFormat.new("access_token is required") unless page_access_token.present?
337
337
  Bobot::Profile.unset(
338
338
  body: { fields: ["persistent_menu"] },
339
339
  query: { access_token: page_access_token },
@@ -1,8 +1,8 @@
1
1
  module Bobot
2
2
  class Version
3
3
  MAJOR = 3
4
- MINOR = 6
5
- PATCH = 3
4
+ MINOR = 7
5
+ PATCH = 2
6
6
  PRE = nil
7
7
 
8
8
  class << self
@@ -30,6 +30,10 @@ RSpec.describe Bobot::Dummy do
30
30
  'url' => 'https://www.example.com/1.jpg'
31
31
  }
32
32
  }]
33
+ },
34
+ 'prior_message' => {
35
+ 'source' => 'checkbox_plugin',
36
+ 'identifier' => '903dac41-0976-467f-805e-ed58dc23a783'
33
37
  }
34
38
  }
35
39
  end
@@ -57,6 +61,12 @@ RSpec.describe Bobot::Dummy do
57
61
  end
58
62
  end
59
63
 
64
+ describe '.prior_message' do
65
+ it 'returns the message' do
66
+ expect(subject.prior_message).to eq(payload['prior_message'])
67
+ end
68
+ end
69
+
60
70
  describe '.sent_at' do
61
71
  it 'returns when the message was sent' do
62
72
  expect(subject.sent_at).to eq(Time.zone.at(payload['timestamp'] / 1000))
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bobot
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.3
4
+ version: 3.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Navid EMAD
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-15 00:00:00.000000000 Z
11
+ date: 2018-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n