graphiti_spec_helpers 1.1.0 → 1.2.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: 6a00691315a444a8df06833ae41d8c7429b3bb259e18f1913cdc160733a08123
4
- data.tar.gz: 6ed313ef3a0578d01b1714c663b269a5a3c3bac0d1ae8f7a95a0f42dc4ffcbae
3
+ metadata.gz: d80a7dede9b7175fe93dadb5423e427702e13859ac0e2720aff2d5e9b66108fc
4
+ data.tar.gz: 46d2b838e2e7bcf860230d9445576da82b67217eeaf3c36fc9fe8f7fd75bec01
5
5
  SHA512:
6
- metadata.gz: c74d21897b216b6a39f54fd29da8e85664f43e931499fa32c08af145fba2863f31f07ea16de8bf63c4b36093e0568e8434b4531e793517a56942a3f009ebbc4e
7
- data.tar.gz: ebeef28459f67952117255eac8c9871b6ee77ffd64da610fbf32408fee3ce5c1da6610f143270e608daef8e9421212ca207053a1ce84d5f9aff9ba7ac92ff86c
6
+ metadata.gz: 4fa59b61a9154c01644e4cd7511c509707b6b6ba4128282a64598902ef9fb82ee7f6057628d38e9024814e8acb8afde88ea0a1b2f7bc14db0d751eb94aa4fc1a
7
+ data.tar.gz: 7b7b9415a22b0672c71d04801c3d4e97e1555edb0b6ce2357ab12a14df22a454d74b1abb3027f529af98f1a873115022f13727ad98fd67688bbf584e79bc547c
@@ -0,0 +1,30 @@
1
+ name: Test
2
+ on: [ push, pull_request, workflow_dispatch ]
3
+
4
+ jobs:
5
+ test:
6
+ runs-on: ubuntu-latest
7
+
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ ruby: [ 2.7, 3.0, 3.1, 3.2, 3.3, 3.4, head ]
12
+
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+ - uses: ruby/setup-ruby@v1
16
+ with:
17
+ bundler-cache: true
18
+ ruby-version: ${{ matrix.ruby }}
19
+ - run: bundle exec rake
20
+ publish:
21
+ name: Release
22
+ runs-on: ubuntu-latest
23
+ if: github.ref == 'refs/heads/master'
24
+ needs: [test]
25
+ steps:
26
+ - name: Dispatch Release
27
+ uses: benc-uk/workflow-dispatch@v1
28
+ with:
29
+ workflow: Generate New Release
30
+ token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: Generate New Release
3
+
4
+ on:
5
+ workflow_dispatch:
6
+
7
+ concurrency:
8
+ group: ci-${{ github.head_ref || github.ref }}
9
+ cancel-in-progress: true
10
+
11
+ jobs:
12
+ release:
13
+ name: Release
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - name: Checkout
17
+ uses: actions/checkout@v3
18
+ with:
19
+ submodules: true
20
+ persist-credentials: false
21
+ - name: Set up Ruby
22
+ uses: ruby/setup-ruby@v1
23
+ with:
24
+ ruby-version: "3.1"
25
+ - name: Build
26
+ run: |
27
+ gem install bundler
28
+ git submodule update --init --recursive
29
+ bundle install --jobs 4 --retry 3
30
+ - name: Setup Node.js
31
+ uses: actions/setup-node@v2
32
+ with:
33
+ node-version: 14
34
+ - name: Install Dependencies
35
+ run: yarn install --frozen-lockfile
36
+ - name: Release
37
+ env:
38
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39
+ GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }}
40
+ run: node_modules/.bin/semantic-release
41
+
data/Gemfile CHANGED
@@ -1,4 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem "mutex_m" # Ruby 3.4 no longer includes this
4
+ gem "base64"
5
+ gem "ostruct" # Ruby 3.5 no longer includes this
6
+
3
7
  # Specify your gem's dependencies in graphiti_spec_helpers.gemspec
