fron 0.1.4 → 0.2.0rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|