Skip to content

Commit 34d0ed3

Browse files
author
Lee Richmond
committed
Add helper methods for swagger
1 parent d775266 commit 34d0ed3

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

lib/jsonapi_spec_helpers.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
require 'json'
22
require 'jsonapi_spec_helpers/version'
3-
require 'jsonapi_spec_helpers/matchers'
43
require 'jsonapi_spec_helpers/helpers'
54
require 'jsonapi_spec_helpers/payload'
65
require 'jsonapi_spec_helpers/payload_sanitizer'
76

87
module JsonapiSpecHelpers
98
def self.included(klass)
9+
# don't load RSpec until included
10+
require 'jsonapi_spec_helpers/matchers'
1011
klass.send(:include, Helpers)
1112
if defined?(Rails)
12-
Dir[Rails.root.join('spec/payloads/**/*.rb')].each { |f| require f }
13+
load_payloads!
1314
end
1415
end
1516

17+
def self.load_payloads!
18+
Dir[Rails.root.join('spec/payloads/**/*.rb')].each { |f| require f }
19+
end
20+
1621
def assert_payload(name, record, json, &blk)
1722
unless payload = JsonapiSpecHelpers::Payload.registry[name]
1823
raise "No payloads registered for '#{name}'"

lib/jsonapi_spec_helpers/payload.rb

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,24 @@ class << self
55
end
66
self.registry = {}
77

8-
attr_accessor :keys, :no_keys
8+
attr_accessor :name, :type, :keys, :no_keys
99

1010
def self.register(name, &blk)
1111
instance = new
1212
instance.instance_eval(&blk)
13+
instance.name = name
1314
registry[name] = instance
1415
end
1516

17+
def self.by_type(type)
18+
found = nil
19+
registry.each_pair do |name, payload|
20+
found = payload if payload.type == type
21+
end
22+
raise "Could not find payload for type #{type}" unless found
23+
found
24+
end
25+
1626
def fork
1727
instance = self.class.new
1828
instance.keys = keys.dup
@@ -30,6 +40,14 @@ def no_key(name)
3040
@no_keys << name
3141
end
3242

43+
def type(val = nil)
44+
if val
45+
@type = val
46+
else
47+
@type || name.to_s.pluralize.to_sym
48+
end
49+
end
50+
3351
def key(name, *args, &blk)
3452
options = args.last.is_a?(Hash) ? args.pop : {}
3553
options[:type] = args.first
@@ -41,8 +59,8 @@ def key(name, *args, &blk)
4159
end
4260

4361
def timestamps!
44-
@keys[:created_at] = key(:created_at)
45-
@keys[:updated_at] = key(:updated_at)
62+
@keys[:created_at] = key(:created_at, String)
63+
@keys[:updated_at] = key(:updated_at, String)
4664
end
4765
end
4866
end

0 commit comments

Comments
 (0)