Skip to content

Commit 8d80ca1

Browse files
committed
in specs use Hyperloop::Component for legacy components
1 parent d434217 commit 8d80ca1

20 files changed

+147
-104
lines changed

ruby/hyper-component/lib/hyperstack/internal/component/class_methods.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,13 @@ def collect_other_params_as(name)
141141

142142
def triggers(name, opts = {})
143143
aka = opts[:alias] || "#{name}!"
144-
name = name =~ /^<(.+)>$/ ? name.gsub(/^<(.+)>$/, '\1') : "on_#{name}"
144+
name = if name =~ /^<(.+)>$/
145+
name.gsub(/^<(.+)>$/, '\1')
146+
elsif Hyperstack::Component::Event::BUILT_IN_EVENTS.include?("on#{name.event_camelize}")
147+
"on#{name.event_camelize}"
148+
else
149+
"on_#{name}"
150+
end
145151
validator.event(name)
146152
define_method(aka) { |*args| props[name]&.call(*args) }
147153
end

ruby/hyper-component/spec/client_features/auto_unmount_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
context 'Of timers' do
55
before(:each) do
66
on_client do
7-
class Mounter < HyperComponent
7+
class Mounter < Hyperloop::Component
88
include Hyperstack::State::Observable
99
param :keep_running
1010
class << self
@@ -29,7 +29,7 @@ def timer_went_off!
2929
end
3030
end
3131
end
32-
class Mounted < HyperComponent
32+
class Mounted < Hyperloop::Component
3333
param :keep_running
3434
after_mount do
3535
if @KeepRunning
@@ -66,7 +66,7 @@ def initialize
6666
end
6767
before_unmount { mutate @state = :unmounted }
6868
end
69-
class Mounter < HyperComponent
69+
class Mounter < Hyperloop::Component
7070
include Hyperstack::State::Observable
7171
before_mount { @observable_object = ObservableObject.new }
7272
render do
@@ -81,7 +81,7 @@ class Mounter < HyperComponent
8181
end
8282
end
8383
end
84-
class Mounted < HyperComponent
84+
class Mounted < Hyperloop::Component
8585
param :observable_object
8686
render do
8787
"Mounted!"

ruby/hyper-component/spec/client_features/base_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
require 'spec_helper'
22

3-
describe 'HyperComponent', js: true do
3+
describe 'Hyperloop::Component', js: true do
44

55
before :each do
66
on_client do
7-
class Foo < HyperComponent
7+
class Foo < Hyperloop::Component
88
before_mount do
99
@instance_data = ["working"]
1010
end

ruby/hyper-component/spec/client_features/children_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,12 @@ def render
133133
describe 'other methods' do
134134
it 'responds to to_proc' do
135135
mount 'Children' do
136-
class ChildTester < HyperComponent
136+
class ChildTester < Hyperloop::Component
137137
render do
138138
DIV(id: :tp, &children)
139139
end
140140
end
141-
class Children < HyperComponent
141+
class Children < Hyperloop::Component
142142
render do
143143
ChildTester { "one".span; "two".span; "three".span }
144144
end
@@ -150,12 +150,12 @@ class Children < HyperComponent
150150
end
151151
it 'responds to render' do
152152
mount 'Children' do
153-
class ChildTester < HyperComponent
153+
class ChildTester < Hyperloop::Component
154154
render do
155155
DIV(id: :tp) { children.render }
156156
end
157157
end
158-
class Children < HyperComponent
158+
class Children < Hyperloop::Component
159159
render do
160160
ChildTester { "one".span; "two".span; "three".span }
161161
end

ruby/hyper-component/spec/client_features/component_spec.rb

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def render
140140
describe 'Misc Methods' do
141141
it 'has a force_update! method' do
142142
mount 'Foo' do
143-
class Foo < HyperComponent
143+
class Foo < Hyperloop::Component
144144
class << self
145145
attr_accessor :render_counter
146146
attr_accessor :instance
@@ -163,7 +163,7 @@ def render
163163

164164
it 'has its force_update! method return itself' do
165165
mount 'Foo' do
166-
class Foo < HyperComponent
166+
class Foo < Hyperloop::Component
167167
class << self
168168
attr_accessor :instance
169169
end
@@ -180,11 +180,11 @@ def render
180180

181181
it 'can buffer an element' do
182182
mount 'Foo' do
183-
class Bar < HyperComponent
183+
class Bar < Hyperloop::Component
184184
param :p
185185
render { DIV { @P.span; children.render } }
186186
end
187-
class Foo < HyperComponent
187+
class Foo < Hyperloop::Component
188188
def render
189189
Bar.insert_element(p: "param") { "child"}
190190
end
@@ -195,11 +195,11 @@ def render
195195

196196
it 'can create an element without buffering' do
197197
mount 'Foo' do
198-
class Bar < HyperComponent
198+
class Bar < Hyperloop::Component
199199
param :p
200200
render { SPAN { @P.span; children.render } }
201201
end
202-
class Foo < HyperComponent
202+
class Foo < Hyperloop::Component
203203
before_mount { @e = Bar.create_element(p: "param") { "child" } }
204204
render { DIV { 2.times { @e.render } } }
205205
end
@@ -209,11 +209,11 @@ class Foo < HyperComponent
209209

