Tidy up store tests

pull/9458/head
mnrx 3 years ago
parent f5101c0d8c
commit fb4313ea31
No known key found for this signature in database
GPG Key ID: 3AD295719143C9AD

@ -22,7 +22,7 @@ describe('writable', () => {
assert.deepEqual(values, [0, 1, 2]); assert.deepEqual(values, [0, 1, 2]);
}); });
it('creates an undefined writable store', () => { it('creates an `undefined` writable store', () => {
const store = writable(); const store = writable();
const values: unknown[] = []; const values: unknown[] = [];
@ -41,7 +41,9 @@ describe('writable', () => {
const store = writable(0, () => { const store = writable(0, () => {
called += 1; called += 1;
return () => (called -= 1); return () => {
called -= 1;
};
}); });
const unsubscribe1 = store.subscribe(() => {}); const unsubscribe1 = store.subscribe(() => {});
@ -81,16 +83,20 @@ describe('writable', () => {
let count1 = 0; let count1 = 0;
let count2 = 0; let count2 = 0;
store.subscribe(() => (count1 += 1))(); store.subscribe(() => {
count1 += 1;
})();
assert.equal(count1, 1); assert.equal(count1, 1);
const unsubscribe = store.subscribe(() => (count2 += 1)); const unsubscribe = store.subscribe(() => {
count2 += 1;
});
assert.equal(count2, 1); assert.equal(count2, 1);
unsubscribe(); unsubscribe();
}); });
it('no error even if unsubscribe calls twice', () => { it('does not throw an error if `unsubscribe` is called more than once', () => {
let num = 0; let num = 0;
const store = writable(num, (set) => set((num += 1))); const store = writable(num, (set) => set((num += 1)));
const unsubscribe = store.subscribe(() => {}); const unsubscribe = store.subscribe(() => {});
@ -139,7 +145,7 @@ describe('readable', () => {
assert.deepEqual(values, [0, 1, 2]); assert.deepEqual(values, [0, 1, 2]);
}); });
it('passes an optional update function', () => { it('passes an optional `update` function', () => {
let running; let running;
let tick = (value: any) => {}; let tick = (value: any) => {};
@ -186,7 +192,7 @@ describe('readable', () => {
assert.deepEqual(values, [0, 1, 2, 5, 9, 5, 11]); assert.deepEqual(values, [0, 1, 2, 5, 9, 5, 11]);
}); });
it('creates an undefined readable store', () => { it('creates an `undefined` readable store', () => {
const store = readable(); const store = readable();
const values: unknown[] = []; const values: unknown[] = [];
@ -270,7 +276,7 @@ describe('derived', () => {
assert.deepEqual(values, [6, 12, 20]); assert.deepEqual(values, [6, 12, 20]);
}); });
it('passes optional set function', () => { it('passes optional `set` function', () => {
const number = writable(1); const number = writable(1);
const evens = derived( const evens = derived(
number, number,
@ -301,9 +307,9 @@ describe('derived', () => {
assert.deepEqual(values, [0, 2, 4]); assert.deepEqual(values, [0, 2, 4]);
}); });
it('passes optional set and update functions', () => { it('passes optional `set` and `update` functions', () => {
const number = writable(1); const number = writable(1);
const evensAndSquaresOf4 = derived( const evens_and_squares_of_4 = derived(
number, number,
// @ts-expect-error TODO feels like inference should work here // @ts-expect-error TODO feels like inference should work here
(n, set, update) => { (n, set, update) => {
@ -316,7 +322,7 @@ describe('derived', () => {
const values: number[] = []; const values: number[] = [];
const unsubscribe = evensAndSquaresOf4.subscribe((value) => { const unsubscribe = evens_and_squares_of_4.subscribe((value) => {
values.push(value); values.push(value);
}); });
@ -341,21 +347,21 @@ describe('derived', () => {
}); });
it('prevents glitches', () => { it('prevents glitches', () => {
const lastname = writable('Jekyll'); const last_name = writable('Jekyll');
// @ts-expect-error TODO feels like inference should work here // @ts-expect-error TODO feels like inference should work here
const firstname = derived(lastname, (n) => (n === 'Jekyll' ? 'Henry' : 'Edward')); const first_name = derived(last_name, (n) => (n === 'Jekyll' ? 'Henry' : 'Edward'));
// @ts-expect-error TODO feels like inference should work here // @ts-expect-error TODO feels like inference should work here
const fullname = derived([firstname, lastname], (names) => names.join(' ')); const full_name = derived([first_name, last_name], (names) => names.join(' '));
const values: string[] = []; const values: string[] = [];
const unsubscribe = fullname.subscribe((value) => { const unsubscribe = full_name.subscribe((value) => {
values.push(value as string); values.push(value as string);
}); });
lastname.set('Hyde'); last_name.set('Hyde');
assert.deepEqual(values, ['Henry Jekyll', 'Edward Hyde']); assert.deepEqual(values, ['Henry Jekyll', 'Edward Hyde']);
@ -364,7 +370,6 @@ describe('derived', () => {
it('prevents diamond dependency problem', () => { it('prevents diamond dependency problem', () => {
const count = writable(0); const count = writable(0);
const values: string[] = []; const values: string[] = [];
// @ts-expect-error TODO feels like inference should work here // @ts-expect-error TODO feels like inference should work here
@ -421,7 +426,7 @@ describe('derived', () => {
unsubscribe(); unsubscribe();
}); });
it('is updated with safe_not_equal logic', () => { it('is updated with `safe_not_equal` logic', () => {
const arr = [0]; const arr = [0];
const number = writable(1); const number = writable(1);
@ -446,7 +451,7 @@ describe('derived', () => {
unsubscribe(); unsubscribe();
}); });
it('calls a cleanup function', () => { it('calls a `cleanup` function', () => {
const num = writable(1); const num = writable(1);
const values: number[] = []; const values: number[] = [];
@ -523,7 +528,7 @@ describe('derived', () => {
assert.equal(get(d), 42); assert.equal(get(d), 42);
}); });
it("doesn't restart when unsubscribed from another store with a shared ancestor", () => { it('does not restart when unsubscribed from another store with a shared ancestor', () => {
const a = writable(true); const a = writable(true);
let b_started = false; let b_started = false;
@ -577,17 +582,17 @@ describe('get', () => {
describe('readonly', () => { describe('readonly', () => {
it('makes a store readonly', () => { it('makes a store readonly', () => {
const writableStore = writable(1); const writable_store = writable(1);
const readableStore = readonly(writableStore); const readable_store = readonly(writable_store);
assert.equal(get(readableStore), get(writableStore)); assert.equal(get(readable_store), get(writable_store));
writableStore.set(2); writable_store.set(2);
assert.equal(get(readableStore), 2); assert.equal(get(readable_store), 2);
assert.equal(get(readableStore), get(writableStore)); assert.equal(get(readable_store), get(writable_store));
// @ts-ignore // @ts-ignore
assert.throws(() => readableStore.set(3)); assert.throws(() => readable_store.set(3));
}); });
}); });

Loading…
Cancel
Save