2018-03-20 10:12:48 -04:00
|
|
|
/* global monaco */
|
2018-03-20 10:16:38 -04:00
|
|
|
import eventHub from '~/ide/eventhub';
|
|
|
|
import monacoLoader from '~/ide/monaco_loader';
|
|
|
|
import Model from '~/ide/lib/common/model';
|
2018-03-20 10:12:48 -04:00
|
|
|
import { file } from '../../helpers';
|
|
|
|
|
|
|
|
describe('Multi-file editor library model', () => {
|
|
|
|
let model;
|
|
|
|
|
2018-03-20 10:16:38 -04:00
|
|
|
beforeEach(done => {
|
2018-03-20 10:12:48 -04:00
|
|
|
spyOn(eventHub, '$on').and.callThrough();
|
|
|
|
|
|
|
|
monacoLoader(['vs/editor/editor.main'], () => {
|
2018-03-26 08:18:24 -04:00
|
|
|
const f = file('path');
|
|
|
|
f.mrChange = { diff: 'ABC' };
|
|
|
|
f.baseRaw = 'test';
|
|
|
|
model = new Model(monaco, f);
|
2018-03-20 10:12:48 -04:00
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(() => {
|
|
|
|
model.dispose();
|
|
|
|
});
|
|
|
|
|
2018-03-26 08:18:24 -04:00
|
|
|
it('creates original model & base model & new model', () => {
|
2018-03-20 10:12:48 -04:00
|
|
|
expect(model.originalModel).not.toBeNull();
|
|
|
|
expect(model.model).not.toBeNull();
|
2018-03-26 08:18:24 -04:00
|
|
|
expect(model.baseModel).not.toBeNull();
|
2018-03-20 10:12:48 -04:00
|
|
|
});
|
|
|
|
|
|
|
|
it('adds eventHub listener', () => {
|
2018-03-20 10:16:38 -04:00
|
|
|
expect(eventHub.$on).toHaveBeenCalledWith(
|
2018-03-23 11:59:09 -04:00
|
|
|
`editor.update.model.dispose.${model.file.key}`,
|
2018-03-20 10:16:38 -04:00
|
|
|
jasmine.anything(),
|
|
|
|
);
|
2018-03-20 10:12:48 -04:00
|
|
|
});
|
|
|
|
|
|
|
|
describe('path', () => {
|
|
|
|
it('returns file path', () => {
|
2018-03-23 11:59:09 -04:00
|
|
|
expect(model.path).toBe(model.file.key);
|
2018-03-20 10:12:48 -04:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('getModel', () => {
|
|
|
|
it('returns model', () => {
|
|
|
|
expect(model.getModel()).toBe(model.model);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('getOriginalModel', () => {
|
|
|
|
it('returns original model', () => {
|
|
|
|
expect(model.getOriginalModel()).toBe(model.originalModel);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2018-03-26 08:18:24 -04:00
|
|
|
describe('getBaseModel', () => {
|
|
|
|
it('returns base model', () => {
|
|
|
|
expect(model.getBaseModel()).toBe(model.baseModel);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2018-03-20 10:12:48 -04:00
|
|
|
describe('setValue', () => {
|
|
|
|
it('updates models value', () => {
|
|
|
|
model.setValue('testing 123');
|
|
|
|
|
|
|
|
expect(model.getModel().getValue()).toBe('testing 123');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('onChange', () => {
|
|
|
|
it('caches event by path', () => {
|
|
|
|
model.onChange(() => {});
|
|
|
|
|
|
|
|
expect(model.events.size).toBe(1);
|
2018-03-23 11:59:09 -04:00
|
|
|
expect(model.events.keys().next().value).toBe(model.file.key);
|
2018-03-20 10:12:48 -04:00
|
|
|
});
|
|
|
|
|
2018-03-20 10:16:38 -04:00
|
|
|
it('calls callback on change', done => {
|
2018-03-20 10:12:48 -04:00
|
|
|
const spy = jasmine.createSpy();
|
|
|
|
model.onChange(spy);
|
|
|
|
|
|
|
|
model.getModel().setValue('123');
|
|
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
expect(spy).toHaveBeenCalledWith(model, jasmine.anything());
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('dispose', () => {
|
|
|
|
it('calls disposable dispose', () => {
|
|
|
|
spyOn(model.disposable, 'dispose').and.callThrough();
|
|
|
|
|
|
|
|
model.dispose();
|
|
|
|
|
|
|
|
expect(model.disposable.dispose).toHaveBeenCalled();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('clears events', () => {
|
|
|
|
model.onChange(() => {});
|
|
|
|
|
|
|
|
expect(model.events.size).toBe(1);
|
|
|
|
|
|
|
|
model.dispose();
|
|
|
|
|
|
|
|
expect(model.events.size).toBe(0);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('removes eventHub listener', () => {
|
|
|
|
spyOn(eventHub, '$off').and.callThrough();
|
|
|
|
|
|
|
|
model.dispose();
|
|
|
|
|
2018-03-20 10:16:38 -04:00
|
|
|
expect(eventHub.$off).toHaveBeenCalledWith(
|
2018-03-23 11:59:09 -04:00
|
|
|
`editor.update.model.dispose.${model.file.key}`,
|
2018-03-20 10:16:38 -04:00
|
|
|
jasmine.anything(),
|
|
|
|
);
|
2018-03-20 10:12:48 -04:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|