fron 0.1.4 → 0.2.0rc1
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 +3 -0
- data/.reek +11 -0
- data/.rubocop.yml +54 -0
- data/.travis.yml +11 -0
- data/.yardopts +4 -0
- data/Changelog.md +7 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +106 -15
- data/Rakefile +19 -15
- data/Readme.md +23 -0
- data/fron.gemspec +2 -2
- data/lib/fron/version.rb +2 -1
- data/opal/fron.rb +5 -5
- data/opal/fron/core.rb +3 -10
- data/opal/fron/core/behaviors/components.rb +42 -0
- data/opal/fron/core/behaviors/events.rb +27 -0
- data/opal/fron/core/behaviors/routes.rb +59 -0
- data/opal/fron/core/component.rb +64 -90
- data/opal/fron/core/eventable.rb +18 -0
- data/opal/fron/core/logger.rb +10 -1
- data/opal/fron/core_ext.rb +9 -0
- data/opal/fron/core_ext/array.rb +12 -0
- data/opal/fron/core_ext/date.rb +57 -0
- data/opal/fron/core_ext/hash.rb +52 -0
- data/opal/fron/core_ext/kernel.rb +57 -0
- data/opal/fron/core_ext/nil.rb +7 -0
- data/opal/fron/core_ext/numeric.rb +19 -0
- data/opal/fron/core_ext/object.rb +11 -0
- data/opal/fron/core_ext/proc.rb +19 -0
- data/opal/fron/{core-ext → core_ext}/string.rb +4 -0
- data/opal/fron/dom.rb +15 -13
- data/opal/fron/dom/document.rb +22 -6
- data/opal/fron/dom/element.rb +105 -67
- data/opal/fron/dom/event.rb +110 -40
- data/opal/fron/dom/{file-reader.rb → file_reader.rb} +6 -1
- data/opal/fron/dom/fragment.rb +2 -0
- data/opal/fron/dom/modules/attributes.rb +43 -0
- data/opal/fron/dom/modules/classlist.rb +26 -13
- data/opal/fron/dom/modules/dimensions.rb +79 -9
- data/opal/fron/dom/modules/element_accessor.rb +35 -0
- data/opal/fron/dom/modules/events.rb +67 -20
- data/opal/fron/dom/node.rb +98 -39
- data/opal/fron/dom/nodelist.rb +9 -2
- data/opal/fron/dom/style.rb +23 -2
- data/opal/fron/dom/text.rb +4 -0
- data/opal/fron/dom/window.rb +31 -2
- data/opal/fron/event_mock.rb +54 -0
- data/opal/fron/js/syntetic_event.js +16 -0
- data/opal/fron/request.rb +2 -2
- data/opal/fron/request/request.rb +77 -14
- data/opal/fron/request/response.rb +33 -6
- data/opal/fron/storage.rb +1 -1
- data/opal/fron/storage/local_storage.rb +54 -0
- data/opal/fron/utils/drag.rb +135 -0
- data/opal/fron/utils/keyboard.rb +70 -0
- data/opal/fron/utils/point.rb +78 -0
- data/opal/fron/utils/render_proc.rb +27 -0
- data/spec/core-ext/array_spec.rb +15 -0
- data/spec/core-ext/date_spec.rb +54 -0
- data/spec/core-ext/hash_spec.rb +18 -2
- data/spec/core-ext/kernel_spec.rb +57 -0
- data/spec/core-ext/nil_spec.rb +9 -0
- data/spec/core-ext/numeric_spec.rb +25 -0
- data/spec/core-ext/proc_spec.rb +15 -0
- data/spec/core-ext/string_spec.rb +11 -0
- data/spec/core/behaviors/events_spec.rb +25 -0
- data/spec/core/behaviors/routes_spec.rb +59 -0
- data/spec/core/component_inheritance_spec.rb +26 -16
- data/spec/core/component_spec.rb +25 -29
- data/spec/core/eventable_spec.rb +19 -19
- data/spec/core/logger_spec.rb +5 -6
- data/spec/dom/document_spec.rb +4 -5
- data/spec/dom/element_spec.rb +106 -15
- data/spec/dom/event_spec.rb +101 -61
- data/spec/dom/file_reader_spec.rb +11 -0
- data/spec/dom/fragment_spec.rb +3 -4
- data/spec/dom/instance_retaining_spec.rb +58 -0
- data/spec/dom/modules/classlist_spec.rb +18 -19
- data/spec/dom/modules/dimensions_spec.rb +87 -22
- data/spec/dom/modules/events_spec.rb +22 -8
- data/spec/dom/node_spec.rb +25 -17
- data/spec/dom/nodelist_spec.rb +2 -3
- data/spec/dom/style_spec.rb +6 -5
- data/spec/dom/text_spec.rb +4 -3
- data/spec/dom/window_spec.rb +24 -9
- data/spec/js/mocks.js +14 -0
- data/spec/request/request_spec.rb +34 -15
- data/spec/request/response_spec.rb +9 -10
- data/spec/spec_helper.rb +11 -0
- data/spec/storage/{local-storage_spec.rb → local_storage_spec.rb} +6 -7
- data/spec/utils/drag_spec.rb +136 -0
- data/spec/utils/keyboard_spec.rb +75 -0
- data/spec/utils/point_spec.rb +55 -0
- data/spec/utils/render_proc_spec.rb +18 -0
- metadata +58 -36
- data/docs/application.md +0 -7
- data/docs/configuration.md +0 -29
- data/docs/controllers.md +0 -35
- data/docs/routing.md +0 -63
- data/opal/fron/core-ext.rb +0 -5
- data/opal/fron/core-ext/hash.rb +0 -31
- data/opal/fron/core-ext/kernel.rb +0 -10
- data/opal/fron/core-ext/numeric.rb +0 -9
- data/opal/fron/core-ext/proc.rb +0 -9
- data/opal/fron/core/adapters/local.rb +0 -43
- data/opal/fron/core/adapters/rails.rb +0 -65
- data/opal/fron/core/application.rb +0 -42
- data/opal/fron/core/configuration.rb +0 -29
- data/opal/fron/core/controller.rb +0 -41
- data/opal/fron/core/model.rb +0 -90
- data/opal/fron/core/router.rb +0 -86
- data/opal/fron/storage/local-storage.rb +0 -34
- data/spec/core/adapter/local_spec.rb +0 -65
- data/spec/core/adapter/rails_spec.rb +0 -77
- data/spec/core/application_spec.rb +0 -35
- data/spec/core/configuration_spec.rb +0 -20
- data/spec/core/controlller_spec.rb +0 -68
- data/spec/core/model_spec.rb +0 -125
- data/spec/core/router_spec.rb +0 -124
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'fron/storage'
|
2
|
-
require 'fron/core'
|
3
|
-
|
4
|
-
describe Fron::Adapters::LocalAdapter do
|
5
|
-
|
6
|
-
subject { described_class.new({fields: [:name]}) }
|
7
|
-
let(:proc) { Proc.new {} }
|
8
|
-
|
9
|
-
describe "#all" do
|
10
|
-
it "should call localStorage#all" do
|
11
|
-
Fron::Storage::LocalStorage.should receive(:all).once
|
12
|
-
subject.all &proc
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should run the block" do
|
16
|
-
proc.should receive(:call)
|
17
|
-
subject.all &proc
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "#get" do
|
22
|
-
it "should call localStorage#get" do
|
23
|
-
Fron::Storage::LocalStorage.should receive(:get).once
|
24
|
-
subject.get 0, &proc
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should run the block" do
|
28
|
-
proc.should receive(:call)
|
29
|
-
subject.get 0, &proc
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "#set" do
|
34
|
-
it "should call localStorage#set" do
|
35
|
-
Fron::Storage::LocalStorage.should receive(:set).once
|
36
|
-
subject.set double(id: 0), {name: 'test'}, &proc
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should run the block with nil if there are no errors" do
|
40
|
-
proc.should receive(:call).with nil, {name: 'test', id: 0}
|
41
|
-
subject.set double(id: 0), {name: 'test'}, &proc
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should run the block with erros if ther are any" do
|
45
|
-
proc.should receive(:call).with({name: ["can't be blank"]}, {})
|
46
|
-
subject.set double(id: 0), {name: ''}, &proc
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should add id if there isn't any" do
|
50
|
-
result = subject.set double(id: nil), {name: ''}, &proc
|
51
|
-
result[:id].should_not be nil
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe "#validate" do
|
56
|
-
it "should return errors for undefined fields" do
|
57
|
-
subject.validate.should eq({name: ["can't be blank"]})
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should return errors for empty fields" do
|
61
|
-
subject.validate({name: ''}).should eq({name: ["can't be blank"]})
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
@@ -1,77 +0,0 @@
|
|
1
|
-
require 'fron/core'
|
2
|
-
require 'fron/storage'
|
3
|
-
|
4
|
-
class TestModel < Fron::Model
|
5
|
-
end
|
6
|
-
|
7
|
-
describe Fron::Adapters::RailsAdapter do
|
8
|
-
|
9
|
-
subject do
|
10
|
-
described_class.new({
|
11
|
-
fields: [:name],
|
12
|
-
endpoint: "test",
|
13
|
-
resources: "users",
|
14
|
-
resource: "user"
|
15
|
-
})
|
16
|
-
end
|
17
|
-
|
18
|
-
let(:proc) { Proc.new {} }
|
19
|
-
let(:request) { double :request }
|
20
|
-
let(:model) { TestModel.new({ id: 0 }) }
|
21
|
-
let(:newModel) { TestModel.new }
|
22
|
-
|
23
|
-
before do
|
24
|
-
subject.instance_variable_set "@request", request
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "#all" do
|
28
|
-
it "should call GET request to resources url" do
|
29
|
-
request.should receive(:url=).with "test/users.json"
|
30
|
-
request.should receive(:get) do |&block|
|
31
|
-
block.call double json: true
|
32
|
-
end
|
33
|
-
proc.should receive(:call)
|
34
|
-
subject.all &proc
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#get" do
|
39
|
-
it "should call GET request to resource url" do
|
40
|
-
request.should receive(:url=).with "test/users/0"
|
41
|
-
request.should receive(:get) do |&block|
|
42
|
-
block.call double json: true
|
43
|
-
end
|
44
|
-
proc.should receive(:call)
|
45
|
-
subject.get '0', &proc
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "#set" do
|
50
|
-
it "should call POST request for new record" do
|
51
|
-
request.should receive(:url=).with "test/users.json"
|
52
|
-
request.should receive(:post) do |&block|
|
53
|
-
block.call double status: 201, json: ''
|
54
|
-
end
|
55
|
-
proc.should receive(:call)
|
56
|
-
subject.set newModel, {}, &proc
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should call PUT request for exsistsing record" do
|
60
|
-
request.should receive(:url=).with "test/users/0"
|
61
|
-
request.should receive(:put) do |&block|
|
62
|
-
block.call double status: 201, json: ''
|
63
|
-
end
|
64
|
-
proc.should receive(:call)
|
65
|
-
subject.set model, {}, &proc
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should call block with error" do
|
69
|
-
request.should receive(:url=).with "test/users/0"
|
70
|
-
request.should receive(:put) do |&block|
|
71
|
-
block.call double status: 422, json: 'error'
|
72
|
-
end
|
73
|
-
proc.should receive(:call).with 'error', 'error'
|
74
|
-
subject.set model, {}, &proc
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'fron/core'
|
2
|
-
|
3
|
-
class TestApplication < Fron::Application
|
4
|
-
config.title = 'Test Application'
|
5
|
-
config.logger.level = :error
|
6
|
-
end
|
7
|
-
|
8
|
-
describe Fron::Application do
|
9
|
-
|
10
|
-
subject { TestApplication.new }
|
11
|
-
|
12
|
-
after do
|
13
|
-
subject.config.app.remove!
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "#initialize" do
|
17
|
-
it 'should insert the application into the DOM' do
|
18
|
-
subject.config.app.parent.should_not be nil
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'should set the title of the document' do
|
22
|
-
DOM::Document.title.should eq 'Test Application'
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#loadExternalStylesheets" do
|
27
|
-
it 'should load external stylesheets' do
|
28
|
-
subject.config.stylesheets = ['test']
|
29
|
-
subject.send(:loadExternalStylesheets)
|
30
|
-
link = DOM::Document.head.find('link')
|
31
|
-
link['href'].should be 'test'
|
32
|
-
link.remove!
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'fron'
|
2
|
-
|
3
|
-
describe Fron::Configuration do
|
4
|
-
|
5
|
-
subject { described_class.new }
|
6
|
-
|
7
|
-
describe '#initialize' do
|
8
|
-
it 'should create a logger' do
|
9
|
-
subject.logger.class.should be Fron::Logger
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'should create the application container' do
|
13
|
-
subject.app.class.should be Fron::Configuration::App
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'should create the yield container' do
|
17
|
-
subject.main.class.should be Fron::Configuration::Yield
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'fron/core'
|
2
|
-
|
3
|
-
class TestController < Fron::Controller
|
4
|
-
end
|
5
|
-
|
6
|
-
describe TestController do
|
7
|
-
|
8
|
-
subject { described_class.new }
|
9
|
-
|
10
|
-
describe 'DSL' do
|
11
|
-
|
12
|
-
subject { TestController }
|
13
|
-
|
14
|
-
describe '#base' do
|
15
|
-
it 'should set the baseComponent' do
|
16
|
-
subject.base Fron::Component
|
17
|
-
subject.baseComponent.should eq Fron::Component
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe '#route' do
|
22
|
-
it 'should set routes map' do
|
23
|
-
allow(Fron::Router).to receive(:map)
|
24
|
-
subject.route '/', :test
|
25
|
-
subject.routes.should_not be nil
|
26
|
-
subject.routes.length.should eq 1
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should call Router.map' do
|
30
|
-
expect(Fron::Router).to receive(:map).once
|
31
|
-
subject.route '/a', :a
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe '#on' do
|
36
|
-
it 'should set events array' do
|
37
|
-
subject.on :event, :action
|
38
|
-
subject.events.should_not be nil
|
39
|
-
subject.events[0].should eq({name: :event, action: :action})
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
describe '#before' do
|
44
|
-
it 'should set before filters' do
|
45
|
-
subject.before :method, :action
|
46
|
-
subject.beforeFilters.should_not be nil
|
47
|
-
subject.beforeFilters[0].should eq({method: :method, actions: :action})
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe "#initialize" do
|
53
|
-
it 'should create Element if no component is specified' do
|
54
|
-
TestController.base nil
|
55
|
-
subject.base.class.should eq DOM::Element
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'should create component if component is specified' do
|
59
|
-
TestController.base Fron::Component
|
60
|
-
subject.base.class.should eq Fron::Component
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'should call Eventable.on for event' do
|
64
|
-
expect(Fron::Eventable).to receive(:on).once.with 'event'
|
65
|
-
subject
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
data/spec/core/model_spec.rb
DELETED
@@ -1,125 +0,0 @@
|
|
1
|
-
require 'fron/core'
|
2
|
-
|
3
|
-
class TestModel < Fron::Model
|
4
|
-
end
|
5
|
-
|
6
|
-
class MockAdapter
|
7
|
-
def all(&block)
|
8
|
-
block.call [{},{}]
|
9
|
-
end
|
10
|
-
|
11
|
-
def get(&block)
|
12
|
-
block.call({name: 'User'})
|
13
|
-
end
|
14
|
-
|
15
|
-
def set(model,data,&block)
|
16
|
-
if model.id == 0
|
17
|
-
block.call(nil, data)
|
18
|
-
else
|
19
|
-
block.call({errors: true}, {})
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe TestModel do
|
25
|
-
|
26
|
-
subject { described_class }
|
27
|
-
|
28
|
-
describe "DSL" do
|
29
|
-
describe "#adapter" do
|
30
|
-
it "should set adapter" do
|
31
|
-
subject.adapter MockAdapter
|
32
|
-
subject.adapterObject.should_not be nil
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "#field" do
|
37
|
-
it "should set fields array" do
|
38
|
-
subject.field :name
|
39
|
-
subject.fields.should_not be nil
|
40
|
-
subject.fields.should include(:name)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should define methods" do
|
44
|
-
subject.field :description
|
45
|
-
subject.instance_methods.should include(:description)
|
46
|
-
subject.instance_methods.should include(:description=)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe "Class Methods" do
|
52
|
-
describe "#all" do
|
53
|
-
it "should call adapter#call" do
|
54
|
-
subject.adapterObject.should receive(:all)
|
55
|
-
subject.all
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should call new on self class for items" do
|
59
|
-
subject.should receive(:new).twice
|
60
|
-
subject.adapterObject.should receive(:all).and_call_original
|
61
|
-
subject.all do end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "#find" do
|
66
|
-
it "should return class instance" do
|
67
|
-
subject.adapterObject.should receive(:get).and_call_original
|
68
|
-
subject.find do |instance|
|
69
|
-
instance.class.should eq described_class
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should merge user data" do
|
74
|
-
subject.adapterObject.should receive(:get).and_call_original
|
75
|
-
subject.find do |instance|
|
76
|
-
instance.name.should eq 'User'
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe "Instance Methods" do
|
83
|
-
subject { described_class.new({name: 'Test'}) }
|
84
|
-
|
85
|
-
describe "#initialize" do
|
86
|
-
it "should set data" do
|
87
|
-
subject.name.should eq 'Test'
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
describe "#update" do
|
92
|
-
it "should call adapter#set" do
|
93
|
-
described_class.adapterObject.should receive(:set).and_call_original
|
94
|
-
subject.update
|
95
|
-
end
|
96
|
-
|
97
|
-
it "should merge user data" do
|
98
|
-
described_class.adapterObject.should receive(:set).and_call_original
|
99
|
-
subject.id = 0
|
100
|
-
subject.update name: "User" do
|
101
|
-
subject.errors.should be nil
|
102
|
-
subject.name.should eq 'User'
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
it "should set errors" do
|
107
|
-
subject.id == 2
|
108
|
-
subject.update do
|
109
|
-
subject.errors.should_not be nil
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
describe "#dirty?" do
|
115
|
-
it "should return true if there is no id" do
|
116
|
-
subject.dirty?.should eq true
|
117
|
-
end
|
118
|
-
|
119
|
-
it "should return false if there is and id" do
|
120
|
-
subject.id = 0
|
121
|
-
subject.dirty?.should eq false
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
data/spec/core/router_spec.rb
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
require 'fron/core'
|
2
|
-
|
3
|
-
module Fron
|
4
|
-
class Router
|
5
|
-
attr_reader :routes
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
class TestRouteController < Fron::Controller
|
10
|
-
route "show/:id", :show
|
11
|
-
route "*", :test
|
12
|
-
|
13
|
-
def show
|
14
|
-
end
|
15
|
-
def test
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe Fron::Router do
|
20
|
-
|
21
|
-
subject { described_class.new [], config }
|
22
|
-
let(:window) { DOM::Window }
|
23
|
-
let(:window_listeners) {window.instance_variable_get("@listeners")}
|
24
|
-
let(:controller) { TestRouteController.new }
|
25
|
-
let(:config) { double :config, {
|
26
|
-
injectBlock: nil,
|
27
|
-
logger: double(:logger,info: true),
|
28
|
-
main: double(:main, :"<<" => true, "empty" => true)
|
29
|
-
}
|
30
|
-
}
|
31
|
-
|
32
|
-
before { window.off }
|
33
|
-
|
34
|
-
describe "DSL" do
|
35
|
-
describe "#map" do
|
36
|
-
it "should retrun '*' path for action only" do
|
37
|
-
result = described_class.map :test
|
38
|
-
result[:path].should eq "*"
|
39
|
-
result[:action].should eq :test
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should return regexp for path" do
|
43
|
-
result = described_class.map "/test", :test
|
44
|
-
result[:path][:regexp].should eq Regexp.new "^/test"
|
45
|
-
result[:path][:map].should eq []
|
46
|
-
result[:action].should eq :test
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'should parse string as action' do
|
50
|
-
result = described_class.map :test
|
51
|
-
result[:action].should eq :test
|
52
|
-
result[:controller].should be nil
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'should parse controllers as controller' do
|
56
|
-
result = described_class.map Fron::Controller
|
57
|
-
result[:controller].should_not be nil
|
58
|
-
result[:controller].class.should eq Fron::Controller
|
59
|
-
result[:action].should eq nil
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe "#route" do
|
65
|
-
it "should deletage if controller is given" do
|
66
|
-
subject.routes << {path: "*", controller: controller}
|
67
|
-
subject.should receive(:route).twice.and_call_original
|
68
|
-
subject.route
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should call controller action" do
|
72
|
-
subject.routes << {path: "*", controller: controller}
|
73
|
-
controller.should receive(:test).once
|
74
|
-
subject.route
|
75
|
-
end
|
76
|
-
|
77
|
-
it "should call controller action with params" do
|
78
|
-
controller.should receive(:show).once.with({id: '10'})
|
79
|
-
subject.routes << {path: "*", controller: controller}
|
80
|
-
subject.route 'show/10'
|
81
|
-
end
|
82
|
-
|
83
|
-
it "should remove the matched portion of the hash" do
|
84
|
-
controller.should receive(:show).once.with({id: '10'})
|
85
|
-
subject.routes << {path: {regexp: Regexp.new("test/")}, controller: controller}
|
86
|
-
subject.route 'test/show/10'
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
describe "#applyRoute" do
|
91
|
-
it "should call before methods" do
|
92
|
-
controller.should receive(:empty).once
|
93
|
-
subject.applyRoute controller, {action: 'show'}
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should call action method" do
|
97
|
-
controller.should receive(:show).once
|
98
|
-
subject.applyRoute controller, {action: 'show'}
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'should log the route' do
|
102
|
-
config.logger.should receive(:info).once
|
103
|
-
subject.applyRoute controller, {action: 'show'}
|
104
|
-
end
|
105
|
-
|
106
|
-
it "should append it the the main" do
|
107
|
-
config.main.should receive(:<<).once
|
108
|
-
subject.applyRoute controller, {action: 'show'}
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
describe "#initalize" do
|
113
|
-
it 'should listen on window load' do
|
114
|
-
subject
|
115
|
-
window_listeners['load'].should_not be nil
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'should listen on window hashchange' do
|
119
|
-
subject
|
120
|
-
window_listeners['hashchange'].should_not be nil
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
end
|