flapjack-diner 2.0.0.pre.alpha.2 → 2.0.0.pre.alpha.3

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.
@@ -8,62 +8,66 @@ require 'flapjack-diner/argument_validator'
8
8
  module Flapjack
9
9
  module Diner
10
10
  module Resources
11
- module Blackholes
11
+ module Acceptors
12
12
 
13
- def create_blackholes(*args)
13
+ def create_acceptors(*args)
14
14
  data = unwrap_data(*args)
15
15
  validate_params(data) do
16
16
  validate :query => :id, :as => :uuid
17
- # TODO proper validation of time_restrictions field
17
+ validate :query => :name, :as => :string
18
+ validate :query => :all, :as => :boolean
18
19
  validate :query => :conditions_list, :as => :string
20
+ # TODO proper validation of time_restrictions field
19
21
  validate :query => :contact, :as => [:singular_link_uuid, :required]
20
22
  validate :query => :media, :as => :multiple_link_uuid
21
23
  validate :query => :tags, :as => :multiple_link
22
24
  end
23
- _blackholes_validate_association(data)
24
- perform_post(:blackholes, '/blackholes', data)
25
+ _acceptors_validate_association(data)
26
+ perform_post(:acceptors, '/acceptors', data)
25
27
  end
26
28
 
27
- def blackholes(*args)
29
+ def acceptors(*args)
28
30
  ids, data = unwrap_uuids(*args), unwrap_data(*args)
29
31
  validate_params(data) do
30
32
  validate :query => [:fields, :sort, :include], :as => :string_or_array_of_strings
31
33
  validate :query => :filter, :as => :hash
32
34
  validate :query => [:page, :per_page], :as => :positive_integer
33
35
  end
34
- perform_get('/blackholes', ids, data)
36
+ perform_get('/acceptors', ids, data)
35
37
  end
36
38
 
37
- def update_blackholes(*args)
39
+ def update_acceptors(*args)
38
40
  data = unwrap_data(*args)
39
41
  validate_params(data) do
40
42
  validate :query => :id, :as => [:uuid, :required]
41
- # TODO proper validation of time_restrictions field
43
+ validate :query => :name, :as => :string
44
+ validate :query => :all, :as => :boolean
42
45
  validate :query => :conditions_list, :as => :string
46
+ # TODO proper validation of time_restrictions field
43
47
  validate :query => :media, :as => :multiple_link_uuid
44
48
  validate :query => :tags, :as => :multiple_link
45
49
  end
46
- perform_patch(:blackholes, "/blackholes", data)
50
+ perform_patch(:acceptors, "/acceptors", data)
47
51
  end
48
52
 
49
- def delete_blackholes(*ids)
50
- raise "'delete_blackholes' requires at least one blackhole id parameter" if ids.nil? || ids.empty?
51
- perform_delete(:blackholes, '/blackholes', *ids)
53
+ def delete_acceptors(*ids)
54
+ raise "'delete_acceptors' requires at least one acceptor id parameter" if ids.nil? || ids.empty?
55
+ perform_delete(:acceptors, '/acceptors', *ids)
52
56
  end
53
57
 
54
58
  private
55
59
 
56
- def _blackholes_validate_association(data)
60
+ def _acceptors_validate_association(data)
57
61
  case data
58
62
  when Array
59
63
  data.each do |d|
60
64
  unless d.has_key?(:contact)
61
- raise ArgumentError.new("Contact association must be provided for all blackholes")
65
+ raise ArgumentError.new("Contact association must be provided for all acceptors")
62
66
  end
63
67
  end
64
68
  when Hash
65
69
  unless data.has_key?(:contact)
66
- raise ArgumentError.new("Contact association must be provided for blackhole")
70
+ raise ArgumentError.new("Contact association must be provided for acceptor")
67
71
  end
68
72
  end
69
73
  end
@@ -19,7 +19,7 @@ module Flapjack
19
19
  validate :query => [:interval, :rollup_threshold,
20
20
  :pagerduty_ack_duration], :as => :positive_integer
21
21
  validate :query => :contact, :as => [:singular_link_uuid, :required]
22
- validate :query => :rules, :as => :multiple_link_uuid
22
+ validate :query => [:acceptors, :rejectors], :as => :multiple_link_uuid
23
23
  end
24
24
  perform_post(:media, "/media", data)
25
25
  end
@@ -42,7 +42,7 @@ module Flapjack
42
42
  :pagerduty_token], :as => :non_empty_string
43
43
  validate :query => [:interval, :rollup_threshold,
44
44
  :pagerduty_ack_duration], :as => :positive_integer
45
- validate :query => :rules, :as => :multiple_link_uuid
45
+ validate :query => [:acceptors, :rejectors], :as => :multiple_link_uuid
46
46
  end
47
47
  perform_patch(:media, "/media", data)
48
48
  end
@@ -8,62 +8,66 @@ require 'flapjack-diner/argument_validator'
8
8
  module Flapjack
9
9
  module Diner
10
10
  module Resources
11
- module Rules
11
+ module Rejectors
12
12
 
13
- def create_rules(*args)
13
+ def create_rejectors(*args)
14
14
  data = unwrap_data(*args)
15
15
  validate_params(data) do
16
16
  validate :query => :id, :as => :uuid
17
- # TODO proper validation of time_restrictions field
17
+ validate :query => :name, :as => :string
18
+ validate :query => :all, :as => :boolean
18
19
  validate :query => :conditions_list, :as => :string
20
+ # TODO proper validation of time_restrictions field
19
21
  validate :query => :contact, :as => [:singular_link_uuid, :required]
20
22
  validate :query => :media, :as => :multiple_link_uuid
21
23
  validate :query => :tags, :as => :multiple_link
22
24
  end
23
- _rules_validate_association(data)
24
- perform_post(:rules, '/rules', data)
25
+ _rejectors_validate_association(data)
26
+ perform_post(:rejectors, '/rejectors', data)
25
27
  end
26
28
 
27
- def rules(*args)
29
+ def rejectors(*args)
28
30
  ids, data = unwrap_uuids(*args), unwrap_data(*args)
29
31
  validate_params(data) do
30
32
  validate :query => [:fields, :sort, :include], :as => :string_or_array_of_strings
31
33
  validate :query => :filter, :as => :hash
32
34
  validate :query => [:page, :per_page], :as => :positive_integer
33
35
  end
34
- perform_get('/rules', ids, data)
36
+ perform_get('/rejectors', ids, data)
35
37
  end
36
38
 
37
- def update_rules(*args)
39
+ def update_rejectors(*args)
38
40
  data = unwrap_data(*args)
39
41
  validate_params(data) do
40
42
  validate :query => :id, :as => [:uuid, :required]
41
- # TODO proper validation of time_restrictions field
43
+ validate :query => :name, :as => :string
44
+ validate :query => :all, :as => :boolean
42
45
  validate :query => :conditions_list, :as => :string
46
+ # TODO proper validation of time_restrictions field
43
47
  validate :query => :media, :as => :multiple_link_uuid
44
48
  validate :query => :tags, :as => :multiple_link
45
49
  end
46
- perform_patch(:rules, "/rules", data)
50
+ perform_patch(:rejectors, "/rejectors", data)
47
51
  end
48
52
 
49
- def delete_rules(*ids)
50
- raise "'delete_rules' requires at least one rule id parameter" if ids.nil? || ids.empty?
51
- perform_delete(:rules, '/rules', *ids)
53
+ def delete_rejectors(*ids)
54
+ raise "'delete_rejectors' requires at least one rejector id parameter" if ids.nil? || ids.empty?
55
+ perform_delete(:rejectors, '/rejectors', *ids)
52
56
  end
53
57
 
54
58
  private
