2019-05-08 15:45:37 +00:00
|
|
|
// Copyright IBM Corp. 2013,2018. All Rights Reserved.
|
2016-04-01 22:25:16 +00:00
|
|
|
// Node module: loopback-datasource-juggler
|
|
|
|
// This file is licensed under the MIT License.
|
|
|
|
// License text available at https://opensource.org/licenses/MIT
|
|
|
|
|
2013-04-06 10:57:12 +00:00
|
|
|
// This test written in mocha+should.js
|
2016-08-22 19:55:22 +00:00
|
|
|
'use strict';
|
2016-12-05 14:14:09 +00:00
|
|
|
|
|
|
|
/* global getSchema:false */
|
2018-12-07 14:54:29 +00:00
|
|
|
const should = require('./init.js');
|
2013-04-06 10:57:12 +00:00
|
|
|
|
2018-12-07 14:54:29 +00:00
|
|
|
const Schema = require('../').Schema;
|
|
|
|
const ModelBuilder = require('../').ModelBuilder;
|
2013-03-19 10:05:38 +00:00
|
|
|
|
2016-04-01 11:48:17 +00:00
|
|
|
describe('JSON property', function() {
|
2018-12-07 14:54:29 +00:00
|
|
|
let dataSource, Model;
|
2013-03-19 10:05:38 +00:00
|
|
|
|
2016-04-01 11:48:17 +00:00
|
|
|
it('should be defined', function() {
|
2014-01-24 17:09:53 +00:00
|
|
|
dataSource = getSchema();
|
2016-08-19 17:46:59 +00:00
|
|
|
Model = dataSource.define('Model', {propertyName: ModelBuilder.JSON});
|
2018-12-07 14:54:29 +00:00
|
|
|
const m = new Model;
|
2014-01-24 17:09:53 +00:00
|
|
|
(new Boolean('propertyName' in m)).should.eql(true);
|
|
|
|
should.not.exist(m.propertyName);
|
|
|
|
});
|
2013-03-19 10:05:38 +00:00
|
|
|
|
2016-04-01 11:48:17 +00:00
|
|
|
it('should accept JSON in constructor and return object', function() {
|
2018-12-07 14:54:29 +00:00
|
|
|
const m = new Model({
|
2016-04-01 11:48:17 +00:00
|
|
|
propertyName: '{"foo": "bar"}',
|
2013-03-19 10:05:38 +00:00
|
|
|
});
|
2014-01-24 17:09:53 +00:00
|
|
|
m.propertyName.should.be.an.Object;
|
|
|
|
m.propertyName.foo.should.equal('bar');
|
|
|
|
});
|
2013-03-19 10:05:38 +00:00
|
|
|
|
2016-04-01 11:48:17 +00:00
|
|
|
it('should accept object in setter and return object', function() {
|
2018-12-07 14:54:29 +00:00
|
|
|
const m = new Model;
|
2016-08-19 17:46:59 +00:00
|
|
|
m.propertyName = {'foo': 'bar'};
|
2014-01-24 17:09:53 +00:00
|
|
|
m.propertyName.should.be.an.Object;
|
|
|
|
m.propertyName.foo.should.equal('bar');
|
|
|
|
});
|
2013-03-19 10:05:38 +00:00
|
|
|
|
2016-04-01 11:48:17 +00:00
|
|
|
it('should accept string in setter and return string', function() {
|
2018-12-07 14:54:29 +00:00
|
|
|
const m = new Model;
|
2014-01-24 17:09:53 +00:00
|
|
|
m.propertyName = '{"foo": "bar"}';
|
|
|
|
m.propertyName.should.be.a.String;
|
|
|
|
m.propertyName.should.equal('{"foo": "bar"}');
|
|
|
|
});
|
2013-03-19 10:05:38 +00:00
|
|
|
});
|