rspec_jsonapi_serializer 1.1.0 → 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: e24d0b3794bdc77750c98e578543eb472a655f79ea61190682623b2ce7f8e89f
4
- data.tar.gz: 89cfb3714d48e15345fbad93540bdf58b02153f4001e88defc66fbc63758d672
3
+ metadata.gz: a01005a800b62bc1790bef3c0b41d7f39528016cbc3f44255100d60c06f6e3f7
4
+ data.tar.gz: 6870f0d87b139a4e50bedabc2af25faae9a9aa10918ee20cf7a31947b57ecb3e
5
5
  SHA512:
6
- metadata.gz: 2693f3a69e99f02b54d6a283b377bc41f02ef74f82455d78d7c4b98965645f972939e2df2aeaea107f2546f9e0a69f2cc51e803cdaf3e6090f8b09491929ce09
7
- data.tar.gz: 2f5f2c1c81eb3a56e974d807c6136f2908540bb4afc07e25a179c03af36e5b0b9f0e583b8a707804b7e1d1cf032b84161ff8ea6221c21bf989e1c088c8675797
6
+ metadata.gz: b3de4e1e8b9253c30fd625113d0633e70a175546c071c413164af646fceb3785bcd1bb0c310e47f0b91162f48d0a7c989807cc32e13754b4376d89ecdebb195d
7
+ data.tar.gz: b65538587e22e77df17ef8acaca5694ca9212b7827e9e8ec35dcf4583b860f6ca287396b92bdb01a88aa623f7fabe520c76ff95036c8efb22351f8453e74c771
@@ -2,6 +2,8 @@
2
2
 
3
3
  require "rspec_jsonapi_serializer/matchers/base"
4
4
  require "rspec_jsonapi_serializer/matchers/association_matchers/serializer_matcher"
5
+ require "rspec_jsonapi_serializer/matchers/association_matchers/id_method_name_matcher"
6
+ require "rspec_jsonapi_serializer/matchers/association_matchers/object_method_name_matcher"
5
7
  require "rspec_jsonapi_serializer/metadata/relationships"
6
8
 
7
9
  module RSpecJSONAPISerializer
@@ -26,6 +28,18 @@ module RSpecJSONAPISerializer
26
28
  self
27
29
  end
28
30
 
31
+ def id_method_name(value)
32
+ add_submatcher AssociationMatchers::IdMethodNameMatcher.new(value, expected)
33
+
34
+ self
35
+ end
36
+
37
+ def object_method_name(value)
38
+ add_submatcher AssociationMatchers::ObjectMethodNameMatcher.new(value, expected)
39
+
40
+ self
41
+ end
42
+
29
43
  def main_failure_message
30
44
  [expected_message, actual_message].compact.join(", ")
31
45
  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 IdMethodNameMatcher < 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 id_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).id_method_name
39
+ end
40
+
41
+ def metadata
42
+ Metadata::Relationships.new(serializer_instance)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ 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
@@ -13,6 +13,14 @@ module RSpecJSONAPISerializer
13
13
  association_matcher.matches?(serializer_instance)
14
14
  end
15
15
 
16
+ def id_method_name(value)
17
+ association_matcher.id_method_name(value)
18
+ end
19
+
20
+ def object_method_name(value)
21
+ association_matcher.object_method_name(value)
22
+ end
23
+
16
24
  def serializer(value)
17
25
  association_matcher.serializer(value)
18
26
  end
@@ -13,6 +13,14 @@ module RSpecJSONAPISerializer
13
13
  association_matcher.matches?(serializer_instance)
14
14
  end
15
15
 
16
+ def id_method_name(value)
17
+ association_matcher.id_method_name(value)
18
+ end
19
+
20
+ def object_method_name(value)
21
+ association_matcher.object_method_name(value)
22
+ end
23
+
16
24
  def serializer(value)
17
25
  association_matcher.serializer(value)
18
26
  end
@@ -13,6 +13,14 @@ module RSpecJSONAPISerializer
13
13
  association_matcher.matches?(serializer_instance)
14
14
  end
15
15
 
16
+ def id_method_name(value)
17
+ association_matcher.id_method_name(value)
18
+ end
19
+
20
+ def object_method_name(value)
21
+ association_matcher.object_method_name(value)
22
+ end
23
+
16
24
  def serializer(value)
17
25
  association_matcher.serializer(value)
18
26
  end
@@ -15,6 +15,8 @@ module RSpecJSONAPISerializer
15
15
  # expect(serializer).to belong_to(:team)
16
16
  # If you have a custom serializer, you can assert its value with the `serializer` submatcher
17
17
  # expect(serializer).to belong_to(:team).serializer(TeamSerializer)
18
+ # If you have a custom id, you can assert its value with the `id_method_name` submatcher
19
+ # expect(serializer).to belong_to(:team).id_method_name(:team_slug)
18
20
  def belong_to(expected)
19
21
  BelongToMatcher.new(expected)
20
22
  end
@@ -49,6 +51,8 @@ module RSpecJSONAPISerializer
49
51
  # expect(serializer).to have_many(:teams)
50
52
  # If you have a custom serializer, you can assert its value with the `serializer` submatcher
51
53
  # expect(serializer).to have_many(:teams).serializer(TeamSerializer)
54
+ # If you have a custom id, you can assert its value with the `id_method_name` submatcher
55
+ # expect(serializer).to have_many(:teams).id_method_name(:team_slugs)
52
56
  def have_many(expected)
53
57
  HaveManyMatcher.new(expected)
54
58
  end
@@ -67,6 +71,8 @@ module RSpecJSONAPISerializer
67
71
  # expect(serializer).to have_one(:team)
68
72
  # If you have a custom serializer, you can assert its value with the `serializer` submatcher
69
73
  # expect(serializer).to have_one(:team).serializer(TeamSerializer)
74
+ # If you have a custom id, you can assert its value with the `id_method_name` submatcher
75
+ # expect(serializer).to have_one(:team).id_method_name(:team_slug)
70
76
  def have_one(expected)
71
77
  HaveOneMatcher.new(expected)
72
78
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RSpecJSONAPISerializer
4
- VERSION = "1.1.0"
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.1.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mateus Cruz
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-15 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
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
- description:
27
+ description:
28
28
  email:
29
29
  - mateus@intricately.com
30
30
  executables: []
@@ -34,6 +34,8 @@ files:
34
34
  - lib/rspec_jsonapi_serializer.rb
35
35
  - lib/rspec_jsonapi_serializer/matchers.rb
36
36
  - lib/rspec_jsonapi_serializer/matchers/association_matcher.rb
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
37
39
  - lib/rspec_jsonapi_serializer/matchers/association_matchers/serializer_matcher.rb
38
40
  - lib/rspec_jsonapi_serializer/matchers/base.rb
39
41
  - lib/rspec_jsonapi_serializer/matchers/belong_to_matcher.rb
@@ -49,14 +51,14 @@ files:
49
51
  - lib/rspec_jsonapi_serializer/matchers/have_type_matcher.rb
50
52
  - lib/rspec_jsonapi_serializer/metadata/relationships.rb
51
53
  - lib/rspec_jsonapi_serializer/version.rb
52
- homepage: https://github.com/teamintricately/rspec_jsonapi_serializer
54
+ homepage: https://github.com/mateuscruz/rspec_jsonapi_serializer
53
55
  licenses:
54
56
  - MIT
55
57
  metadata:
56
- homepage_uri: https://github.com/teamintricately/rspec_jsonapi_serializer
57
- source_code_uri: https://github.com/teamintricately/rspec_jsonapi_serializer
58
- changelog_uri: https://github.com/teamintricately/rspec_jsonapi_serializer/blob/main/CHANGELOG.md
59
- post_install_message:
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
61
+ post_install_message:
60
62
  rdoc_options: []
61
63
  require_paths:
62
64
  - lib
@@ -71,8 +73,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
73
  - !ruby/object:Gem::Version
72
74
  version: '0'
73
75
  requirements: []
74
- rubygems_version: 3.2.16
75
- signing_key:
76
+ rubygems_version: 3.3.7
77
+ signing_key:
76
78
  specification_version: 4
77
79
  summary: RSpec matchers for jsonapi-serializer.
78
80
  test_files: []