55
59
 
56
- def _rules_validate_association(data)
60
+ def _rejectors_validate_association(data)
57
61
  case data
58
62
  when Array
59
63
  data.each do |d|
60
64
  unless d.has_key?(:contact)
61
- raise ArgumentError.new("Contact association must be provided for all rules")
65
+ raise ArgumentError.new("Contact association must be provided for all rejectors")
62
66
  end
63
67
  end
64
68
  when Hash
65
69
  unless data.has_key?(:contact)
66
- raise ArgumentError.new("Contact association must be provided for rule")
70
+ raise ArgumentError.new("Contact association must be provided for rejector")
67
71
  end
68
72
  end
69
73
  end
@@ -11,12 +11,12 @@ module Flapjack
11
11
  module Relationships
12
12
 
13
13
  TYPES = {
14
+ :acceptors => 'acceptor',
14
15
  :acknowledgements => 'acknowledgement',
15
- :blackholes => 'blackhole',
16
16
  :checks => 'check',
17
17
  :contacts => 'contact',
18
18
  :media => 'medium',
19
- :rules => 'rule',
19
+ :rejectors => 'rejector',
20
20
  :scheduled_maintenances => 'scheduled_maintenance',
21
21
  :states => 'state',
22
22
  :tags => 'tag',
@@ -28,17 +28,7 @@ module Flapjack
28
28
 
29
29
  # extracted from flapjack data models' "jsonapi_associations" class method
30
30
  ASSOCIATIONS = {
31
- :acknowledgements => {
32
- :check => {
33
- :post => true,
34
- :number => :singular, :link => false, :includable => false
35
- },
36
- :tag => {
37
- :post => true,
38
- :number => :singular, :link => false, :includable => false
39
- }
40
- },
41
- :blackholes => {
31
+ :acceptors => {
42
32
  :contact => {
43
33
  :post => true, :get => true,
44
34
  :number => :singular, :link => true, :includable => true
@@ -52,6 +42,16 @@ module Flapjack
52
42
  :number => :multiple, :link => true, :includable => true
53
43
  }
54
44
  },
45
+ :acknowledgements => {
46
+ :check => {
47
+ :post => true,
48
+ :number => :singular, :link => false, :includable => false
49
+ },
50
+ :tag => {
51
+ :post => true,
52
+ :number => :singular, :link => false, :includable => false
53
+ }
54
+ },
55
55
  :checks => {
56
56
  :alerting_media => {
57
57
  :get => true,
@@ -95,7 +95,7 @@ module Flapjack
95
95
  }
96
96
  },
97
97
  :contacts => {
98
- :blackholes => {
98
+ :acceptors => {
99
99
  :get => true,
100
100
  :number => :multiple, :link => true, :includable => true
101
101
  },
@@ -107,30 +107,30 @@ module Flapjack
107
107
  :get => true,
108
108
  :number => :multiple, :link => true, :includable => true
109
109
  },
110
- :rules => {
110
+ :rejectors => {
111
111
  :get => :true,
112
112
  :number => :multiple, :link => true, :includable => true
113
113
  }
114
114
  },
115
115
  :media => {
116
- :alerting_checks => {
117
- :get => true,
116
+ :acceptors => {
117
+ :post => true, :get => true, :patch => true, :delete => true,
118
118
  :number => :multiple, :link => true, :includable => true
119
119
  },
120
- :blackholes => {
121
- :post => true, :get => true, :patch => true, :delete => true,
120
+ :alerting_checks => {
121
+ :get => true,
122
122
  :number => :multiple, :link => true, :includable => true
123
123
  },
124
124
  :contact => {
125
125
  :post => true, :get => true,
126
126
  :number => :singular, :link => true, :includable => true
127
127
  },
128
- :rules => {
128
+ :rejectors => {
129
129
  :post => true, :get => true, :patch => true, :delete => true,
130
130
  :number => :multiple, :link => true, :includable => true
131
131
  }
132
132
  },
133
- :rules => {
133
+ :rejectors => {
134
134
  :contact => {
135
135
  :post => true, :get => true,
136
136
  :number => :singular, :link => true, :includable => true
@@ -161,7 +161,7 @@ module Flapjack
161
161
  }
162
162
  },
163
163
  :tags => {
164
- :blackholes => {
164
+ :acceptors => {
165
165
  :post => true, :get => true, :patch => true, :delete => true,
166
166
  :number => :multiple, :link => true, :includable => true
167
167
  },
@@ -169,9 +169,21 @@ module Flapjack
169
169
  :post => true, :get => true, :patch => true, :delete => true,
170
170
  :number => :multiple, :link => true, :includable => true
171
171
  },
172
- :rules => {
172
+ :rejectors => {
173
173
  :post => true, :get => true, :patch => true, :delete => true,
174
174
  :number => :multiple, :link => true, :includable => true
175
+ },
176
+ :scheduled_maintenances => {
177
+ :get => true,
178
+ :number => :multiple, :link => true, :includable => false
179
+ },
180
+ :states => {
181
+ :get => true,
182
+ :number => :multiple, :link => true, :includable => false
183
+ },
184
+ :unscheduled_maintenances => {
185
+ :get => true,
186
+ :number => :multiple, :link => true, :includable => false
175
187
  }
176
188
  },
177
189
  :test_notifications => {
@@ -13,7 +13,7 @@ module Flapjack
13
13
  data = unwrap_data(*args)
14
14
  validate_params(data) do
15
15
  validate :query => :name, :as => [:required, :non_empty_string]
16
- validate :query => [:checks, :rules], :as => :multiple_link_uuid
16
+ validate :query => [:checks, :acceptors, :rejectors], :as => :multiple_link_uuid
17
17
  end
18
18
  perform_post(:tags, '/tags', data)
19
19
  end
@@ -31,7 +31,7 @@ module Flapjack
31
31
  def update_tags(*args)
32
32
  data = unwrap_data(*args)
33
33
  validate_params(data) do
34
- validate :query => [:checks, :rules], :as => :multiple_link_uuid
34
+ validate :query => [:checks, :acceptors, :rejectors], :as => :multiple_link_uuid
35
35
  end
36
36
  perform_patch(:tags, "/tags", data)
37
37
  end
@@ -1,5 +1,5 @@
1
1
  module Flapjack
2
2
  module Diner
3
- VERSION = '2.0.0-alpha.2'
3
+ VERSION = '2.0.0-alpha.3'
4
4
  end
5
5
  end
@@ -0,0 +1,278 @@
1
+ require 'spec_helper'
2
+ require 'flapjack-diner'
3
+
4
+ describe Flapjack::Diner::Resources::Acceptors, :pact => true do
5
+
6
+ before(:each) do
7
+ Flapjack::Diner.base_uri('localhost:19081')
8
+ Flapjack::Diner.logger = nil
9
+ end
10
+
11
+ context 'create' do
12
+
13
+ it "submits a POST request for an acceptor" do
14
+ req_data = acceptor_json(acceptor_data).merge(
15
+ :relationships => {
16
+ :contact => {
17
+ :data => {
18
+ :type => 'contact',
19
+ :id => contact_data[:id]
20
+ }
21
+ }
22
+ }
23
+ )
24
+ resp_data = acceptor_json(acceptor_data).merge(:relationships => acceptor_rel(acceptor_data))
25
+
26
+ flapjack.given("a contact exists").
27
+ upon_receiving("a POST request with one acceptor").
28
+ with(:method => :post, :path => '/acceptors',
29
+ :headers => {'Content-Type' => 'application/vnd.api+json'},
30
+ :body => {:data => req_data}).
31
+ will_respond_with(
32
+ :status => 201,
33
+ :headers => {'Content-Type' => 'application/vnd.api+json; supported-ext=bulk; charset=utf-8'},
34
+ :body => {:data => resp_data}
35
+ )
36
+
37
+ result = Flapjack::Diner.create_acceptors(acceptor_data.merge(:contact => contact_data[:id]))
38
+ expect(result).not_to be_nil
39
+ expect(result).to eq(resultify(resp_data))
40
+ end
41
+
42
+ it "submits a POST request for several acceptors" do
43
+ req_data = [acceptor_json(acceptor_data).merge(
44
+ :relationships => {
45
+ :contact => {
46
+ :data => {
47
+ :type => 'contact',
48
+ :id => contact_data[:id]
49
+ }
50
+ }
51
+ }
52
+ ), acceptor_json(acceptor_2_data).merge(
53
+ :relationships => {
54
+ :contact => {
55
+ :data => {
56
+ :type => 'contact',
57
+ :id => contact_data[:id]
58
+ }
59
+ }
60
+ }
61
+ )]
62
+ resp_data = [
63
+ acceptor_json(acceptor_data).merge(:relationships => acceptor_rel(acceptor_data)),
64
+ acceptor_json(acceptor_2_data).merge(:relationships => acceptor_rel(acceptor_2_data))
65
+ ]
66
+
67
+ flapjack.given("a contact exists").
68
+ upon_receiving("a POST request with two acceptors").
69
+ with(:method => :post, :path => '/acceptors',
70
+ :headers => {'Content-Type' => 'application/vnd.api+json; ext=bulk'},
71
+ :body => {:data => req_data}).
72
+ will_respond_with(
73
+ :status => 201,
74
+ :headers => {'Content-Type' => 'application/vnd.api+json; supported-ext=bulk; charset=utf-8'},
75
+ :body => {:data => resp_data}
76
+ )
77
+
78
+ result = Flapjack::Diner.create_acceptors(acceptor_data.merge(:contact => contact_data[:id]),
79
+ acceptor_2_data.merge(:contact => contact_data[:id]))
80
+ expect(result).not_to be_nil
81
+ expect(result).to eq(resultify(resp_data))
82
+ end
83
+
84
+ # TODO error due to invalid data
85
+
86
+ end
87
+
88
+ context 'read' do
89
+
90
+ it "submits a GET request for all acceptors" do
91
+ resp_data = [acceptor_json(acceptor_data).merge(:relationships => acceptor_rel(acceptor_data))]
92
+
93
+ flapjack.given("an acceptor exists").
94
+ upon_receiving("a GET request for all acceptors").
95
+ with(:method => :get, :path => '/acceptors').
96
+ will_respond_with(
97
+ :status => 200,
98
+ :headers => {'Content-Type' => 'application/vnd.api+json; supported-ext=bulk; charset=utf-8'},
99
+ :body => {:data => resp_data} )
100
+
101
+ result = Flapjack::Diner.acceptors
102
+ expect(result).not_to be_nil
103
+ expect(result).to eq(resultify(resp_data))
104
+ end
105
+
106
+ it "submits a GET request for one acceptor" do
107
+ resp_data = acceptor_json(acceptor_data).merge(:relationships => acceptor_rel(acceptor_data))
108
+
109
+ flapjack.given("an acceptor exists").
110
+ upon_receiving("a GET request for a single acceptor").
111
+ with(:method => :get, :path => "/acceptors/#{acceptor_data[:id]}").
112
+ will_respond_with(
113
+ :status => 200,
114
+ :headers => {'Content-Type' => 'application/vnd.api+json; supported-ext=bulk; charset=utf-8'},
115
+ :body => {:data => resp_data}
116
+ )
117
+
118
+ result = Flapjack::Diner.acceptors(acceptor_data[:id])
119
+ expect(result).not_to be_nil
120
+ expect(result).to eq(resultify(resp_data))
121
+ end
122
+
123
+ it "submits a GET request for several acceptors" do
124
+ resp_data = [
125
+ acceptor_json(acceptor_data).merge(:relationships => acceptor_rel(acceptor_data)),
126
+ acceptor_json(acceptor_2_data).merge(:relationships => acceptor_rel(acceptor_2_data))
127
+ ]
128
+
129
+ acceptors_data = [acceptor_data.merge(:type => 'acceptor'), acceptor_2_data.merge(:type => 'acceptor')]
130
+
131
+ flapjack.given("two acceptors exist").
132
+ upon_receiving("a GET request for two acceptors").
133
+ with(:method => :get, :path => "/acceptors",
134
+ :query => "filter%5B%5D=id%3A#{acceptor_data[:id]}%7C#{acceptor_2_data[:id]}").
135
+ will_respond_with(
136
+ :status => 200,
137
+ :headers => {'Content-Type' => 'application/vnd.api+json; supported-ext=bulk; charset=utf-8'},
138
+ :body => {:data => resp_data} )
139
+
140
+ result = Flapjack::Diner.acceptors(acceptor_data[:id], acceptor_2_data[:id])
141
+ expect(result).not_to be_nil
142
+ expect(result).to eq(resultify(resp_data))
143
+ end
144
+
145
+ it "can't find the acceptor to read" do
146
+ flapjack.given("no data exists").
147
+ upon_receiving("a GET request for a single acceptor").
148
+ with(:method => :get, :path => "/acceptors/#{acceptor_data[:id]}").
149
+ will_respond_with(
150
+ :status => 404,
151
+ :headers => {'Content-Type' => 'application/vnd.api+json; supported-ext=bulk; charset=utf-8'},
152
+ :body => {:errors => [{
153
+ :status => '404',
154
+ :detail => "could not find Acceptor record, id: '#{acceptor_data[:id]}'"
155
+ }]}
156
+ )
157
+
158
+ result = Flapjack::Diner.acceptors(acceptor_data[:id])
159
+ expect(result).to be_nil
160
+ expect(Flapjack::Diner.last_error).to eq([{:status => '404',
161
+ :detail => "could not find Acceptor record, id: '#{acceptor_data[:id]}'"}])
162
+ end
163
+
164
+ end
165
+
166
+ # # Not immediately relevant, no data fields to update until time_restrictions are fixed
167
+ # context 'update' do
168
+ # it 'submits a PUT request for an acceptor' do
169
+ # flapjack.given("an acceptor exists").
170
+ # upon_receiving("a PUT request for a single acceptor").
171
+ # with(:method => :put,
172
+ # :path => "/acceptors/#{acceptor_data[:id]}",
173
+ # :body => {:acceptors => {:id => acceptor_data[:id], :time_restrictions => []}},
174
+ # :headers => {'Content-Type' => 'application/vnd.api+json'}).
175
+ # will_respond_with(
176
+ # :status => 204,
177
+ # :body => '' )
178
+
179
+ # result = Flapjack::Diner.update_acceptors(:id => acceptor_data[:id], :time_restrictions => [])
180
+ # expect(result).to be_a(TrueClass)
181
+ # end
182
+
183
+ # it 'submits a PUT request for several acceptors' do
184
+ # flapjack.given("two acceptors exist").
185
+ # upon_receiving("a PUT request for two acceptors").
186
+ # with(:method => :put,
187
+ # :path => "/acceptors/#{acceptor_data[:id]},#{acceptor_2_data[:id]}",
188
+ # :body => {:acceptors => [{:id => acceptor_data[:id], :time_restrictions => []},
189
+ # {:id => acceptor_2_data[:id], :enabled => true}]},
190
+ # :headers => {'Content-Type' => 'application/vnd.api+json'}).
191
+ # will_respond_with(
192
+ # :status => 204,
193
+ # :body => '' )
194
+
195
+ # result = Flapjack::Diner.update_acceptors(
196
+ # {:id => acceptor_data[:id], :time_restrictions => []},
197
+ # {:id => acceptor_2_data[:id], :enabled => true})
198
+ # expect(result).to be_a(TrueClass)
199
+ # end
200
+
201
+ # it "can't find the acceptor to update" do
202
+ # flapjack.given("no data exists").
203
+ # upon_receiving("a PUT request for a single acceptor").
204
+ # with(:method => :put,
205
+ # :path => "/acceptors/#{acceptor_data[:id]}",
206
+ # :body => {:acceptors => {:id => acceptor_data[:id], :time_restrictions => []}},
207
+ # :headers => {'Content-Type' => 'application/vnd.api+json'}).
208
+ # will_respond_with(
209
+ # :status => 404,
210
+ # :headers => {'Content-Type' => 'application/vnd.api+json; charset=utf-8'},
211
+ # :body => {:errors => [{
212
+ # :status => '404',
213
+ # :detail => "could not find Acceptor records, ids: '#{acceptor_data[:id]}'"
214
+ # }]}
215
+ # )
216
+
217
+ # result = Flapjack::Diner.update_acceptors(:id => acceptor_data[:id], :time_restrictions => [])
218
+ # expect(result).to be_nil
219
+ # expect(Flapjack::Diner.last_error).to eq([{:status => '404',
220
+ # :detail => "could not find Acceptor records, ids: '#{acceptor_data[:id]}'"}])
221
+ # end
222
+ # end
223
+
224
+ context 'delete' do
225
+
226
+ it "submits a DELETE request for an acceptor" do
227
+ flapjack.given("an acceptor exists").
228
+ upon_receiving("a DELETE request for a single acceptor").
229
+ with(:method => :delete,
230
+ :path => "/acceptors/#{acceptor_data[:id]}",
231
+ :body => nil).
232
+ will_respond_with(:status => 204,
233
+ :body => '')
234
+
235
+ result = Flapjack::Diner.delete_acceptors(acceptor_data[:id])
236
+ expect(result).to be_a(TrueClass)
237
+ end
238
+
239
+ it "submits a DELETE request for several acceptors" do
240
+ acceptors_data = [{:type => 'acceptor', :id => acceptor_data[:id]},
241
+ {:type => 'acceptor', :id => acceptor_2_data[:id]}]
242
+
243
+ flapjack.given("two acceptors exist").
244
+ upon_receiving("a DELETE request for two acceptors").
245
+ with(:method => :delete,
246
+ :headers => {'Content-Type' => 'application/vnd.api+json; ext=bulk'},
247
+ :path => "/acceptors",
248
+ :body => {:data => acceptors_data}).
249
+ will_respond_with(:status => 204,
250
+ :body => '')
251
+
252
+ result = Flapjack::Diner.delete_acceptors(acceptor_data[:id], acceptor_2_data[:id])
253
+ expect(result).to be_a(TrueClass)
254
+ end
255
+
256
+ it "can't find the acceptor to delete" do
257
+ flapjack.given("no data exists").
258
+ upon_receiving("a DELETE request for a single acceptor").
259
+ with(:method => :delete,
260
+ :path => "/acceptors/#{acceptor_data[:id]}",
261
+ :body => nil).
262
+ will_respond_with(
263
+ :status => 404,
264
+ :headers => {'Content-Type' => 'application/vnd.api+json; supported-ext=bulk; charset=utf-8'},
265
+ :body => {:errors => [{
266
+ :status => '404',
267
+ :detail => "could not find Acceptor record, id: '#{acceptor_data[:id]}'"
268
+ }]}
269
+ )
270
+
271
+ result = Flapjack::Diner.delete_acceptors(acceptor_data[:id])
272
+ expect(result).to be_nil
273
+ expect(Flapjack::Diner.last_error).to eq([{:status => '404',
274
+ :detail => "could not find Acceptor record, id: '#{acceptor_data[:id]}'"}])
275
+ end
276
+ end
277
+
278
+ end