4
- gemspec
8
+ gemspec
data/README.md CHANGED
@@ -1,6 +1,39 @@
1
1
  # GraphitiSpecHelpers
2
2
 
3
3
  ![Build Status](https://travis-ci.org/graphiti-api/graphiti_spec_helpers.svg?branch=master)
4
+ [![Gem Version](https://badge.fury.io/rb/graphiti_spec_helpers.svg)](https://badge.fury.io/rb/graphiti_spec_helpers)
4
5
 
5
6
  Spec helpers for [Graphiti](https://github.com/graphiti-api/graphiti)
6
7
  APIs.
8
+
9
+ # Installation
10
+ Note: this assumes you have [rspec-rails](https://github.com/rspec/rspec-rails) installed & configured already.
11
+
12
+ `Gemfile`
13
+ ```ruby
14
+ group :development, :test do
15
+ # ...
16
+ gem 'graphiti_spec_helpers', '~> 1.1'
17
+ # ...
18
+ end
19
+ ```
20
+
21
+ `spec/rails_helper.rb`
22
+ ```ruby
23
+ # ...
24
+ # Add additional requires below this line. Rails is not loaded until this point!
25
+ require 'graphiti_spec_helpers/rspec'
26
+ # ...
27
+
28
+ RSpec.configure do |config|
29
+ # ...
30
+ config.include GraphitiSpecHelpers::RSpec
31
+ config.include GraphitiSpecHelpers::Sugar
32
+ config.include Graphiti::Rails::TestHelpers
33
+ # ...
34
+ ```
35
+
36
+ Then in your project directory
37
+ ```sh
38
+ $ bundle install
39
+ ```
@@ -19,11 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "graphiti", '>= 1.0.alpha.1'
22
+ spec.add_dependency "rspec", "~> 3.0"
22
23
 
23
24
  spec.add_development_dependency "pry"
24
25
  spec.add_development_dependency "pry-byebug"
25
26
  spec.add_development_dependency "actionpack", "~> 5.0"
26
- spec.add_development_dependency "bundler", "~> 1.11"
27
- spec.add_development_dependency "rake", "~> 10.0"
28
- spec.add_dependency "rspec", "~> 3.0"
27
+ spec.add_development_dependency "rake", "~> 13"
29
28
  end
@@ -27,7 +27,7 @@ module GraphitiSpecHelpers
27
27
 
28
28
  nodes = _jsonapi_included.map { |i| node(from: i) }
29
29
  if type
30
- nodes.select! { |n| n.jsonapi_type == type }
30
+ nodes.select! { |n| n.jsonapi_type == type.to_s }
31
31
  end
32
32
  instance_variable_set(variable, nodes)
33
33
  nodes
@@ -50,23 +50,23 @@ module GraphitiSpecHelpers
50
50
  end
51
51
 
52
52
  def jsonapi_get(url, params: {}, headers: {})
53
- get url, params: params, headers: jsonapi_headers.merge(headers)
53
+ get url_for(url), params: params, headers: jsonapi_headers.merge(headers)
54
54
  end
55
55
 
56
56
  def jsonapi_post(url, payload, headers: {})
57
- post url, params: payload.to_json, headers: jsonapi_headers.merge(headers)
57
+ post url_for(url), params: payload.to_json, headers: jsonapi_headers.merge(headers)
58
58
  end
59
59
 
60
60
  def jsonapi_put(url, payload, headers: {})
61
- put url, params: payload.to_json, headers: jsonapi_headers.merge(headers)
61
+ put url_for(url), params: payload.to_json, headers: jsonapi_headers.merge(headers)
62
62
  end
63
63
 
64
64
  def jsonapi_patch(url, payload, headers: {})
65
- patch url, params: payload.to_json, headers: jsonapi_headers.merge(headers)
65
+ patch url_for(url), params: payload.to_json, headers: jsonapi_headers.merge(headers)
66
66
  end
67
67
 
68
68
  def jsonapi_delete(url, headers: {})
69
- delete url, headers: jsonapi_headers.merge(headers)
69
+ delete url_for(url), headers: jsonapi_headers.merge(headers)
70
70
  end
71
71
 
72
72
  def json_datetime(value)
@@ -27,6 +27,7 @@ module GraphitiSpecHelpers
27
27
  def has_key?(key)
28
28
  @attributes.has_key?(key)
29
29
  end
30
+ alias :key? :has_key?
30
31
 
31
32
  def [](key)
32
33
  @attributes[key] || @attributes[key.to_s]
@@ -39,6 +40,7 @@ module GraphitiSpecHelpers
39
40
  def attributes
40
41
  @attributes
41
42
  end
43
+ alias :to_hash :attributes
42
44
 
43
45
  def method_missing(id, *args, &blk)
44
46
  if @attributes.has_key?(id)
@@ -1,8 +1,35 @@
1
+ require 'rspec/core'
1
2
  require 'graphiti_spec_helpers'
2
3
 
3
- ::RSpec.shared_context 'resource testing', type: :resource do |parameter|
4
- let(:resource) { described_class }
5
- let(:params) { {} }
4
+ class GraphitiContextProxy < OpenStruct
5
+ def initialize(proxied, *args)
6
+ @__proxied = proxied
7
+ super(*args)
8
+ end
9
+
10
+ # variables defined in the rspec context should remain lazy
11
+ def current_user
12
+ super || __proxied_current_user
13
+ end
14
+
15
+ def params
16
+ super || __proxied_params
17
+ end
18
+
19
+ private
20
+
21
+ def __proxied_current_user
22
+ @__proxied.current_user if @__proxied.respond_to?(:current_user)
23
+ end
24
+
25
+ def __proxied_params
26
+ @__proxied.params if @__proxied.respond_to?(:params)
27
+ end
28
+ end
29
+
30
+ ::RSpec.shared_context "resource testing", type: :resource do |parameter|
31
+ let(:resource) { described_class }
32
+ let(:params) { {} }
6
33
 
7
34
  around do |e|
8
35
  begin
@@ -18,12 +45,7 @@ require 'graphiti_spec_helpers'
18
45
  end
19
46
 
20
47
  def graphiti_context
21
- @graphiti_context ||= begin
22
- ctx = OpenStruct.new
23
- ctx.current_user = current_user if respond_to?(:current_user)
24
- ctx.params = params
25
- ctx
26
- end
48
+ @graphiti_context ||= GraphitiContextProxy.new(self)
27
49
  end
28
50
 
29
51
  # If you need to set context:
@@ -54,7 +76,7 @@ require 'graphiti_spec_helpers'
54
76
  end
55
77
  end
56
78
 
57
- RSpec.shared_context 'remote api' do
79
+ ::RSpec.shared_context 'remote api' do
58
80
  # Fake request headers
59
81
  around do |e|
60
82
  ctx = OpenStruct.new \
@@ -1,3 +1,3 @@
1
1
  module GraphitiSpecHelpers
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
data/package.json ADDED
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "graphiti_spec_helpers",
3
+ "version": "1.1.0",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "git+https://github.com/graphiti-api/graphiti_spec_helpers.git"
7
+ },
8
+ "license": "MIT",
9
+ "bugs": {
10
+ "url": "https://github.com/graphiti-api/graphiti_spec_helpers/issues"
11
+ },
12
+ "homepage": "https://github.com/graphiti-api/graphiti_spec_helpers",
13
+ "scripts": {
14
+ "semantic-release": "semantic-release"
15
+ },
16
+ "devDependencies": {
17
+ "semantic-release-rubygem": "^1.2.0",
18
+ "semantic-release": "^19.0.3",
19
+ "@semantic-release/changelog": "^6.0.1",
20
+ "@semantic-release/git": "^10.0.1"
21
+ },
22
+ "release": {
23
+ "branches": [
24
+ "master",
25
+ {
26
+ "name": "beta",
27
+ "prerelease": true
28
+ },
29
+ {
30
+ "name": "alpha",
31
+ "prerelease": true
32
+ }
33
+ ],
34
+ "plugins": [
35
+ [
36
+ "@semantic-release/commit-analyzer",
37
+ {
38
+ "releaseRules": [
39
+ {
40
+ "type": "*!",
41
+ "release": "major"
42
+ },
43
+ {
44
+ "type": "feat",
45
+ "release": "minor"
46
+ },
47
+ {
48
+ "type": "build",
49
+ "release": "patch"
50
+ },
51
+ {
52
+ "type": "ci",
53
+ "release": "patch"
54
+ },
55
+ {
56
+ "type": "chore",
57
+ "release": "patch"
58
+ },
59
+ {
60
+ "type": "docs",
61
+ "release": "patch"
62
+ },
63
+ {
64
+ "type": "refactor",
65
+ "release": "patch"
66
+ },
67
+ {
68
+ "type": "style",
69
+ "release": "patch"
70
+ },
71
+ {
72
+ "type": "test",
73
+ "release": "patch"
74
+ }
75
+ ],
76
+ "parserOpts": {
77
+ "noteKeywords": [
78
+ "BREAKING CHANGE",
79
+ "BREAKING CHANGES",
80
+ "BREAKING",
81
+ "BREAKING CHANGE!",
82
+ "BREAKING CHANGES!",
83
+ "BREAKING!"
84
+ ]
85
+ }
86
+ }
87
+ ],
88
+ "@semantic-release/release-notes-generator",
89
+ [
90
+ "@semantic-release/changelog",
91
+ {
92
+ "changelogTitle": "graphiti changelog",
93
+ "changelogFile": "CHANGELOG.md"
94
+ }
95
+ ],
96
+ "semantic-release-rubygem",
97
+ "@semantic-release/github",
98
+ [
99
+ "@semantic-release/git",
100
+ {
101
+ "assets": [
102
+ "CHANGELOG.md"
103
+ ],
104
+ "message": "${nextRelease.version} CHANGELOG [skip ci]\n\n${nextRelease.notes}"
105
+ }
106
+ ]
107
+ ],
108
+ "debug": true,
109
+ "dryRun": false
110
+ }
111
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphiti_spec_helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-28 00:00:00.000000000 Z
11
+ date: 2025-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphiti
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.0.alpha.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: pry
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,48 +80,20 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '5.0'
69
- - !ruby/object:Gem::Dependency
70
- name: bundler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.11'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.11'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '10.0'
89
+ version: '13'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '10.0'
97
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '3.0'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '3.0'
96
+ version: '13'
111
97
  description: Easily test JSONAPIs and Graphiti Resources
112
98
  email:
113
99
  - lrichmond1@bloomberg.net
@@ -115,9 +101,10 @@ executables: []
115
101
  extensions: []
116
102
  extra_rdoc_files: []
117
103
  files:
104
+ - ".github/workflows/ci.yml"
105
+ - ".github/workflows/release.yml"
118
106
  - ".gitignore"
119
107
  - ".rspec"
120
- - ".travis.yml"
121
108
  - Gemfile
122
109
  - LICENSE.txt
123
110
  - README.md
@@ -133,6 +120,7 @@ files:
133
120
  - lib/graphiti_spec_helpers/node.rb
134
121
  - lib/graphiti_spec_helpers/rspec.rb
135
122
  - lib/graphiti_spec_helpers/version.rb
123
+ - package.json
136
124
  homepage:
137
125
  licenses:
138
126
  - MIT
@@ -152,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
140
  - !ruby/object:Gem::Version
153
141
  version: '0'
154
142
  requirements: []
155
- rubygems_version: 3.2.22
143
+ rubygems_version: 3.3.27
156
144
  signing_key:
157
145
  specification_version: 4
158
146
  summary: Spec helpers for Graphiti and JSONAPI
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.6.3
4
- before_install: gem install bundler -v 1.11.2