rspec_jsonapi_serializer 1.2.1 → 1.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
  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: