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 +4 -4
- data/.github/workflows/ci.yml +30 -0
- data/.github/workflows/release.yml +41 -0
- data/Gemfile +5 -1
- data/README.md +33 -0
- data/graphiti_spec_helpers.gemspec +2 -3
- data/lib/graphiti_spec_helpers/helpers.rb +6 -6
- data/lib/graphiti_spec_helpers/node.rb +2 -0
- data/lib/graphiti_spec_helpers/rspec.rb +32 -10
- data/lib/graphiti_spec_helpers/version.rb +1 -1
- data/package.json +111 -0
- metadata +22 -34
- data/.travis.yml +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d80a7dede9b7175fe93dadb5423e427702e13859ac0e2720aff2d5e9b66108fc
|
4
|
+
data.tar.gz: 46d2b838e2e7bcf860230d9445576da82b67217eeaf3c36fc9fe8f7fd75bec01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/README.md
CHANGED
@@ -1,6 +1,39 @@
|
|
1
1
|
# GraphitiSpecHelpers
|
2
2
|
|
3
3
|

|
4
|
+
[](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 "
|
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
|
-
|
4
|
-
|
5
|
-
|
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 ||=
|
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 \
|
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.
|
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:
|
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: '
|
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: '
|
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.
|
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