Skip to content

Instantly share code, notes, and snippets.

@kasper573
Created August 12, 2018 20:15
Show Gist options
  • Save kasper573/ceed32a22e472820d7c898011f6fc290 to your computer and use it in GitHub Desktop.
Save kasper573/ceed32a22e472820d7c898011f6fc290 to your computer and use it in GitHub Desktop.
import {when} from 'mobx';
import {Resource} from './Resource';
describe('Resource', () => {
it('initial value is the default value when default getter is available', () => {
const defaultValue = 1;
const asyncValue = 2;
const r = new Resource('test', async () => asyncValue, () => defaultValue);
expect(r.value).toBe(defaultValue);
});
it('initial value is undefined when no default getter is available', () => {
const r = new Resource('test', async () => 5);
expect(r.value).toBeUndefined();
});
it('default value is replaced by async value', async () => {
const defaultValue = 1;
const asyncValue = 2;
const r = new Resource('test', async () => asyncValue, () => defaultValue);
await when(() => r.isResolved);
expect(r.value).toBe(asyncValue);
});
it('maintains value while updating', async () => {
let value = 1;
const r = new Resource('test', async () => value);
await when(() => r.isResolved);
value = 2;
const promise = r.update();
expect(r.value).toBe(1);
await promise;
});
it('changes value after updating', async () => {
let value = 1;
const r = new Resource('test', async () => value);
await when(() => r.isResolved);
value = 2;
await r.update();
expect(r.value).toBe(2);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment