rspec_jsonapi_serializer 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc87e1c0dd34c16432247cfbb0050bf67e1666b557f49a60b2400cbf84e62d40
4
- data.tar.gz: 7cb83bb3fb733102671a0fe860dfd12a2e8d2070e0613879cf22502462d40254
3
+ metadata.gz: a01005a800b62bc1790bef3c0b41d7f39528016cbc3f44255100d60c06f6e3f7
4
+ data.tar.gz: 6870f0d87b139a4e50bedabc2af25faae9a9aa10918ee20cf7a31947b57ecb3e
5
5
  SHA512:
6
- metadata.gz: 9e22aa5740094b7d307b8ea1a738546d1fde3bcbe8f28043e66d6211bf85cb457cc2d36a0d819c1f1f507f6c6980f1a699b5ff55d11d2b88d08c3478c4252b9a
7
- data.tar.gz: bacc318b8c1d7756c9109113b116a2d710d966efa9578b2dc61e07ab67056d9300d1a0138b69d5e415186c49160813247e2a9a7083385c3af4836011fd6cdaba
6
+ metadata.gz: b3de4e1e8b9253c30fd625113d0633e70a175546c071c413164af646fceb3785bcd1bb0c310e47f0b91162f48d0a7c989807cc32e13754b4376d89ecdebb195d
7
+ data.tar.gz: b65538587e22e77df17ef8acaca5694ca9212b7827e9e8ec35dcf4583b860f6ca287396b92bdb01a88aa623f7fabe520c76ff95036c8efb22351f8453e74c771
@@ -3,6 +3,7 @@
3
3
  require "rspec_jsonapi_serializer/matchers/base"
4
4
  require "rspec_jsonapi_serializer/matchers/association_matchers/serializer_matcher"
5
5
  require "rspec_jsonapi_serializer/matchers/association_matchers/id_method_name_matcher"
6
+ require "rspec_jsonapi_serializer/matchers/association_matchers/object_method_name_matcher"
6
7
  require "rspec_jsonapi_serializer/metadata/relationships"
7
8
 
8
9
  module RSpecJSONAPISerializer
@@ -33,32 +34,22 @@ module RSpecJSONAPISerializer
33
34
  self
34
35
  end
35
36
 
36
- def description
37
- description = "#{association_message} #{expected}"
37
+ def object_method_name(value)
38
+ add_submatcher AssociationMatchers::ObjectMethodNameMatcher.new(value, expected)
38
39
 
39
- [description, submatchers.map(&:description)].flatten.join(' ')
40
- end
41
-
42
- def failure_message
43
- "Expected #{expectation}"
40
+ self
44
41
  end
45
42
 
46
- def failure_message_when_negated
47
- "Did not expect #{expectation}"
43
+ def main_failure_message
44
+ [expected_message, actual_message].compact.join(", ")
48
45
  end
49
46
 
50
47
  private
51
48
 
52
49
  attr_reader :relationship_matcher, :relationship_type
53
50
 
54
- def expectation
55
- expectation = "#{serializer_name} to #{association_message} #{expected}"
56
-
57
- submatchers_expectations = failing_submatchers.map do |submatcher|
58
- "(#{submatcher.expectation})"
59
- end.compact.join(", ")
60
-
61
- [expectation, submatchers_expectations].reject(&:nil?).reject(&:empty?).join(" ")
51
+ def expected_message
52
+ "expected #{serializer_name} to #{association_message} #{expected}"
62
53
  end
63
54
 
64
55
  def relationship_matches?
@@ -70,7 +61,7 @@ module RSpecJSONAPISerializer
70
61
  end
71
62
 
72
63
  def association_message
73
- relationship_matcher.to_s.split("_").join(" ")
64
+ relationship_matcher.to_s.split('_')
74
65
  end
75
66
 
76
67
  def actual
@@ -9,7 +9,7 @@ module RSpecJSONAPISerializer
9
9
  def initialize(value, relationship_target)
10
10
  super(value)
11
11
 
12
- @relationship_target = relationship_target
12
+ @relationship_target = relationship_target
13
13
  end
14
14
 
15
15
  def matches?(serializer_instance)
