From 79b2a67fb96dd610f9662f62bf09b2833c8d5a92 Mon Sep 17 00:00:00 2001 From: Chris Grigg Date: Sun, 30 Nov 2014 16:11:06 -0500 Subject: [PATCH] Fix double escaping of props --- lib/neo4j-core/cypher_translator.rb | 3 ++- .../neo4j-core/unit/cypher_translator_spec.rb | 2 ++ spec/shared_examples/node_auto_tx.rb | 25 ++++++++++++------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/neo4j-core/cypher_translator.rb b/lib/neo4j-core/cypher_translator.rb index c8ae6900..b792ef86 100644 --- a/lib/neo4j-core/cypher_translator.rb +++ b/lib/neo4j-core/cypher_translator.rb @@ -9,9 +9,10 @@ def escape_value(value) end end + # Like escape_value but it does not wrap the value in quotes def create_escape_value(value) if value.is_a?(String) || value.is_a?(Symbol) - "#{escape_quotes(sanitize_escape_sequences(value.to_s))}" + "#{sanitize_escape_sequences(value.to_s)}" else value end diff --git a/spec/neo4j-core/unit/cypher_translator_spec.rb b/spec/neo4j-core/unit/cypher_translator_spec.rb index 777beb69..664aebfe 100644 --- a/spec/neo4j-core/unit/cypher_translator_spec.rb +++ b/spec/neo4j-core/unit/cypher_translator_spec.rb @@ -26,6 +26,8 @@ "a\b", '\u00b5', "\u00b5", + 'test\\usomething', + "D'Amore-Schamberger", ].each do |s| it "does not change #{s}" do expect(klass.sanitize_escape_sequences(s)).to eq(s) diff --git a/spec/shared_examples/node_auto_tx.rb b/spec/shared_examples/node_auto_tx.rb index ebca5e08..3181a2da 100644 --- a/spec/shared_examples/node_auto_tx.rb +++ b/spec/shared_examples/node_auto_tx.rb @@ -8,20 +8,16 @@ context "with auto commit" do describe "class methods" do describe 'create()' do + subject { Neo4j::Node.create } - subject do - Neo4j::Node.create - end its(:exist?) { should be true } its(:neo_id) { should be_a(Fixnum) } its(:props) { should == {} } end describe 'create(name: "kalle", age: 42)' do + subject { Neo4j::Node.create(name: 'kalle', age: 42) } - subject do - Neo4j::Node.create(name: 'kalle', age: 42) - end its(:exist?) { should be true } its(:neo_id) { should be_a(Fixnum) } its(:props) { should == { name: 'kalle', age: 42} } @@ -32,12 +28,23 @@ end end + describe "create(name: 'D\'Amore-Schamberger')" do + subject { Neo4j::Node.create(name: "D'Amore-Schamberger") } + + it { is_expected.to be_persisted } + its(:props) { is_expected.to eq({ name: "D'Amore-Schamberger" }) } + end + + describe 'create(name: "test\\usomething")' do + subject { Neo4j::Node.create(name: "test\\usomething") } + + it { is_expected.to be_persisted } + its(:props) { is_expected.to eq({ name: "test\\usomething" }) } + end describe 'create(name: "kalle", age: nil)' do + subject { Neo4j::Node.create(name: 'kalle', age: nil) } - subject do - Neo4j::Node.create(name: 'kalle', age: nil) - end it 'read the properties using []' do expect(subject[:name]).to eq('kalle') expect(subject[:age]).to be_nil