Skip to content

Commit

Permalink
Merge pull request #261 from js-data/csp
Browse files Browse the repository at this point in the history
Fixes #258.
  • Loading branch information
jmdobry committed Nov 4, 2015
2 parents 3f962e3 + c6ced66 commit bf774b4
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/datastore/index.js
Expand Up @@ -94,6 +94,7 @@ defaultsPrototype.beforeUpdate = lifecycleNoopCb
defaultsPrototype.beforeValidate = lifecycleNoopCb
defaultsPrototype.bypassCache = false
defaultsPrototype.cacheResponse = !!DSUtils.w
defaultsPrototype.csp = false
defaultsPrototype.clearEmptyQueries = true
defaultsPrototype.computed = {}
defaultsPrototype.defaultAdapter = 'http'
Expand Down
8 changes: 7 additions & 1 deletion src/datastore/sync_methods/defineResource.js
Expand Up @@ -138,14 +138,20 @@ module.exports = function defineResource (definition) {
var _class = def['class'] = DSUtils.pascalCase(def.name)
try {
if (typeof def.useClass === 'function') {
def[_class] = new Function('def', `return function ${_class}() { def.useClass.call(this); }`)(def) // eslint-disable-line
if (def.csp) {
def[_class] = function () { def.useClass.call(this) }
} else {
def[_class] = new Function('def', `return function ${_class}() { def.useClass.call(this); }`)(def) // eslint-disable-line
}
def[_class].prototype = (function (proto) {
function Ctor () {
}

Ctor.prototype = proto
return new Ctor()
})(def.useClass.prototype)
} else if (def.csp) {
def[_class] = function () { }
} else {
def[_class] = new Function(`return function ${_class}() {}`)() // eslint-disable-line
}
Expand Down
13 changes: 13 additions & 0 deletions test/both/datastore/sync_methods/defineResource.test.js
Expand Up @@ -290,4 +290,17 @@ describe('DS#defineResource', function () {
assert.equal(foo.bar.id, 1);
assert.isTrue(wasItActivated);
});
it('should work with csp set to true', function () {
var store = new JSData.DS({
csp: true
});
var User = store.defineResource({
name: 'user'
});
var user = User.createInstance({ name: 'John' });
assert.isTrue(user instanceof User[User.class]);
assert.equal(User[User.class].name, '');

assert.equal(Post[Post.class].name, 'Post');
});
});

0 comments on commit bf774b4

Please sign in to comment.