jsonapi-resources-matchers 0.2.0 → 0.3.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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cf29e748e8ceb2c88f705e41606add289595519
|
4
|
+
data.tar.gz: 8786354af24bb3c3e6b013f11f16014a39930b66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e941507f83a4c9537bd3c7a69716efa3b1faafd242c926c61ba93a0236109c022a4334701fd4e7e01995838ae1f127d256c57a250acc41a6f19dda9df0e91e43
|
7
|
+
data.tar.gz: 1c5d9824e4024b1dd101aab935a19c4a918db045a76e40582e0c5e7fb4a6a33654a4ce2cf69636336aefc7a906605ca4b332177f6f125acf854455423683c162
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
require "jsonapi/resources/matchers/version"
|
2
2
|
require "jsonapi/resources/matchers/have_attribute"
|
3
3
|
require "jsonapi/resources/matchers/filter"
|
4
|
-
require "jsonapi/resources/matchers/
|
5
|
-
require "jsonapi/resources/matchers/have_one"
|
4
|
+
require "jsonapi/resources/matchers/relationship"
|
6
5
|
require "jsonapi/resources/matchers/have_model_name"
|
7
6
|
require "jsonapi/resources/matchers/have_primary_key"
|
8
7
|
|
@@ -19,11 +18,11 @@ module JSONAPI
|
|
19
18
|
end
|
20
19
|
|
21
20
|
def have_many(name)
|
22
|
-
|
21
|
+
Relationship.new(:have_many, name)
|
23
22
|
end
|
24
23
|
|
25
24
|
def have_one(name)
|
26
|
-
|
25
|
+
Relationship.new(:have_one, name)
|
27
26
|
end
|
28
27
|
|
29
28
|
def have_model_name(name)
|
@@ -1,22 +1,33 @@
|
|
1
1
|
module JSONAPI
|
2
2
|
module Resources
|
3
3
|
module Matchers
|
4
|
-
class
|
4
|
+
class Relationship
|
5
5
|
|
6
|
-
attr_accessor
|
6
|
+
attr_accessor(:name,
|
7
|
+
:relationship_type,
|
8
|
+
:resource,
|
9
|
+
:expected_class_name,
|
10
|
+
:expected_relation_name)
|
7
11
|
|
8
|
-
def initialize(name)
|
12
|
+
def initialize(relationship_type, name)
|
13
|
+
self.relationship_type = relationship_type
|
9
14
|
self.name = name
|
10
15
|
end
|
11
16
|
|
12
17
|
def description
|
13
|
-
"
|
18
|
+
"#{humanized_relationship_type} `#{name}`"
|
19
|
+
end
|
20
|
+
|
21
|
+
def humanized_relationship_type
|
22
|
+
relationship_type.to_s.gsub('_',' ')
|
14
23
|
end
|
15
24
|
|
16
25
|
def matches?(resource)
|
17
26
|
self.resource = resource
|
18
27
|
|
19
|
-
has_key_in_relationships? &&
|
28
|
+
has_key_in_relationships? &&
|
29
|
+
matches_class_name? &&
|
30
|
+
matches_relation_name?
|
20
31
|
end
|
21
32
|
|
22
33
|
def has_key_in_relationships?
|
@@ -33,12 +44,20 @@ module JSONAPI
|
|
33
44
|
self
|
34
45
|
end
|
35
46
|
|
47
|
+
def with_relation_name(name)
|
48
|
+
self.expected_relation_name = name
|
49
|
+
self
|
50
|
+
end
|
51
|
+
|
36
52
|
def failure_message
|
37
53
|
resource_name = resource.class.name.demodulize
|
38
|
-
message = ["expected `#{resource_name}` to
|
54
|
+
message = ["expected `#{resource_name}` to #{humanized_relationship_type} `#{name}`"]
|
39
55
|
if self.expected_class_name
|
40
56
|
message << "with class name `#{self.expected_class_name}`"
|
41
57
|
end
|
58
|
+
if self.expected_relation_name
|
59
|
+
message << "with relation name `#{self.expected_relation_name}`"
|
60
|
+
end
|
42
61
|
message.join(" ")
|
43
62
|
end
|
44
63
|
|
@@ -49,6 +68,13 @@ module JSONAPI
|
|
49
68
|
self.expected_class_name == actual_class_name
|
50
69
|
end
|
51
70
|
|
71
|
+
def matches_relation_name?
|
72
|
+
return true if self.expected_relation_name.nil?
|
73
|
+
association = resource.class._relationships[name]
|
74
|
+
actual_relation_name = association.relation_name
|
75
|
+
self.expected_relation_name == actual_relation_name
|
76
|
+
end
|
77
|
+
|
52
78
|
end
|
53
79
|
end
|
54
80
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsonapi-resources-matchers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- G5
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-07-
|
12
|
+
date: 2015-07-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jsonapi-resources
|
@@ -106,11 +106,10 @@ files:
|
|
106
106
|
- lib/jsonapi/resources/matchers.rb
|
107
107
|
- lib/jsonapi/resources/matchers/filter.rb
|
108
108
|
- lib/jsonapi/resources/matchers/have_attribute.rb
|
109
|
-
- lib/jsonapi/resources/matchers/have_many.rb
|
110
109
|
- lib/jsonapi/resources/matchers/have_model_name.rb
|
111
|
-
- lib/jsonapi/resources/matchers/have_one.rb
|
112
110
|
- lib/jsonapi/resources/matchers/have_primary_key.rb
|
113
111
|
- lib/jsonapi/resources/matchers/integrations/rspec.rb
|
112
|
+
- lib/jsonapi/resources/matchers/relationship.rb
|
114
113
|
- lib/jsonapi/resources/matchers/version.rb
|
115
114
|
homepage: https://github.com/G5/jsonapi-resources-matchers
|
116
115
|
licenses:
|
@@ -1,55 +0,0 @@
|
|
1
|
-
module JSONAPI
|
2
|
-
module Resources
|
3
|
-
module Matchers
|
4
|
-
class HaveOne
|
5
|
-
|
6
|
-
attr_accessor :name, :resource, :expected_class_name
|
7
|
-
|
8
|
-
def initialize(name)
|
9
|
-
self.name = name
|
10
|
-
end
|
11
|
-
|
12
|
-
def description
|
13
|
-
"have one `#{name}`"
|
14
|
-
end
|
15
|
-
|
16
|
-
def matches?(resource)
|
17
|
-
self.resource = resource
|
18
|
-
|
19
|
-
has_key_in_relationships? && matches_class_name?
|
20
|
-
end
|
21
|
-
|
22
|
-
def has_key_in_relationships?
|
23
|
-
serialized_hash = JSONAPI::ResourceSerializer.new(resource.class).
|
24
|
-
serialize_to_hash(resource).with_indifferent_access
|
25
|
-
expected_key = name.to_s.dasherize
|
26
|
-
relationships = serialized_hash["data"]["relationships"]
|
27
|
-
return false if relationships.nil?
|
28
|
-
relationships.has_key?(expected_key)
|
29
|
-
end
|
30
|
-
|
31
|
-
def with_class_name(name)
|
32
|
-
self.expected_class_name = name
|
33
|
-
self
|
34
|
-
end
|
35
|
-
|
36
|
-
def failure_message
|
37
|
-
resource_name = resource.class.name.demodulize
|
38
|
-
message = ["expected `#{resource_name}` to have one `#{name}`"]
|
39
|
-
if self.expected_class_name
|
40
|
-
message << "with class name `#{self.expected_class_name}`"
|
41
|
-
end
|
42
|
-
message.join(" ")
|
43
|
-
end
|
44
|
-
|
45
|
-
def matches_class_name?
|
46
|
-
return true if self.expected_class_name.nil?
|
47
|
-
association = resource.class._relationships[name]
|
48
|
-
actual_class_name = association.class_name
|
49
|
-
self.expected_class_name == actual_class_name
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|