postmark 1.20.0 → 1.21.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 587a749e850a9a9fc2e70087fd13fa79d926844246f8030942d116ac6fbbcaec
4
- data.tar.gz: 20fc00b9b8b59d45afe4722abd859cc4248f63ce487d190167aec0b957bd3c76
3
+ metadata.gz: 4ecfd4ac720289669cf67d8f13816bec20b985796dc9413e9e34271bbd3ece81
4
+ data.tar.gz: f42b2d7331f764f3552cd002e0876ea8da8aad4ebc6f56d14504d5c80d96d8c2
5
5
  SHA512:
6
- metadata.gz: d4049417165d062f7d923a0b84e1c4b31791930e24c6c58d1171bbc0cb189cdbbe53736ee720b994c2a467d94afba7225512c39975f6fcd7d56d63b7c7cc567e
7
- data.tar.gz: 7fce7304875e3a7877a73e697450fb82bfbdb2404a44337dfe6591e099476e7d57ead59ce9e30182f01825b4cfc7ca61ff49a1871cf9368b13bf74fe39753e05
6
+ metadata.gz: 2f7953e239dcb2b78970694e9c0423d1f2ca3439cafb418e83f47ba24dfe535fece7f7b853986b8f7bb460826f9af3517750cb7e919f71deec4b463734aaed42
7
+ data.tar.gz: 18d9b5e906b072d8c7e9b832190637290b134ac06e1a66ec299294c07a0cbf1017f932bb65eb4de38448b33a9c245eced584e9eb0665f824be60c72f06ed1e75
data/.gitignore CHANGED
@@ -7,3 +7,4 @@ pkg/*
7
7
  .idea
8
8
  bin/*
9
9
  *.swp
10
+ .DS_Store
@@ -1,5 +1,9 @@
1
1
  = Changelog
2
2
 
3
+ == 1.21.0
4
+
5
+ * Added support for message streams and suppressions
6
+
3
7
  == 1.20.0
4
8
 
5
9
  * Removed deprecated trigger endpoints
data/README.md CHANGED
@@ -62,4 +62,4 @@ Refer to the [LICENSE](https://github.com/wildbit/postmark-gem/blob/master/LICEN
62
62
 
63
63
  ## Copyright
64
64
 
65
- Copyright © 2018 Wildbit LLC.
65
+ Copyright © 2020 Wildbit LLC.
@@ -328,6 +328,39 @@ module Postmark
328
328
  format_response http_client.delete("webhooks/#{id}")
329
329
  end
330
330
 
331
+ def get_message_streams(options = {})
332
+ load_batch('message-streams', 'MessageStreams', options)
333
+ end
334
+
335
+ def get_message_stream(id)
336
+ format_response(http_client.get("message-streams/#{id}"))
337
+ end
338
+
339
+ def create_message_stream(attributes = {})
340
+ data = serialize(HashHelper.to_postmark(attributes))
341
+ format_response(http_client.post('message-streams', data))
342
+ end
343
+
344
+ def update_message_stream(id, attributes)
345
+ data = serialize(HashHelper.to_postmark(attributes))
346
+ format_response(http_client.patch("message-streams/#{id}", data))
347
+ end
348
+
349
+ def dump_suppressions(stream_id, options = {})
350
+ _, batch = load_batch("message-streams/#{stream_id}/suppressions/dump", 'Suppressions', options)
351
+ batch
352
+ end
353
+
354
+ def create_suppressions(stream_id, email_addresses)
355
+ data = serialize(:Suppressions => Array(email_addresses).map { |e| HashHelper.to_postmark(:email_address => e) })
356
+ format_response(http_client.post("message-streams/#{stream_id}/suppressions", data))
357
+ end
358
+
359
+ def delete_suppressions(stream_id, email_addresses)
360
+ data = serialize(:Suppressions => Array(email_addresses).map { |e| HashHelper.to_postmark(:email_address => e) })
361
+ format_response(http_client.post("message-streams/#{stream_id}/suppressions/delete", data))
362
+ end
363
+
331
364
  protected
332
365
 
333
366
  def in_batches(messages)
@@ -34,7 +34,8 @@ module Postmark
34
34
  'TrackLinks' => (::Postmark::Inflector.to_postmark(@message.track_links) unless @message.track_links.empty?),
35
35
  'Metadata' => @message.metadata,
36
36
  'TemplateAlias' => @message.template_alias,
37
- 'TemplateModel' => @message.template_model
37
+ 'TemplateModel' => @message.template_model,
38
+ 'MessageStream' => @message.message_stream
38
39
  }
39
40
  end
40
41
 
@@ -72,6 +72,12 @@ module Mail
72
72
  @template_model = model
73
73
  end
74
74
 
75
+ attr_writer :message_stream
76
+ def message_stream(val = nil)
77
+ self.message_stream = val unless val.nil?
78
+ @message_stream
79
+ end
80
+
75
81
  def templated?
76
82
  !!template_alias
77
83
  end
@@ -1,3 +1,3 @@
1
1
  module Postmark
2
- VERSION = '1.20.0'
2
+ VERSION = '1.21.0'
3
3
  end
@@ -33,6 +33,10 @@ RSpec::Matchers.define :json_representation_of do |x|
33
33
  match { |actual| Postmark::Json.decode(actual) == x }
34
34
  end
35
35
 
36
+ RSpec::Matchers.define :match_json do |x|
37
+ match { |actual| Postmark::Json.encode(x) == actual }
38
+ end
39
+
36
40
  RSpec::Matchers.define :be_serialized_to do |json|
37
41
  match do |mail_message|
38
42
  Postmark.convert_message_to_options_hash(mail_message) == JSON.parse(json)
@@ -18,9 +18,9 @@ describe Postmark::ApiClient do
18
18
  template_model :name => "Sheldon"
19
19
  end
20
20
  end
21
+ let(:http_client) {api_client.http_client}
21
22
 
22
- let(:api_client) {Postmark::ApiClient.new(api_token)}
23
- subject {api_client}
23
+ subject(:api_client) {Postmark::ApiClient.new(api_token)}
24
24
 
25
25
  context "attr readers" do
26
26
  it { expect(subject).to respond_to(:http_client) }
@@ -62,7 +62,6 @@ describe Postmark::ApiClient do
62
62
  describe "#deliver" do
63
63
  let(:email) {Postmark::MessageHelper.to_postmark(message_hash)}
64
64
  let(:email_json) {Postmark::Json.encode(email)}
65
- let(:http_client) {subject.http_client}
66
65
  let(:response) {{"MessageID" => 42}}
67
66
 
68
67
  it 'converts message hash to Postmark format and posts it to /email' do
@@ -86,7 +85,6 @@ describe Postmark::ApiClient do
86
85
  let(:email) {Postmark::MessageHelper.to_postmark(message_hash)}
87
86
  let(:emails) {[email, email, email]}
88
87
  let(:emails_json) {Postmark::Json.encode(emails)}
89
- let(:http_client) {subject.http_client}
90
88
  let(:response) {[{'ErrorCode' => 0}, {'ErrorCode' => 0}, {'ErrorCode' => 0}]}
91
89
 
92
90
  it 'turns array of messages into a JSON document and posts it to /email/batch' do
@@ -104,7 +102,6 @@ describe Postmark::ApiClient do
104
102
  describe "#deliver_message" do
105
103
  let(:email) {message.to_postmark_hash}
106
104
  let(:email_json) {Postmark::Json.encode(email)}
107
- let(:http_client) {subject.http_client}
108
105
 
109
106
  it 'raises an error when given a templated message' do
110
107
  expect { subject.deliver_message(templated_message) }.
@@ -139,7 +136,6 @@ describe Postmark::ApiClient do
139
136
  describe "#deliver_message_with_template" do
140
137
  let(:email) {templated_message.to_postmark_hash}
141
138
  let(:email_json) {Postmark::Json.encode(email)}
142
- let(:http_client) {subject.http_client}
143
139
 
144
140
  it 'raises an error when given a non-templated message' do
145
141
  expect { subject.deliver_message_with_template(message) }.
@@ -175,7 +171,6 @@ describe Postmark::ApiClient do
175
171
  let(:email) {message.to_postmark_hash}
176
172
  let(:emails) {[email, email, email]}
177
173
  let(:emails_json) {Postmark::Json.encode(emails)}
178
- let(:http_client) {subject.http_client}
179
174
  let(:response) {[{}, {}, {}]}
180
175
 
181
176
  it 'raises an error when given a templated message' do
@@ -207,7 +202,6 @@ describe Postmark::ApiClient do
207
202
  let(:email) {templated_message.to_postmark_hash}
208
203
  let(:emails) {[email, email, email]}
209
204
  let(:emails_json) {Postmark::Json.encode(emails)}
210
- let(:http_client) {subject.http_client}
211
205
  let(:response) {[{}, {}, {}]}
212
206
  let(:messages) { Array.new(3) { templated_message } }
213
207
 
@@ -237,7 +231,6 @@ describe Postmark::ApiClient do
237
231
  end
238
232
 
239
233
  describe "#delivery_stats" do
240
- let(:http_client) {subject.http_client}
241
234
  let(:response) {{"Bounces" => [{"Foo" => "Bar"}]}}
242
235
 
243
236
  it 'requests data at /deliverystats' do
@@ -276,8 +269,6 @@ describe Postmark::ApiClient do
276
269
  end
277
270
 
278
271
  describe '#get_messages' do
279
- let(:http_client) {subject.http_client}
280
-
281
272
  context 'given outbound' do
282
273
  let(:response) {{"TotalCount" => 1, "Messages" => [{}]}}
283
274
 
@@ -325,7 +316,6 @@ describe Postmark::ApiClient do
325
316
 
326
317
  describe '#get_message' do
327
318
  let(:id) {'8ad0e8b0-xxxx-xxxx-951d-223c581bb467'}
328
- let(:http_client) {subject.http_client}
329
319
  let(:response) {{"To" => "leonard@bigbangtheory.com"}}
330
320
 
331
321
  context 'given outbound' do
@@ -349,7 +339,6 @@ describe Postmark::ApiClient do
349
339
 
350
340
  describe '#dump_message' do
351
341
  let(:id) {'8ad0e8b0-xxxx-xxxx-951d-223c581bb467'}
352
- let(:http_client) {subject.http_client}
353
342
  let(:response) {{"Body" => "From: <leonard@bigbangtheory.com> \r\n ..."}}
354
343
 
355
344
  context 'given outbound' do
@@ -387,7 +376,6 @@ describe Postmark::ApiClient do
387
376
  end
388
377
 
389
378
  describe "#get_bounces" do
390
- let(:http_client) {subject.http_client}
391
379
  let(:options) {{:foo => :bar}}
392
380
  let(:response) {{"Bounces" => []}}
393
381
 
@@ -399,7 +387,6 @@ describe Postmark::ApiClient do
399
387
  end
400
388
 
401
389
  describe "#get_bounce" do
402
- let(:http_client) {subject.http_client}
403
390
  let(:id) {42}
404
391
 
405
392
  it 'requests a single bounce by ID at /bounces/:id' do
@@ -409,7 +396,6 @@ describe Postmark::ApiClient do
409
396
  end
410
397
 
411
398
  describe "#dump_bounce" do
412
- let(:http_client) {subject.http_client}
413
399
  let(:id) {42}
414
400
 
415
401
  it 'requests a specific bounce data at /bounces/:id/dump' do
@@ -419,7 +405,6 @@ describe Postmark::ApiClient do
419
405
  end
420
406
 
421
407
  describe "#activate_bounce" do
422
- let(:http_client) {subject.http_client}
423
408
  let(:id) {42}
424
409
  let(:response) {{"Bounce" => {}}}
425
410
 
@@ -456,7 +441,6 @@ describe Postmark::ApiClient do
456
441
  end
457
442
 
458
443
  describe '#get_opens' do
459
- let(:http_client) {subject.http_client}
460
444
  let(:options) {{:offset => 5}}
461
445
  let(:response) {{'Opens' => [], 'TotalCount' => 0}}
462
446
 
@@ -468,7 +452,6 @@ describe Postmark::ApiClient do
468
452
  end
469
453
 
470
454
  describe '#get_clicks' do
471
- let(:http_client) {subject.http_client}
472
455
  let(:options) {{:offset => 5}}
473
456
  let(:response) {{'Clicks' => [], 'TotalCount' => 0}}
474
457
 
@@ -480,7 +463,6 @@ describe Postmark::ApiClient do
480
463
  end
481
464
 
482
465
  describe '#get_opens_by_message_id' do
483
- let(:http_client) {subject.http_client}
484
466
  let(:message_id) {42}
485
467
  let(:options) {{:offset => 5}}
486
468
  let(:response) {{'Opens' => [], 'TotalCount' => 0}}
@@ -493,7 +475,6 @@ describe Postmark::ApiClient do
493
475
  end
494
476
 
495
477
  describe '#get_clicks_by_message_id' do
496
- let(:http_client) {subject.http_client}
497
478
  let(:message_id) {42}
498
479
  let(:options) {{:offset => 5}}
499
480
  let(:response) {{'Clicks' => [], 'TotalCount' => 0}}
@@ -536,8 +517,6 @@ describe Postmark::ApiClient do
536
517
  end
537
518
 
538
519
  describe '#create_trigger' do
539
- let(:http_client) {subject.http_client}
540
-
541
520
  context 'inbound rules' do
542
521
  let(:options) {{:rule => 'example.com'}}
543
522
  let(:response) {{'Rule' => 'example.com'}}
@@ -556,7 +535,6 @@ describe Postmark::ApiClient do
556
535
  end
557
536
 
558
537
  describe '#get_trigger' do
559
- let(:http_client) {subject.http_client}
560
538
  let(:id) {42}
561
539
 
562
540
  it 'performs a GET request to /triggers/tags/:id' do
@@ -571,8 +549,6 @@ describe Postmark::ApiClient do
571
549
  end
572
550
 
573
551
  describe '#delete_trigger' do
574
- let(:http_client) {subject.http_client}
575
-
576
552
  context 'tags' do
577
553
  let(:id) {42}
578
554
 
@@ -603,7 +579,6 @@ describe Postmark::ApiClient do
603
579
  end
604
580
 
605
581
  describe '#get_triggers' do
606
- let(:http_client) {subject.http_client}
607
582
  let(:options) {{:offset => 5}}
608
583
 
609
584
  context 'inbound rules' do
@@ -631,7 +606,6 @@ describe Postmark::ApiClient do
631
606
  end
632
607
 
633
608
  describe "#server_info" do
634
- let(:http_client) {subject.http_client}
635
609
  let(:response) {{"Name" => "Testing",
636
610
  "Color" => "blue",
637
611
  "InboundHash" => "c2425d77f74f8643e5f6237438086c81",
@@ -644,7 +618,6 @@ describe Postmark::ApiClient do
644
618
  end
645
619
 
646
620
  describe "#update_server_info" do
647
- let(:http_client) {subject.http_client}
648
621
  let(:response) {{"Name" => "Testing",
649
622
  "Color" => "blue",
650
623
  "InboundHash" => "c2425d77f74f8643e5f6237438086c81",
@@ -658,7 +631,6 @@ describe Postmark::ApiClient do
658
631
  end
659
632
 
660
633
  describe '#get_templates' do
661
- let(:http_client) {subject.http_client}
662
634
  let(:response) do
663
635
  {
664
636
  'TotalCount' => 31,
@@ -702,7 +674,6 @@ describe Postmark::ApiClient do
702
674
  end
703
675
 
704
676
  describe '#get_template' do
705
- let(:http_client) {subject.http_client}
706
677
  let(:response) do
707
678
  {
708
679
  'Name' => 'Template Name',
@@ -727,7 +698,6 @@ describe Postmark::ApiClient do
727
698
  end
728
699
 
729
700
  describe '#create_template' do
730
- let(:http_client) {subject.http_client}
731
701
  let(:response) do
732
702
  {
733
703
  'TemplateId' => 123,
@@ -749,7 +719,6 @@ describe Postmark::ApiClient do
749
719
  end
750
720
 
751
721
  describe '#update_template' do
752
- let(:http_client) {subject.http_client}
753
722
  let(:response) do
754
723
  {
755
724
  'TemplateId' => 123,
@@ -771,7 +740,6 @@ describe Postmark::ApiClient do
771
740
  end
772
741
 
773
742
  describe '#delete_template' do
774
- let(:http_client) {subject.http_client}
775
743
  let(:response) do
776
744
  {
777
745
  'ErrorCode' => 0,
@@ -789,8 +757,6 @@ describe Postmark::ApiClient do
789
757
  end
790
758
 
791
759
  describe '#validate_template' do
792
- let(:http_client) {subject.http_client}
793
-
794
760
  context 'when template is valid' do
795
761
  let(:response) do
796
762
  {
@@ -886,7 +852,6 @@ describe Postmark::ApiClient do
886
852
 
887
853
  describe "#deliver_with_template" do
888
854
  let(:email) {Postmark::MessageHelper.to_postmark(message_hash)}
889
- let(:http_client) {subject.http_client}
890
855
  let(:response) {{"MessageID" => 42}}
891
856
 
892
857
  it 'converts message hash to Postmark format and posts it to /email/withTemplate' do
@@ -911,7 +876,6 @@ describe Postmark::ApiClient do
911
876
  describe '#deliver_in_batches_with_templates' do
912
877
  let(:max_batch_size) {50}
913
878
  let(:factor) {3.5}
914
- let(:http_client) {subject.http_client}
915
879
  let(:postmark_response) do
916
880
  {
917
881
  'ErrorCode' => 0,
@@ -971,7 +935,6 @@ describe Postmark::ApiClient do
971
935
  "BounceRate" => 10.406,
972
936
  }
973
937
  end
974
- let(:http_client) {subject.http_client}
975
938
 
976
939
  it 'converts response to ruby format' do
977
940
  expect(http_client).to receive(:get).with('stats/outbound', {:tag => 'foo'}) {response}
@@ -1005,7 +968,6 @@ describe Postmark::ApiClient do
1005
968
  "Sent" => 615
1006
969
  }
1007
970
  end
1008
- let(:http_client) {subject.http_client}
1009
971
 
1010
972
  it 'converts response to ruby format' do
1011
973
  expect(http_client).to receive(:get).with('stats/outbound/sends', {:tag => 'foo'}) {response}
@@ -1040,4 +1002,150 @@ describe Postmark::ApiClient do
1040
1002
  expect(first_day).to have_key(:sent)
1041
1003
  end
1042
1004
  end
1005
+
1006
+ describe '#create_suppressions' do
1007
+ let(:email_addresses) { nil }
1008
+ let(:message_stream_id) { 'outbound' }
1009
+
1010
+ subject { api_client.create_suppressions(message_stream_id, email_addresses) }
1011
+
1012
+ context '1 email address as string' do
1013
+ let(:email_addresses) { 'A@example.com' }
1014
+
1015
+ specify do
1016
+ expect(http_client).to receive(:post).
1017
+ with('message-streams/outbound/suppressions',
1018
+ match_json({
1019
+ :Suppressions => [
1020
+ { :EmailAddress => 'A@example.com' }
1021
+ ]}))
1022
+ subject
1023
+ end
1024
+ end
1025
+
1026
+ context '1 email address as string & non-default stream' do
1027
+ let(:email_addresses) { 'A@example.com' }
1028
+ let(:message_stream_id) { 'xxxx' }
1029
+
1030
+ specify do
1031
+ expect(http_client).to receive(:post).
1032
+ with('message-streams/xxxx/suppressions',
1033
+ match_json({
1034
+ :Suppressions => [
1035
+ { :EmailAddress => 'A@example.com' }
1036
+ ]}))
1037
+ subject
1038
+ end
1039
+ end
1040
+
1041
+ context '1 email address as array of strings' do
1042
+ let(:email_addresses) { ['A@example.com'] }
1043
+
1044
+ specify do
1045
+ expect(http_client).to receive(:post).
1046
+ with('message-streams/outbound/suppressions',
1047
+ match_json({
1048
+ :Suppressions => [
1049
+ { :EmailAddress => 'A@example.com' }
1050
+ ]}))
1051
+ subject
1052
+ end
1053
+ end
1054
+
1055
+ context 'many email addresses as array of strings' do
1056
+ let(:email_addresses) { ['A@example.com', 'B@example.com'] }
1057
+
1058
+ specify do
1059
+ expect(http_client).to receive(:post).
1060
+ with('message-streams/outbound/suppressions',
1061
+ match_json({
1062
+ :Suppressions => [
1063
+ { :EmailAddress => 'A@example.com' },
1064
+ { :EmailAddress => 'B@example.com' }
1065
+ ]}))
1066
+ subject
1067
+ end
1068
+ end
1069
+ end
1070
+
1071
+ describe '#delete_suppressions' do
1072
+ let(:email_addresses) { nil }
1073
+ let(:message_stream_id) { 'outbound' }
1074
+
1075
+ subject { api_client.delete_suppressions(message_stream_id, email_addresses) }
1076
+
1077
+ context '1 email address as string' do
1078
+ let(:email_addresses) { 'A@example.com' }
1079
+
1080
+ specify do
1081
+ expect(http_client).to receive(:post).
1082
+ with('message-streams/outbound/suppressions/delete',
1083
+ match_json({
1084
+ :Suppressions => [
1085
+ { :EmailAddress => 'A@example.com' },
1086
+ ]}))
1087
+ subject
1088
+ end
1089
+ end
1090
+
1091
+ context '1 email address as string & non-default stream' do
1092
+ let(:email_addresses) { 'A@example.com' }
1093
+ let(:message_stream_id) { 'xxxx' }
1094
+
1095
+ specify do
1096
+ expect(http_client).to receive(:post).
1097
+ with('message-streams/xxxx/suppressions/delete',
1098
+ match_json({
1099
+ :Suppressions => [
1100
+ { :EmailAddress => 'A@example.com' }
1101
+ ]}))
1102
+ subject
1103
+ end
1104
+ end
1105
+
1106
+ context '1 email address as array of strings' do
1107
+ let(:email_addresses) { ['A@example.com'] }
1108
+
1109
+ specify do
1110
+ expect(http_client).to receive(:post).
1111
+ with('message-streams/outbound/suppressions/delete',
1112
+ match_json({
1113
+ :Suppressions => [
1114
+ { :EmailAddress => 'A@example.com' }
1115
+ ]}))
1116
+ subject
1117
+ end
1118
+ end
1119
+
1120
+ context 'many email addresses as array of strings' do
1121
+ let(:email_addresses) { ['A@example.com', 'B@example.com'] }
1122
+
1123
+ specify do
1124
+ expect(http_client).to receive(:post).
1125
+ with('message-streams/outbound/suppressions/delete',
1126
+ match_json({
1127
+ :Suppressions => [
1128
+ { :EmailAddress => 'A@example.com' },
1129
+ { :EmailAddress => 'B@example.com' }
1130
+ ]}))
1131
+ subject
1132
+ end
1133
+ end
1134
+ end
1135
+
1136
+ describe '#dump_suppressions' do
1137
+ let(:message_stream_id) { 'xxxx' }
1138
+
1139
+ subject { api_client.dump_suppressions(message_stream_id, :count => 123) }
1140
+
1141
+ before do
1142
+ allow(http_client).to receive(:get).and_return({'TotalCount' => 0, 'Suppressions' => []})
1143
+ end
1144
+
1145
+ specify do
1146
+ expect(http_client).to receive(:get).
1147
+ with('message-streams/xxxx/suppressions/dump', { :count => 123, :offset => 0 })
1148
+ subject
1149
+ end
1150
+ end
1043
1151
  end
@@ -374,4 +374,16 @@ describe Postmark::MailMessageConverter do
374
374
  expect(mail_message.to_postmark_hash.keys).not_to include('Cc')
375
375
  end
376
376
  end
377
+
378
+ describe 'passing message stream' do
379
+ context 'when not set' do
380
+ specify { expect(mail_message.to_postmark_hash.keys).not_to include('MessageStream') }
381
+ end
382
+
383
+ context 'when set' do
384
+ before { mail_message.message_stream = 'weekly-newsletter' }
385
+
386
+ specify { expect(mail_message.to_postmark_hash).to include('MessageStream' => 'weekly-newsletter') }
387
+ end
388
+ end
377
389
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postmark
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.20.0
4
+ version: 1.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Petyo Ivanov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-03-12 00:00:00.000000000 Z
13
+ date: 2020-04-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json