Skip to content

Commit b5a83b4

Browse files
committed
Add some tests
1 parent 8caa288 commit b5a83b4

File tree

3 files changed

+95
-0
lines changed

3 files changed

+95
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# frozen_string_literal: true
2+
3+
class InertiaPropTransformerController < ApplicationController
4+
inertia_config(
5+
prop_transformer: lambda do |props:|
6+
props.deep_transform_keys { |key| key.to_s.upcase }
7+
end
8+
)
9+
10+
def just_props
11+
render inertia: 'TestComponent', props: {
12+
lower_prop: 'lower_value',
13+
parent_hash: {
14+
lower_child_prop: 'lower_child_value',
15+
},
16+
}
17+
end
18+
19+
def props_and_meta
20+
render inertia: 'TestComponent',
21+
props: {
22+
lower_prop: 'lower_value',
23+
},
24+
meta: [
25+
{ name: 'description', content: "Don't transform me!" }
26+
]
27+
end
28+
29+
def no_props
30+
render inertia: 'TestComponent'
31+
end
32+
end

spec/dummy/config/routes.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242
get 'instance_props_test' => 'inertia_rails_mimic#instance_props_test'
4343
get 'default_render_test' => 'inertia_rails_mimic#default_render_test'
4444
get 'transformed_default_render_test' => 'transformed_inertia_rails_mimic#render_test'
45+
get 'prop_transformer_test' => 'inertia_prop_transformer#just_props'
46+
get 'prop_transformer_with_meta_test' => 'inertia_prop_transformer#props_and_meta'
47+
get 'prop_transformer_no_props_test' => 'inertia_prop_transformer#no_props'
4548
get 'default_component_test' => 'inertia_rails_mimic#default_component_test'
4649
get 'default_component_with_props_test' => 'inertia_rails_mimic#default_component_with_props_test'
4750
get 'default_component_with_duplicated_props_test' => 'inertia_rails_mimic#default_component_with_duplicated_props_test'
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../../lib/inertia_rails/rspec'
4+
RSpec.describe 'props can be transformed', type: :request, inertia: true do
5+
let(:headers) do
6+
{
7+
'X-Inertia' => true,
8+
'X-Inertia-Partial-Component' => 'TestComponent',
9+
}
10+
end
11+
12+
context 'props are provided' do
13+
it 'transforms the props' do
14+
get prop_transformer_test_path, headers: headers
15+
16+
expect_inertia.to render_component('TestComponent')
17+
.and have_exact_props({
18+
'LOWER_PROP' => 'lower_value',
19+
'PARENT_HASH' => {
20+
'LOWER_CHILD_PROP' => 'lower_child_value',
21+
},
22+
})
23+
end
24+
end
25+
26+
context 'props and meta are provided' do
27+
it 'transforms the props' do
28+
get prop_transformer_with_meta_test_path, headers: headers
29+
30+
expect_inertia.to render_component('TestComponent')
31+
.and include_props({
32+
'LOWER_PROP' => 'lower_value',
33+
})
34+
end
35+
36+
it 'does not transform the meta' do
37+
get prop_transformer_with_meta_test_path, headers: headers
38+
39+
expect(response.parsed_body['props']['_inertia_meta']).to eq(
40+
[
41+
{
42+
'tagName' => 'meta',
43+
'name' => 'description',
44+
'content' => "Don't transform me!",
45+
'headKey' => 'meta-name-description',
46+
}
47+
]
48+
)
49+
end
50+
end
51+
52+
context 'no props are provided' do
53+
it 'does not error' do
54+
get prop_transformer_no_props_test_path, headers: headers
55+
56+
expect_inertia.to render_component('TestComponent')
57+
.and have_exact_props({})
58+
end
59+
end
60+
end

0 commit comments

Comments
 (0)