make $parent access without key return undefined

This commit is contained in:
Hiroyasu Nishiyama 2019-02-05 14:47:30 +09:00
parent 596fbfb517
commit 723e9b3cba
2 changed files with 14 additions and 25 deletions

View File

@ -202,7 +202,7 @@ function getContextStorage(storage) {
function followParentContext(parent, key) {
if (key === "$parent") {
return [parent, ""];
return [parent, undefined];
}
else if (key.startsWith("$parent.")) {
var len = "$parent.".length;
@ -275,24 +275,16 @@ function createContext(id,seed,parent) {
var result = followParentContext(parent, key);
if (result) {
var [ctx, new_key] = result;
if (ctx) {
if (new_key === "") {
if (callback) {
return callback(ctx);
}
else {
return ctx;
}
}
if (ctx && new_key) {
return ctx.get(new_key, storage, callback);
}
else {
if (callback) {
return callback(undefined);
}
else {
return undefined;
}
if (callback) {
return callback(undefined);
}
else {
return undefined;
}
}
}
} else {
@ -365,7 +357,7 @@ function createContext(id,seed,parent) {
var result = followParentContext(parent, key);
if (result) {
var [ctx, new_key] = result;
if (ctx) {
if (ctx && new_key) {
return ctx.set(new_key, value, storage, callback);
}
else {

View File

@ -226,33 +226,31 @@ describe('context', function() {
})
describe("$parent", function() {
it('should access $parent', function() {
it('should get undefined for $parent without key', function() {
var context0 = Context.get("0","flowA");
var context1 = Context.get("1","flowB", context0);
var parent = context1.get("$parent");
parent.should.equal(context0);
should.equal(parent, undefined);
});
it('should get undefined for $parent of root', function() {
var context0 = Context.get("0","flowA");
var context1 = Context.get("1","flowB", context0);
var parent = context1.get("$parent.$parent");
var parent = context1.get("$parent.$parent.K");
should.equal(parent, undefined);
});
it('should get $parent', function() {
it('should get value in $parent', function() {
var context0 = Context.get("0","flowA");
var context1 = Context.get("1","flowB", context0);
var parent = context1.get("$parent");
context0.set("K", "v");
var v = context1.get("$parent.K");
should.equal(v, "v");
});
it('should set $parent', function() {
it('should set value in $parent', function() {
var context0 = Context.get("0","flowA");
var context1 = Context.get("1","flowB", context0);
var parent = context1.get("$parent");
context1.set("$parent.K", "v");
var v = context0.get("K");
should.equal(v, "v");
@ -270,7 +268,6 @@ describe('context', function() {
});
});
});
describe('external context storage',function() {