122 lines
3.6 KiB
JavaScript
122 lines
3.6 KiB
JavaScript
|
/*globals it, describe, beforeEach */
|
||
|
(function () {
|
||
|
'use strict';
|
||
|
|
||
|
var should = require('should'),
|
||
|
assert= require('assert'),
|
||
|
HStore = require('../lib/index.js'),
|
||
|
hstore;
|
||
|
|
||
|
describe('pg-hstore.parse', function () {
|
||
|
beforeEach(function () {
|
||
|
hstore = new HStore();
|
||
|
});
|
||
|
|
||
|
it('should hstore parse an hstore string', function (done) {
|
||
|
var source = '"foo"=>"bar"';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.foo.should.equal('bar');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse an empty hstore string', function (done) {
|
||
|
var source = '';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.should.eql({});
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse an hstore string with multiple values', function (done) {
|
||
|
var source = '"foo"=>"oof","bar"=>"rab","baz"=>"zab"';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.foo.should.equal('oof');
|
||
|
target.bar.should.equal('rab');
|
||
|
target.baz.should.equal('zab');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse an escaped quoted string with quotes', function (done) {
|
||
|
var source = '"foo"=>"\\"bar\\""';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.foo.should.equal('"bar"');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse an escaped quoted string with single quotes', function (done) {
|
||
|
var source = '"foo"=>"\'\'bar\'\'"';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.foo.should.equal('\'bar\'');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse a string with escaped backslashes', function (done) {
|
||
|
var source = '"foo"=>"\\\\f0123"';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.foo.should.equal('\\f0123');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse a string with commas', function (done) {
|
||
|
var source = '"foo"=>"bar,foo,bar"';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.foo.should.equal('bar,foo,bar');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse a string with advanced types', function (done) {
|
||
|
var source = '"foo"=>"{\\"key\\":\\"value\\",\\"key2\\":\\"value\\"}"';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.foo.should.equal('{"key":"value","key2":"value"}');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse a string with NULL values', function (done) {
|
||
|
var source = '"foo"=>"oof","bar"=>NULL,"baz"=>"zab"';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.foo.should.equal('oof');
|
||
|
assert.equal(target.bar, null);
|
||
|
target.baz.should.equal('zab');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse a string with \n values', function (done) {
|
||
|
var source = '"foo"=>"o\rof","bar"=>NULL,"baz"=>"z\nab"';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.foo.should.equal('o\rof');
|
||
|
assert.equal(target.bar, null);
|
||
|
target.baz.should.equal('z\nab');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should hstore parse a string ending with \\', function (done) {
|
||
|
var source = '"url"=>"http://google.com\\\\","foo"=>"bar"';
|
||
|
hstore.parse(source, function (target) {
|
||
|
should.exist(target);
|
||
|
target.url.should.equal('http://google.com\\');
|
||
|
target.foo.should.equal('bar');
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
})();
|