210210
it 'has a class components method' do
211211
mount 'Foo' do
212-
class Bar < HyperComponent
212+
class Bar < Hyperloop::Component
213213
param :id
214214
render { inspect }
215215
end
216-
class Baz < HyperComponent
216+
class Baz < Hyperloop::Component
217217
param :id
218218
render { inspect }
219219
end
@@ -240,7 +240,7 @@ def to_s
240240
end
241241
expect_evaluate_ruby("Hyperstack::Component.mounted_components")
242242
.to contain_exactly("Hyperstack::Internal::Component::TopLevelRailsComponent", "Foo", "Bar:1", "Bar:2", "Baz:3", "Baz:4", "BarChild:5", "BarChild:6")
243-
expect_evaluate_ruby("HyperComponent.mounted_components")
243+
expect_evaluate_ruby("Hyperloop::Component.mounted_components")
244244
.to contain_exactly("Bar:1", "Bar:2", "Baz:3", "Baz:4", "BarChild:5", "BarChild:6")
245245
expect_evaluate_ruby("Bar.mounted_components")
246246
.to contain_exactly("Bar:1", "Bar:2", "BarChild:5", "BarChild:6")
@@ -442,7 +442,7 @@ def render
442442
describe 'Anonymous Component' do
443443
it "will not generate spurious warning messages" do
444444
evaluate_ruby do
445-
foo = Class.new(HyperComponent)
445+
foo = Class.new(Hyperloop::Component)
446446
foo.class_eval do
447447
def render; "hello" end
448448
end
@@ -459,7 +459,7 @@ def render; "hello" end
459459
describe 'Render Error Handling' do
460460
it "will generate a message if render returns something other than an Element or a String" do
461461
mount 'Foo' do
462-
class Foo < HyperComponent
462+
class Foo < Hyperloop::Component
463463
def render; Hash.new; end
464464
end
465465
end
@@ -468,7 +468,7 @@ def render; Hash.new; end
468468
end
469469
it "will generate a message if render returns a Component class" do
470470
mount 'Foo' do
471-
class Foo < HyperComponent
471+
class Foo < Hyperloop::Component
472472
def render; Foo; end
473473
end
474474
end
@@ -477,7 +477,7 @@ def render; Foo; end
477477
end
478478
it "will generate a message if more than 1 element is generated" do
479479
mount 'Foo' do
480-
class Foo < HyperComponent
480+
class Foo < Hyperloop::Component
481481
def render; "hello".span; "goodby".span; end
482482
end
483483
end
@@ -486,7 +486,7 @@ def render; "hello".span; "goodby".span; end
486486
end
487487
it "will generate a message if the element generated is not the element returned" do
488488
mount 'Foo' do
489-
class Foo < HyperComponent
489+
class Foo < Hyperloop::Component
490490
def render; "hello".span; "goodby".span.delete; end
491491
end
492492
end
@@ -558,7 +558,7 @@ def render
558558

559559
before(:each) do
560560
on_client do
561-
class Foo < HyperComponent
561+
class Foo < Hyperloop::Component
562562
def needs_update?(next_params, next_state)
563563
next_params.changed?
564564
end
@@ -595,7 +595,7 @@ def needs_update?(next_params, next_state)
595595

596596
before(:each) do
597597
on_client do
598-
class Foo < HyperComponent
598+
class Foo < Hyperloop::Component
599599
def needs_update?(next_params, next_state)
600600
next_state.changed?
601601
end

ruby/hyper-component/spec/client_features/dsl_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@ class Foo
3030

3131
it "can define the render method with the render macro with a application defined container" do
3232
on_client do
33-
class Bar < HyperComponent
33+
class Bar < Hyperloop::Component
3434
param :p1
3535
render { "hello #{@P1}" }
3636
end
37-
class Foo < HyperComponent
37+
class Foo < Hyperloop::Component
3838
render Bar, p1: "fred"
3939
end
4040
end
@@ -166,7 +166,7 @@ def render
166166
mount 'Mod::NestedMod::NestedComp' do
167167
module Mod
168168
module NestedMod
169-
class NestedComp < HyperComponent
169+
class NestedComp < Hyperloop::Component
170170
backtrace :none
171171
render do
172172
Comp(test: 'string')
@@ -184,7 +184,7 @@ class Comp; end
184184
client_option render_on: :both
185185
client_option raise_on_js_errors: :off
186186
expect_evaluate_ruby do
187-
class Foo < HyperComponent
187+
class Foo < Hyperloop::Component
188188
backtrace :none
189189
render do
190190
_undefined_method
@@ -210,7 +210,7 @@ def render
210210
end
211211
end
212212
end
213-
class Foo < HyperComponent
213+
class Foo < Hyperloop::Component
214214
def render
215215
Mod::Bar()
216216
end

ruby/hyper-component/spec/client_features/element_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def render
3636

