inertia_rails 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/.gitignore +7 -0
- data/.rspec +1 -1
- data/CHANGELOG.md +10 -0
- data/inertia_rails.gemspec +4 -1
- data/lib/inertia_rails/inertia_rails.rb +6 -1
- data/lib/inertia_rails/middleware.rb +2 -0
- data/lib/inertia_rails/rspec.rb +117 -0
- data/lib/inertia_rails/version.rb +1 -1
- metadata +46 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fdaebfad8721ec7747b79081270577ca65181b95c3351675387ac133645fe392
|
4
|
+
data.tar.gz: ed0d9bf04ab9af128c4cad90c3e2af57d15ae5a92699f28e5893c9340743e3f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4037238f6ba98d8dc82e8c5d852615a471e9d2396ab292be74740a7b40013c904043e92b4c724fac3d0aa9a47ee4f97f340c567ec2119eacf3fdb748b9097261
|
7
|
+
data.tar.gz: 6bef52dadbe2c8bfef33f8b4027e81219e58ed1263615b6c3fb97e3bb759166a115110237b80f4916b02133399b4bb8e60442ec5a5b7aca6b992ca24c6cd6b2d
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [1.2.0] - 2019-11-1
|
8
|
+
|
9
|
+
### Added
|
10
|
+
|
11
|
+
* Added rspec helpers
|
12
|
+
|
13
|
+
### Fixed
|
14
|
+
|
15
|
+
* Make sure that `inertia_share` properties are reset before each request
|
16
|
+
|
7
17
|
## [1.1.0] - 2019-10-24
|
8
18
|
|
9
19
|
### Changed
|
data/inertia_rails.gemspec
CHANGED
@@ -27,5 +27,8 @@ Gem::Specification.new do |spec|
|
|
27
27
|
|
28
28
|
spec.add_development_dependency "bundler", "~> 2.0"
|
29
29
|
spec.add_development_dependency "rake", "~> 10.0"
|
30
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
30
|
+
spec.add_development_dependency "rspec-rails", "~> 3.0"
|
31
|
+
spec.add_development_dependency "rails"
|
32
|
+
spec.add_development_dependency "rails-controller-testing"
|
33
|
+
spec.add_development_dependency "sqlite3"
|
31
34
|
end
|
@@ -28,6 +28,11 @@ module InertiaRails
|
|
28
28
|
shared_blocks.push(block)
|
29
29
|
end
|
30
30
|
|
31
|
+
def self.reset!
|
32
|
+
self.shared_plain_data = {}
|
33
|
+
self.shared_blocks = []
|
34
|
+
end
|
35
|
+
|
31
36
|
private
|
32
37
|
|
33
38
|
module Configuration
|
@@ -35,7 +40,7 @@ module InertiaRails
|
|
35
40
|
mattr_accessor(:version) { nil }
|
36
41
|
|
37
42
|
def self.evaluated_version
|
38
|
-
version.respond_to?(:call) ? version.call : version
|
43
|
+
self.version.respond_to?(:call) ? self.version.call : self.version
|
39
44
|
end
|
40
45
|
end
|
41
46
|
|
@@ -0,0 +1,117 @@
|
|
1
|
+
require "rspec/core"
|
2
|
+
require "rspec/matchers"
|
3
|
+
|
4
|
+
module InertiaRails
|
5
|
+
module RSpec
|
6
|
+
class InertiaRenderWrapper
|
7
|
+
attr_reader :view_data, :props, :component
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@view_data = nil
|
11
|
+
@props = nil
|
12
|
+
@component = nil
|
13
|
+
end
|
14
|
+
|
15
|
+
def call(params)
|
16
|
+
set_values(params)
|
17
|
+
@render_method&.call(params)
|
18
|
+
end
|
19
|
+
|
20
|
+
def wrap_render(render_method)
|
21
|
+
@render_method = render_method
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
|
27
|
+
def set_values(params)
|
28
|
+
@view_data = params[:locals].except(:page)
|
29
|
+
@props = params[:locals][:page][:props]
|
30
|
+
@component = params[:locals][:page][:component]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module Helpers
|
35
|
+
def inertia
|
36
|
+
raise 'Inertia test helpers aren\'t set up! Make sure you add inertia: true to describe blocks using inertia tests.' unless inertia_tests_setup?
|
37
|
+
|
38
|
+
@_inertia_render_wrapper
|
39
|
+
end
|
40
|
+
|
41
|
+
def expect_inertia
|
42
|
+
expect(inertia)
|
43
|
+
end
|
44
|
+
|
45
|
+
def inertia_wrap_render(render)
|
46
|
+
@_inertia_render_wrapper = InertiaRenderWrapper.new.wrap_render(render)
|
47
|
+
end
|
48
|
+
|
49
|
+
protected
|
50
|
+
|
51
|
+
def inertia_tests_setup?
|
52
|
+
@_inertia_render_wrapper.present?
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
RSpec.configure do |config|
|
59
|
+
config.include ::InertiaRails::RSpec::Helpers
|
60
|
+
|
61
|
+
config.before(:each, inertia: true) do
|
62
|
+
new_renderer = InertiaRails::Renderer.method(:new)
|
63
|
+
allow(InertiaRails::Renderer).to receive(:new) do |component, controller, request, response, render, named_args|
|
64
|
+
new_renderer.call(component, controller, request, response, inertia_wrap_render(render), named_args)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
RSpec::Matchers.define :have_exact_props do |expected_props|
|
70
|
+
match do |inertia|
|
71
|
+
expect(inertia.props).to eq expected_props
|
72
|
+
end
|
73
|
+
|
74
|
+
failure_message do |inertia|
|
75
|
+
"expected inertia props to receive #{expected_props}, instead received #{inertia.props || 'nothing'}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
RSpec::Matchers.define :include_props do |expected_props|
|
80
|
+
match do |inertia|
|
81
|
+
expect(inertia.props).to include expected_props
|
82
|
+
end
|
83
|
+
|
84
|
+
failure_message do |inertia|
|
85
|
+
"expected inertia props to include #{expected_props}, instead received #{inertia.props || 'nothing'}"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
RSpec::Matchers.define :render_component do |expected_component|
|
90
|
+
match do |inertia|
|
91
|
+
expect(inertia.component).to eq expected_component
|
92
|
+
end
|
93
|
+
|
94
|
+
failure_message do |inertia|
|
95
|
+
"expected rendered inertia component to be #{expected_component}, instead received #{inertia.component || 'nothing'}"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
RSpec::Matchers.define :have_exact_view_data do |expected_view_data|
|
100
|
+
match do |inertia|
|
101
|
+
expect(inertia.view_data).to eq expected_view_data
|
102
|
+
end
|
103
|
+
|
104
|
+
failure_message do |inertia|
|
105
|
+
"expected inertia view data to receive #{expected_view_data}, instead received #{inertia.view_data || 'nothing'}"
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
RSpec::Matchers.define :include_view_data do |expected_view_data|
|
110
|
+
match do |inertia|
|
111
|
+
expect(inertia.view_data).to include expected_view_data
|
112
|
+
end
|
113
|
+
|
114
|
+
failure_message do |inertia|
|
115
|
+
"expected inertia view data to include #{expected_view_data}, instead received #{inertia.view_data || 'nothing'}"
|
116
|
+
end
|
117
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inertia_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Knoles
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-
|
13
|
+
date: 2019-11-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -41,7 +41,7 @@ dependencies:
|
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '10.0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
|
-
name: rspec
|
44
|
+
name: rspec-rails
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
@@ -54,6 +54,48 @@ dependencies:
|
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '3.0'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: rails
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rails-controller-testing
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: sqlite3
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
type: :development
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
57
99
|
description:
|
58
100
|
email:
|
59
101
|
- brain@bellawatt.com
|
@@ -82,6 +124,7 @@ files:
|
|
82
124
|
- lib/inertia_rails/inertia_rails.rb
|
83
125
|
- lib/inertia_rails/middleware.rb
|
84
126
|
- lib/inertia_rails/renderer.rb
|
127
|
+
- lib/inertia_rails/rspec.rb
|
85
128
|
- lib/inertia_rails/version.rb
|
86
129
|
homepage: https://github.com/inertiajs/inertia-rails/
|
87
130
|
licenses:
|