Skip to content
This repository was archived by the owner on Sep 18, 2020. It is now read-only.

Commit 085f8fc

Browse files
author
DoronTsur
committed
failing test + implelemt for obseravble
1 parent 16b8262 commit 085f8fc

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

src/data-types/es5-map.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,13 @@ export default class Es5Map extends MuBase {
230230
// apply changes only after no error was thrown.
231231
// otherwise we can get an inconsistent map
232232
if (changed) {
233-
this.__value__.clear();
234-
this.__value__.merge(newValue);
233+
if(config.observable) {
234+
this.__value__.clear();
235+
this.__value__.merge(newValue);
236+
} else {
237+
this.__value__ = newValue
238+
}
239+
235240
}
236241
}
237242
return changed;

test/es5-map/map.spec.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,33 @@ describe('Es5 Map', function() {
3131
expect(() => map.$setManager({})).to.report({ level: /error/ });
3232
});
3333
});
34+
describe.only('regression with observable=false', function () {
35+
before(function (){
36+
mu.config.observable = false
37+
})
38+
after(function (){
39+
mu.config.observable = true
40+
})
41+
42+
it('handles set value deep', function () {
43+
let map = new (mu.Es5Map.of(UserType))({});
44+
map.set('1', new UserType({name:'Amir'}))
45+
map.set('2', new UserType({name:'Doron'}))
46+
47+
map.setValue({
48+
'2':{
49+
'age':33
50+
}
51+
})
52+
expect(map.toJSON()).to.eql({
53+
'2': {
54+
'name': new UserType().name,
55+
'age': 33
56+
}
57+
})
58+
59+
})
60+
})
3461
});
3562

3663
require('./mutable/instance.spec');

0 commit comments

Comments
 (0)