3737
it 'will subscribe to a component event param' do
3838
evaluate_ruby do
39-
class Foo < HyperComponent
39+
class Foo < Hyperloop::Component
4040
triggers :event
4141
def render
4242
event!
@@ -49,7 +49,7 @@ def render
4949

5050
it 'will subscribe to multiple component event params' do
5151
evaluate_ruby do
52-
class Foo < HyperComponent
52+
class Foo < Hyperloop::Component
5353
triggers :event1
5454
triggers :event2
5555
def render
@@ -74,7 +74,7 @@ def render
7474
render() { return React.createElement("span", null, this.props.onEvent()); }
7575
}')
7676
evaluate_ruby do
77-
class Foo < HyperComponent
77+
class Foo < Hyperloop::Component
7878
imports "NativeComponent"
7979
end
8080
Hyperstack::Component::ReactTestUtils.render_into_document(Hyperstack::Component::ReactAPI.create_element(Foo).on(:event) {'works!'})
@@ -86,7 +86,7 @@ class Foo < HyperComponent
8686
it 'will subscribe to a component event param with a non-default name' do
8787

8888
evaluate_ruby do
89-
class Foo < HyperComponent
89+
class Foo < Hyperloop::Component
9090
triggers '<my_event>', alias: :my_event!
9191
def render
9292
my_event!

ruby/hyper-component/spec/client_features/misc_fixes_spec.rb

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
# rubocop:disable Metrics/BlockLength
44
describe 'React Integration', js: true do
5-
it "The hyper-component gem can use HyperComponent to create components" do
5+
it "The hyper-component gem can use Hyperloop::Component to create components" do
66
mount "TestComp" do
7-
class TestComp < HyperComponent
7+
class TestComp < Hyperloop::Component
88
render(DIV) { 'hello'}
99
end
1010
end
@@ -21,7 +21,7 @@ class TestComp
2121
end
2222
it "The hyper-component gem can use hyper-store state syntax" do
2323
mount "TestComp" do
24-
class TestComp < HyperComponent
24+
class TestComp < Hyperloop::Component
2525
before_mount do
2626
mutate.foo 'hello'
2727
end
@@ -34,7 +34,7 @@ class TestComp < HyperComponent
3434
end
3535
# it "and it can still use the deprecated mutate syntax" do
3636
# mount "TestComp" do
37-
# class TestComp < HyperComponent
37+
# class TestComp < Hyperloop::Component
3838
# before_mount do
3939
# state.foo! 'hello'
4040
# end
@@ -50,7 +50,7 @@ class TestComp < HyperComponent
5050
# end
5151
# it "can use the hyper-store syntax to declare component states" do
5252
# mount "TestComp" do
53-
# class TestComp < HyperComponent
53+
# class TestComp < Hyperloop::Component
5454
# state foo: 'hello'
5555
# render(DIV) do
5656
# " foo = #{state.foo}"
@@ -62,7 +62,7 @@ class TestComp < HyperComponent
6262
# end
6363
# it "can use the hyper-store syntax to declare component states and use deprecated mutate syntax" do
6464
# mount "TestComp" do
65-
# class TestComp < HyperComponent
65+
# class TestComp < Hyperloop::Component
6666
# state foo: true
6767
# after_mount do
6868
# state.foo! 'hello' if state.foo
@@ -76,7 +76,7 @@ class TestComp < HyperComponent
7676
# end
7777
# it "can still use the deprecated syntax to declare component states" do
7878
# mount "TestComp" do
79-
# class TestComp < HyperComponent
79+
# class TestComp < Hyperloop::Component
8080
# define_state foo: 'hello'
8181
# render(DIV) do
8282
# state.foo
@@ -90,7 +90,7 @@ class TestComp < HyperComponent
9090
# end
9191
# it "can use the hyper-store syntax to declare class states" do
9292
# mount "TestComp" do
93-
# class TestComp < HyperComponent
93+
# class TestComp < Hyperloop::Component
9494
# state foo: 'hello', scope: :class, reader: true
9595
# render(DIV) do
9696
# TestComp.foo
@@ -102,7 +102,7 @@ class TestComp < HyperComponent
102102
# end
103103
# it "can still use the deprecated syntax to declare component states" do
104104
# mount "TestComp" do
105-
# class TestComp < HyperComponent
105+
# class TestComp < Hyperloop::Component
106106
# export_state foo: 'hello'
107107
# render(DIV) do
108108
# TestComp.foo
@@ -129,7 +129,7 @@ def render
129129

130130
# DUPLICATE: it 'allows block for life cycle callback' do
131131
# mount "Foo" do
132-
# class Foo < HyperComponent
132+
# class Foo < Hyperloop::Component
133133
# before_mount do
134134
# set_state({ foo: "bar" })
135135
# end
@@ -143,7 +143,7 @@ def render
143143

144144
# DUPLICATE it 'allows kernal method names like "format" to be used as state variable names' do
145145
# mount 'Foo' do
146-
# class Foo < HyperComponent
146+
# class Foo < Hyperloop::Component
147147
# before_mount do
148148
# mutate.format 'hello'
149149
# end

0 commit comments

Comments
 (0)