peck-on-rails 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/peck_on_rails.rb +30 -7
  2. metadata +1 -1
data/lib/peck_on_rails.rb CHANGED
@@ -254,14 +254,29 @@ class Peck
254
254
  class ResponseRequirement < Peck::Should::Proxy
255
255
  SUPPORTED_VERBS = [:get, :post, :put, :delete, :options]
256
256
 
257
- attr_accessor :method, :expected
257
+ attr_accessor :method, :exception, :expected
258
258
 
259
259
  def define_specification(verb, action, params={})
260
260
  _method = self.method
261
+ _negated = self.negated
261
262
  _expected = self.expected
263
+ _exception = self.exception
262
264
  context.it(description(verb, action, params)) do
263
- send(verb, action, immediate_values(params))
264
- send(_method).should == _expected
265
+ begin
266
+ send(verb, action, immediate_values(params))
267
+ rescue => raised_exception
268
+ if _negated
269
+ raised_exception.should.be.kind_of(_exception)
270
+ else
271
+ raised_exception.should.not.be.kind_of(_exception)
272
+ end
273
+ else
274
+ if _negated
275
+ send(_method).should.not == _expected
276
+ else
277
+ send(_method).should == _expected
278
+ end
279
+ end
265
280
  end
266
281
  end
267
282
 
@@ -300,10 +315,12 @@ class Peck
300
315
  end
301
316
 
302
317
  class Response < ResponseRequirement
318
+ attr_accessor :verb_description
319
+
303
320
  def description(verb, action, params={})
304
321
  description = ["should"]
305
322
  description << "not" if (negated == false)
306
- description << "be allowed to #{verb.upcase}s `#{action}'"
323
+ description << "#{verb_description} `#{action}'"
307
324
  description << "#{params.inspect}" unless params.blank?
308
325
  description.join(' ')
309
326
  end
@@ -328,7 +345,7 @@ class Peck
328
345
 
329
346
  def allow
330
347
  requirement = Disallow.new(context)
331
- requirement.negated = !@negated
348
+ requirement.negated = @negated
332
349
  requirement.method = :allowed?
333
350
  requirement.expected = true
334
351
  requirement
@@ -336,9 +353,15 @@ class Peck
336
353
 
337
354
  def find
338
355
  requirement = Response.new(context)
339
- requirement.negated = !@negated
356
+ requirement.negated = @negated
357
+ requirement.verb_description = 'find'
340
358
  requirement.method = :status
341
- requirement.expected = :ok
359
+ if @negated
360
+ requirement.expected = :not_found
361
+ requirement.exception = ActiveRecord::RecordNotFound
362
+ else
363
+ requirement.expected = :ok
364
+ end
342
365
  requirement
343
366
  end
344
367
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peck-on-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: