strict-option-test.js 1.13 KB
var mocha  = require('mocha')
  , assert = require('chai').assert
  , expect = require('chai').expect
  ;

describe("Testing 'strict' option", function(){
    var dupkeys = '{ "dupkey": "value 1", "dupkey": "value 2"}';
    it("Should show that duplicate keys just get overwritten by default", function(done){
        var JSONbig = require('../index');
        var result = "before";
        function tryParse() {
            result = JSONbig.parse(dupkeys);
        }
        expect(tryParse).to.not.throw("anything");
        expect(result.dupkey).to.equal("value 2");
        done();
    });

    it("Should show that the 'strict' option will fail-fast on duplicate keys", function(done){
        var JSONstrict = require('../index')({"strict": true});
        var result = "before";
        function tryParse() {
            result = JSONstrict.parse(dupkeys);
        }
        expect(tryParse).to.throw({ 
            name: 'SyntaxError',
            message: 'Duplicate key "dupkey"',
            at: 33,
            text: '{ "dupkey": "value 1", "dupkey": "value 2"}' 
        });
        expect(result).to.equal("before");
        done();
    });
});