mobx-roof
Version:
Simple React data management by mobx.
38 lines (37 loc) • 1.52 kB
JavaScript
import { expect } from 'chai';
import MobxContext from '../MobxContext';
import MobxMiddleware from '../MobxMiddleware';
import UserModel from '../../__tests__/helpers/UserModel';
import TodoModel from '../../__tests__/helpers/TodoModel';
describe('MobContext', () => {
let context;
beforeEach(() => {
context = new MobxContext({
user: UserModel,
todo: new TodoModel,
}, { middleware: new MobxMiddleware });
});
it('create', () => {
expect(context.data.user).to.instanceOf(UserModel);
expect(context.data.todo).to.instanceOf(TodoModel);
expect(() => new MobxContext({ user: {} })).to.throw(/must instance of MobxModel/);
});
it('destroy', () => {
// add middleware
expect(context.middleware._after.isEmpty()).to.eql(false);
context.destroy();
expect(context.middleware._after.isEmpty()).to.eql(true);
});
it('find and pick', () => {
expect(context.data.user).to.eql(context.find('user'));
expect({ user: context.data.user }).to.eql(context.pick('user'));
expect(() => context.find('unknown')).to.throw(/Can not find/);
expect(() => context.pick('unknown')).to.throw(/Can not find/);
});
it('parentContext', () => {
const childContext = new MobxContext({ myUser: 'user' }, { parentContext: context });
expect(childContext.middleware).to.eql(context.middleware);
expect(childContext.find('myUser')).to.eql(context.find('user'));
expect(() => new MobxContext({ user: 'unKnown' })).to.throw(/InitData "unKnown"/);
});
});