@@ -18,18 +18,18 @@ module RSpecJSONAPISerializer
18
18
  actual == expected
19
19
  end
20
20
 
21
- def description
22
- "with id method name #{expected}"
23
- end
24
-
25
- def expectation
26
- [ "with id method name #{expected}", actual_message ].compact.join(", ")
21
+ def main_failure_message
22
+ [expected_message, actual_message].compact.join(", ")
27
23
  end
28
24
 
29
25
  private
30
26
 
31
27
  attr_reader :relationship_target
32
28
 
29
+ def expected_message
30
+ "expected #{serializer_name} to use #{expected} as id_method_name for #{relationship_target}"
31
+ end
32
+
33
33
  def actual_message
34
34
  actual ? "got #{actual} instead" : nil
35
35
  end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rspec_jsonapi_serializer/metadata/relationships"
4
+
5
+ module RSpecJSONAPISerializer
6
+ module Matchers
7
+ module AssociationMatchers
8
+ class ObjectMethodNameMatcher < Base
9
+ def initialize(value, relationship_target)
10
+ super(value)
11
+
12
+ @relationship_target = relationship_target
13
+ end
14
+
15
+ def matches?(serializer_instance)
16
+ @serializer_instance = serializer_instance
17
+
18
+ actual == expected
19
+ end
20
+
21
+ def main_failure_message
22
+ [expected_message, actual_message].compact.join(", ")
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :relationship_target
28
+
29
+ def expected_message
30
+ "expected #{serializer_name} to use #{expected} as object_method_name for #{relationship_target}"
31
+ end
32
+
33
+ def actual_message
34
+ actual ? "got #{actual} instead" : nil
35
+ end
36
+
37
+ def actual
38
+ metadata.relationship(relationship_target).object_method_name
39
+ end
40
+
41
+ def metadata
42
+ Metadata::Relationships.new(serializer_instance)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -18,18 +18,18 @@ module RSpecJSONAPISerializer
18
18
  actual == expected
19
19
  end
20
20
 
21
- def description
22
- "with serializer #{expected}"
23
- end
24
-
25
- def expectation
26
- [ "with serializer #{expected}", actual_message ].compact.join(", ")
21
+ def main_failure_message
22
+ [expected_message, actual_message].compact.join(", ")
27
23
  end
28
24
 
29
25
  private
30
26
 
31
27
  attr_reader :relationship_target
32
28
 
29
+ def expected_message
30
+ "expected #{serializer_name} to use #{expected} as serializer for #{relationship_target}"
31
+ end
32
+
33
33
  def actual_message
34
34
  actual ? "got #{actual} instead" : nil
35
35
  end
@@ -13,17 +13,27 @@ module RSpecJSONAPISerializer
13
13
  end
14
14
 
15
15
  def failure_message
16
- raise NotImplementedError
16
+ ([main_failure_message] + submatcher_failure_messages).compact.join("\n")
17
17
  end
18
18
 
19
19
  def failure_message_when_negated
20
- raise NotImplementedError
20
+ ([main_failure_message_when_negated] + submatcher_failure_messages_when_negated)
21
+ .compact
22
+ .join("\n")
21
23
  end
22
24
 
23
25
  protected
24
26
 
25
27
  attr_reader :expected, :serializer_instance, :submatchers
26
28
 
29
+ def main_failure_message
30
+ raise NotImplementedError
31
+ end
32
+
33
+ def main_failure_message_when_negated
34
+ raise NotImplementedError
35
+ end
36
+
27
37
  def add_submatcher(submatcher)
28
38
  submatchers << submatcher
29
39
  end
@@ -40,6 +50,16 @@ module RSpecJSONAPISerializer
40
50
  serializer_instance.class.name
41
51
  end
42
52
 
53
+ private
54
+
55
+ def submatcher_failure_messages
56
+ failing_submatchers.map(&:failure_message)
57
+ end
58
+
59
+ def submatcher_failure_messages_when_negated
60
+ failing_submatchers.map(&:failure_message_when_negated)
61
+ end
62
+
43
63
  def failing_submatchers
44
64
  @failing_submatchers ||= submatchers.select do |submatcher|
45
65
  !submatcher.matches?(serializer_instance)
@@ -17,20 +17,16 @@ module RSpecJSONAPISerializer
17
17
  association_matcher.id_method_name(value)
18
18
  end
19
19
 
20
- def serializer(value)
21
- association_matcher.serializer(value)
22
- end
23
-
24
- def description
25
- association_matcher.description
20
+ def object_method_name(value)
21
+ association_matcher.object_method_name(value)
26
22
  end
27
23
 
28
- def failure_message
29
- association_matcher.failure_message
24
+ def serializer(value)
25
+ association_matcher.serializer(value)
30
26
  end
31
27
 
32
- def failure_message_when_negated
33
- association_matcher.failure_message_when_negated
28
+ def main_failure_message
29
+ association_matcher.main_failure_message
34
30
  end
35
31
 
36
32
  private
@@ -19,35 +19,17 @@ module RSpecJSONAPISerializer
19
19
  end
20
20
 
21
21
  def as_nil
22
- as(nil)
23
- end
24
-
25
- def description
26
- description = "have attribute #{expected}"
22
+ add_submatcher HaveAttributeMatchers::AsMatcher.new(expected, nil)
27
23
 
28
- [description, submatchers.map(&:description)].flatten.join(' ')
29
- end
30
-
31
- def failure_message
32
- "Expected #{expectation}."
24
+ self
33
25
  end
34
26
 
35
- def failure_message_when_negated
36
- "Did not expect #{expectation}."
27
+ def main_failure_message
28
+ "expected #{serializer_name} to have attribute #{expected}." unless has_attribute?
37
29
  end
38
30
 
39
31
  private
40
32
 
41
- def expectation
42
- expectation = "#{serializer_name} to have attribute #{expected}"
43
-
44
- submatchers_expectations = failing_submatchers.map do |submatcher|
45
- "(#{submatcher.expectation})"
46
- end.compact.join(", ")
47
-
48
- [expectation, submatchers_expectations].reject(&:nil?).reject(&:empty?).join(" ")
49
- end
50
-
51
33
  def attributes
52
34
  @attributes ||= serializer_instance.class.try(:attributes_to_serialize) || {}
53
35
  end
@@ -18,30 +18,20 @@ module RSpecJSONAPISerializer
18
18
  actual == expected
19
19
  end
20
20
 
21
- def description
22
- "as #{expected_to_string}"
23
- end
24
-
25
- def expectation
26
- [ "as #{expected_to_string}", actual_message ].compact.join(", ")
21
+ def failure_message
22
+ [expected_message, actual_message].compact.join(", ")
27
23
  end
28
24
 
29
25
  private
30
26
 
31
27
  attr_reader :attribute
32
28
 
33
- def expected_to_string
34
- value_to_string(expected)
29
+ def expected_message
30
+ "expected #{serializer_instance.class.name} to serialize #{attribute} as #{expected}"
35
31
  end
36
32
 
37
33
  def actual_message
38
- "got #{value_to_string(actual)} instead" if attributes.has_key?(attribute)
39
- end
40
-
41
- def value_to_string(value)
42
- return 'nil' if value.nil?
43
-
44
- value.to_s
34
+ "got #{actual.nil? ? 'nil' : actual} instead" if attributes.has_key?(attribute)
45
35
  end
46
36
 
47
37
  def actual
@@ -11,7 +11,7 @@ module RSpecJSONAPISerializer
11
11
  actual == expected
12
12
  end
13
13
 
14
- def failure_message
14
+ def main_failure_message
15
15
  "expected that #{serializer_name} to have id :#{expected}, got :#{actual} instead"
16
16
  end
17
17
 
@@ -19,35 +19,17 @@ module RSpecJSONAPISerializer
19
19
  end
20
20
 
21
21
  def as_nil
22
- as(nil)
23
- end
24
-
25
- def description
26
- description = "have link #{expected}"
22
+ add_submatcher HaveLinkMatchers::AsMatcher.new(expected, nil)
27
23
 
28
- [description, submatchers.map(&:description)].flatten.join(' ')
29
- end
30
-
31
- def failure_message
32
- "Expected #{expectation}."
24
+ self
33
25
  end
34
26
 
35
- def failure_message_when_negated
36
- "Did not expect #{expectation}."
27
+ def main_failure_message
28
+ "expected #{serializer_name} to have link #{expected}." unless has_link?
37
29
  end
38
30
 
39
31
  private
40
32
 
41
- def expectation
42
- expectation = "#{serializer_name} to have link #{expected}"
43
-
44
- submatchers_expectations = failing_submatchers.map do |submatcher|
45
- "(#{submatcher.expectation})"
46
- end.compact.join(", ")
47
-
48
- [expectation, submatchers_expectations].reject(&:nil?).reject(&:empty?).join(" ")
49
- end
50
-
51
33
  def has_link?
52
34
  links.has_key?(expected)
53
35
  end
@@ -18,30 +18,20 @@ module RSpecJSONAPISerializer
18
18
  actual == expected
19
19
  end
20
20
 
21
- def description
22
- "as #{expected_to_string}"
23
- end
24
-
25
- def expectation
26
- [ "as #{expected_to_string}", actual_message ].compact.join(", ")
21
+ def failure_message
22
+ [expected_message, actual_message].compact.join(", ")
27
23
  end
28
24
 
29
25
  private
30
26
 
31
27
  attr_reader :link
32
28
 
33
- def expected_to_string
34
- value_to_string(expected)
29
+ def expected_message
30
+ "expected #{serializer_instance.class.name} to serialize link #{link} as #{expected}"
35
31
  end
36
32
 
37
33
  def actual_message
38
- "got #{value_to_string(actual)} instead" if links.has_key?(link)
39
- end
40
-
41
- def value_to_string(value)
42
- return 'nil' if value.nil?
43
-
44
- value.to_s
34
+ "got #{actual.nil? ? 'nil' : actual} instead" if links.has_key?(link)
45
35
  end
46
36
 
47
37
  def actual
@@ -17,20 +17,16 @@ module RSpecJSONAPISerializer
17
17
  association_matcher.id_method_name(value)
18
18
  end
19
19
 
20
- def serializer(value)
21
- association_matcher.serializer(value)
22
- end
23
-
24
- def description
25
- association_matcher.description
20
+ def object_method_name(value)
21
+ association_matcher.object_method_name(value)
26
22
  end
27
23
 
28
- def failure_message
29
- association_matcher.failure_message
24
+ def serializer(value)
25
+ association_matcher.serializer(value)
30
26
  end
31
27
 
32
- def failure_message_when_negated
33
- association_matcher.failure_message_when_negated
28
+ def main_failure_message
29
+ association_matcher.main_failure_message
34
30
  end
35
31
 
36
32
  private
@@ -19,35 +19,17 @@ module RSpecJSONAPISerializer
19
19
  end
20
20
 
21
21
  def as_nil
22
- as(nil)
23
- end
24
-
25
- def description
26
- description = "serialize meta #{expected}"
22
+ add_submatcher HaveMetaMatchers::AsMatcher.new(expected, nil)
27
23
 
28
- [description, submatchers.map(&:description)].flatten.join(' ')
29
- end
30
-
31
- def failure_message
32
- "Expected #{expectation}."
24
+ self
33
25
  end
34
26
 
35
- def failure_message_when_negated
36
- "Did not expect #{expectation}."
27
+ def main_failure_message
28
+ "expected #{serializer_name} to serialize meta #{expected}." unless has_meta?
37
29
  end
38
30
 
39
31
  private
40
32
 
41
- def expectation
42
- expectation = "#{serializer_name} to serialize meta #{expected}"
43
-
44
- submatchers_expectations = failing_submatchers.map do |submatcher|
45
- "(#{submatcher.expectation})"
46
- end.compact.join(", ")
47
-
48
- [expectation, submatchers_expectations].reject(&:nil?).reject(&:empty?).join(" ")
49
- end
50
-
51
33
  def metas
52
34
  @metas ||= serializable_hash.dig(:data, :meta) || {}
53
35
  end
@@ -18,33 +18,22 @@ module RSpecJSONAPISerializer
18
18
  actual == expected
19
19
  end
20
20
 
21
- def description
22
- "as #{expected_to_string}"
23
- end
24
-
25
- def expectation
26
- [ "as #{expected_to_string}", actual_message ].compact.join(", ")
21
+ def failure_message
22
+ [expected_message, actual_message].compact.join(", ")
27
23
  end
28
24
 
29
25
  private
30
26
 
31
27
  attr_reader :meta
32
28
 
33
- def expected_to_string
34
- value_to_string(expected)
29
+ def expected_message
30
+ "expected #{serializer_instance.class.name} to serialize meta #{meta} as #{expected}"
35
31
  end
36
32
 
37
33
  def actual_message
38
34
  "got #{actual.nil? ? 'nil' : actual} instead" if metas.has_key?(meta)
39
35
  end
40
36
 
41
- def value_to_string(value)
42
- return 'nil' if value.nil?
43
-
44
- value.to_s
45
- end
46
-
47
-
48
37
  def actual
49
38
  metas[meta]
50
39
  end
@@ -17,20 +17,16 @@ module RSpecJSONAPISerializer
17
17
  association_matcher.id_method_name(value)
18
18
  end
19
19
 
20
- def serializer(value)
21
- association_matcher.serializer(value)
22
- end
23
-
24
- def description
25
- association_matcher.description
20
+ def object_method_name(value)
21
+ association_matcher.object_method_name(value)
26
22
  end
27
23
 
28
- def failure_message
29
- association_matcher.failure_message
24
+ def serializer(value)
25
+ association_matcher.serializer(value)
30
26
  end
31
27
 
32
- def failure_message_when_negated
33
- association_matcher.failure_message_when_negated
28
+ def main_failure_message
29
+ association_matcher.main_failure_message
34
30
  end
35
31
 
36
32
  private
@@ -11,7 +11,7 @@ module RSpecJSONAPISerializer
11
11
  actual == expected
12
12
  end
13
13
 
14
- def failure_message
14
+ def main_failure_message
15
15
  "expected that #{serializer_name} to have type :#{expected}, got :#{actual} instead"
16
16
  end
17
17
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RSpecJSONAPISerializer
4
- VERSION = "1.2.1"
4
+ VERSION = "1.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec_jsonapi_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mateus Cruz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-21 00:00:00.000000000 Z
11
+ date: 2023-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-serializer
@@ -35,6 +35,7 @@ files:
35
35
  - lib/rspec_jsonapi_serializer/matchers.rb
36
36
  - lib/rspec_jsonapi_serializer/matchers/association_matcher.rb
37
37
  - lib/rspec_jsonapi_serializer/matchers/association_matchers/id_method_name_matcher.rb
38
+ - lib/rspec_jsonapi_serializer/matchers/association_matchers/object_method_name_matcher.rb
38
39
  - lib/rspec_jsonapi_serializer/matchers/association_matchers/serializer_matcher.rb
39
40
  - lib/rspec_jsonapi_serializer/matchers/base.rb
40
41
  - lib/rspec_jsonapi_serializer/matchers/belong_to_matcher.rb
@@ -50,13 +51,13 @@ files:
50
51
  - lib/rspec_jsonapi_serializer/matchers/have_type_matcher.rb
51
52
  - lib/rspec_jsonapi_serializer/metadata/relationships.rb
52
53
  - lib/rspec_jsonapi_serializer/version.rb
53
- homepage: https://github.com/teamintricately/rspec_jsonapi_serializer
54
+ homepage: https://github.com/mateuscruz/rspec_jsonapi_serializer
54
55
  licenses:
55
56
  - MIT
56
57
  metadata:
57
- homepage_uri: https://github.com/teamintricately/rspec_jsonapi_serializer
58
- source_code_uri: https://github.com/teamintricately/rspec_jsonapi_serializer
59
- changelog_uri: https://github.com/teamintricately/rspec_jsonapi_serializer/blob/main/CHANGELOG.md
58
+ homepage_uri: https://github.com/mateuscruz/rspec_jsonapi_serializer
59
+ source_code_uri: https://github.com/mateuscruz/rspec_jsonapi_serializer
60
+ changelog_uri: https://github.com/mateuscruz/rspec_jsonapi_serializer/blob/main/CHANGELOG.md
60
61
  post_install_message:
61
62
  rdoc_options: []
62
63
  require_paths: