Skip to content

Commit 0c71e1f

Browse files
committed
Defferent spec files for different functionality
1 parent 1624117 commit 0c71e1f

File tree

5 files changed

+264
-218
lines changed

5 files changed

+264
-218
lines changed

spec/gon/basic_spec.rb

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
require 'gon'
2+
3+
describe Gon do
4+
5+
before(:each) do
6+
Gon::Request.env = {}
7+
end
8+
9+
describe '#all_variables' do
10+
11+
it 'returns all variables in hash' do
12+
Gon.a = 1
13+
Gon.b = 2
14+
Gon.c = Gon.a + Gon.b
15+
Gon.c.should == 3
16+
Gon.all_variables.should == {'a' => 1, 'b' => 2, 'c' => 3}
17+
end
18+
19+
it 'supports all data types' do
20+
Gon.clear
21+
Gon.int = 1
22+
Gon.float = 1.1
23+
Gon.string = 'string'
24+
Gon.array = [ 1, 'string' ]
25+
Gon.hash_var = { :a => 1, :b => '2'}
26+
Gon.hash_w_array = { :a => [ 2, 3 ] }
27+
Gon.klass = Hash
28+
end
29+
30+
end
31+
32+
describe '#include_gon' do
33+
34+
before(:each) do
35+
Gon.clear
36+
Gon::Request.
37+
instance_variable_set(:@request_id, request.object_id)
38+
ActionView::Base.
39+
instance_methods.
40+
map(&:to_s).
41+
include?('include_gon').should == true
42+
@base = ActionView::Base.new
43+
@base.request = request
44+
end
45+
46+
it 'outputs correct js with an integer' do
47+
Gon.int = 1
48+
@base.include_gon.should == '<script>window.gon = {};' +
49+
'gon.int=1;' +
50+
'</script>'
51+
end
52+
53+
it 'outputs correct js with a string' do
54+
Gon.str = %q(a'b"c)
55+
@base.include_gon.should == '<script>window.gon = {};' +
56+
%q(gon.str="a'b\"c";) +
57+
'</script>'
58+
end
59+
60+
it 'outputs correct js with a script string' do
61+
Gon.str = %q(</script><script>alert('!')</script>)
62+
@base.include_gon.should == '<script>window.gon = {};' +
63+
%q(gon.str="<\\/script><script>alert('!')<\\/script>";) +
64+
'</script>'
65+
end
66+
67+
end
68+
69+
it 'returns exception if try to set public method as variable' do
70+
Gon.clear
71+
lambda { Gon.all_variables = 123 }.should raise_error
72+
lambda { Gon.rabl = 123 }.should raise_error
73+
end
74+
75+
def request
76+
@request ||= double 'request', :env => {}
77+
end
78+
79+
end

spec/gon/gon_spec.rb

Lines changed: 0 additions & 218 deletions
This file was deleted.

spec/gon/jbuilder_spec.rb

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# rabl_spec_rb
2+
require 'gon'
3+
4+
describe Gon do
5+
6+
before(:each) do
7+
Gon::Request.env = {}
8+
end
9+
10+
require 'jbuilder'
11+
require 'gon/jbuilder'
12+
13+
describe '.jbuilder' do
14+
context 'render jbuilder templates' do
15+
16+
before do
17+
Gon.clear
18+
controller.instance_variable_set('@objects', objects)
19+
end
20+
21+
let(:controller) { ActionController::Base.new }
22+
let(:objects) { [1,2] }
23+
24+
it 'render json from jbuilder template' do
25+
Gon.jbuilder 'spec/test_data/sample.json.jbuilder', :controller => controller
26+
Gon.objects.length.should == 2
27+
end
28+
29+
it 'render json from jbuilder template with a partial' do
30+
controller.view_paths << 'spec/test_data'
31+
Gon.jbuilder 'spec/test_data/sample_with_partial.json.jbuilder', :controller => controller
32+
Gon.objects.length.should == 2
33+
end
34+
35+
end
36+
37+
it 'should raise error if you use gon.jbuilder without requiring jbuilder gem' do
38+
Gon.send(:remove_const, :Jbuilder)
39+
40+
expect { Gon.jbuilder 'some_path' }.to raise_error(NameError)
41+
load 'jbuilder.rb'
42+
load 'gon/jbuilder.rb'
43+
end
44+
45+
end
46+
47+
48+
def request
49+
@request ||= double 'request', :env => {}
50+
end
51+
52+
end

0 commit comments

Comments
 (0)