|
@@ -0,0 +1,41 @@
|
|
|
+import { createObservable } from '../src/observable'
|
|
|
+
|
|
|
+test('createObservable > successfully wraps object', () => {
|
|
|
+ let target = {
|
|
|
+ foo: 'bar'
|
|
|
+ }
|
|
|
+
|
|
|
+ let observable = createObservable(target, () => {})
|
|
|
+
|
|
|
+ expect(observable.foo).toEqual('bar')
|
|
|
+})
|
|
|
+
|
|
|
+test('createObservable > can access deeply nested props', () => {
|
|
|
+ let target = {
|
|
|
+ foo: {
|
|
|
+ bar: {
|
|
|
+ baz: 'bob'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ let observable = createObservable(target, () => {})
|
|
|
+
|
|
|
+ expect(observable.foo.bar.baz).toEqual('bob')
|
|
|
+})
|
|
|
+
|
|
|
+test('createObservable > will run callback on set trap', () => {
|
|
|
+ let target = {
|
|
|
+ foo: 'bar'
|
|
|
+ }
|
|
|
+
|
|
|
+ let fixture = 0
|
|
|
+
|
|
|
+ let observable = createObservable(target, () => {
|
|
|
+ fixture = 100
|
|
|
+ })
|
|
|
+
|
|
|
+ observable.foo = 'bob'
|
|
|
+
|
|
|
+ expect(fixture).toEqual(100)
|
|
|
+})
|