spec/gon/global_spec.rb in gon-5.2.3 vs spec/gon/global_spec.rb in gon-6.0.0
- old
+ new
@@ -16,14 +16,14 @@
expect(Gon.global.c).to eq(3)
expect(Gon.global.all_variables).to eq({ 'a' => 1, 'b' => 2, 'c' => 3 })
end
it 'supports all data types' do
- Gon.global.clear
Gon.global.int = 1
Gon.global.float = 1.1
Gon.global.string = 'string'
+ Gon.global.symbol = :symbol
Gon.global.array = [1, 'string']
Gon.global.hash_var = { :a => 1, :b => '2' }
Gon.global.hash_w_array = { :a => [2, 3] }
Gon.global.klass = Hash
end
@@ -32,95 +32,99 @@
describe '#include_gon' do
before(:each) do
Gon.clear
- Gon.global.clear
- expect(ActionView::Base.
- instance_methods.
- map(&:to_s).
- include?('include_gon')).to eq(true)
+ expect(ActionView::Base.instance_methods).to include(:include_gon)
@base = ActionView::Base.new
@base.request = request
end
it 'outputs correct js with an integer' do
Gon.global.int = 1
- expect(@base.include_gon).to eq("<script type=\"text/javascript\">" +
+ expect(@base.include_gon).to eq("<script>" +
"\n//<![CDATA[\n" +
"window.gon={};" +
"gon.global={\"int\":1};" +
"\n//]]>\n" +
"</script>")
end
it 'outputs correct js with an integer and integer in Gon' do
Gon.int = 1
Gon.global.int = 1
- expect(@base.include_gon).to eq("<script type=\"text/javascript\">" +
+ expect(@base.include_gon).to eq("<script>" +
"\n//<![CDATA[\n" +
"window.gon={};" +
"gon.global={\"int\":1};" +
"gon.int=1;" +
"\n//]]>\n" +
"</script>")
end
it 'outputs correct js with a string' do
Gon.global.str = %q(a'b"c)
- expect(@base.include_gon).to eq("<script type=\"text/javascript\">" +
+ expect(@base.include_gon).to eq("<script>" +
"\n//<![CDATA[\n" +
"window.gon={};" +
"gon.global={\"str\":\"a'b\\\"c\"};" +
"\n//]]>\n" +
"</script>")
end
it 'outputs correct js with a script string' do
Gon.global.str = %q(</script><script>alert('!')</script>)
escaped_str = "\\u003c/script\\u003e\\u003cscript\\u003ealert('!')\\u003c/script\\u003e"
- expect(@base.include_gon).to eq("<script type=\"text/javascript\">" +
+ expect(@base.include_gon).to eq("<script>" +
"\n//<![CDATA[\n" +
"window.gon={};" +
"gon.global={\"str\":\"#{escaped_str}\"};" +
"\n//]]>\n" +
"</script>")
end
it 'outputs correct js with a unicode line separator' do
Gon.global.str = "\u2028"
- expect(@base.include_gon).to eq("<script type=\"text/javascript\">" +
+ expect(@base.include_gon).to eq("<script>" +
"\n//<![CDATA[\n" +
"window.gon={};" +
"gon.global={\"str\":\"
\"};" +
"\n//]]>\n" +
"</script>")
end
it 'outputs locally overridden value' do
Gon.str = 'local value'
Gon.global.str = 'global value'
- expect(@base.include_gon(global_root: '')).to eq("<script type=\"text/javascript\">" +
+ expect(@base.include_gon(global_root: '')).to eq("<script>" +
"\n//<![CDATA[\n" +
"window.gon={};" +
"gon.str=\"local value\";" +
"\n//]]>\n" +
"</script>")
end
+ it "includes the tag attributes in the script tag" do
+ Gon.global.int = 1
+ expect(@base.include_gon(nonce: 'test')).to eq("<script nonce=\"test\">" +
+ "\n//<![CDATA[\n" +
+ "window.gon={};" +
+ "gon.global={\"int\":1};" +
+ "\n//]]>\n" +
+ "</script>")
+ end
+
end
it 'returns exception if try to set public method as variable' do
- Gon.global.clear
- expect { Gon.global.all_variables = 123 }.to raise_error
- expect { Gon.global.rabl = 123 }.to raise_error
+ expect { Gon.global.all_variables = 123 }.to raise_error(RuntimeError)
+ expect { Gon.global.rabl = 123 }.to raise_error(RuntimeError)
end
context 'with jbuilder and rabl' do
before :each do
- Gon.global.clear
controller.instance_variable_set('@objects', objects)
end
let(:controller) { ActionController::Base.new }
let(:objects) { [1, 2] }
@@ -134,11 +138,11 @@
Gon.global.jbuilder :template => 'spec/test_data/sample.json.jbuilder', :controller => controller
expect(Gon.global.objects.length).to eq(2)
end
it 'should throw exception, if use rabl or jbuilder without :template' do
- expect { Gon.global.rabl }.to raise_error
- expect { Gon.global.jbuilder }.to raise_error
+ expect { Gon.global.rabl }.to raise_error(RuntimeError)
+ expect { Gon.global.jbuilder }.to raise_error(RuntimeError)
end
end
after(:all) do