mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-12 04:25:31 +08:00
77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
import { Model, DatabaseStore, DestroyModelTask, DatabaseWriter } from 'nylas-exports';
|
|
|
|
xdescribe('DestroyModelTask', function destroyModelTask() {
|
|
beforeEach(() => {
|
|
this.existingModel = new Model();
|
|
this.existingModel.id = 'local-123';
|
|
spyOn(DatabaseWriter.prototype, 'unpersistModel');
|
|
spyOn(DatabaseStore, 'findBy').andCallFake(() => {
|
|
return Promise.resolve(this.existingModel);
|
|
});
|
|
|
|
this.defaultArgs = {
|
|
id: 'local-123',
|
|
accountId: 'a123',
|
|
modelName: 'Model',
|
|
endpoint: '/endpoint',
|
|
};
|
|
});
|
|
|
|
it('constructs without error', () => {
|
|
const t = new DestroyModelTask();
|
|
expect(t._rememberedToCallSuper).toBe(true);
|
|
});
|
|
|
|
describe('performLocal', () => {
|
|
it('throws if basic fields are missing', () => {
|
|
const t = new DestroyModelTask();
|
|
try {
|
|
t.performLocal();
|
|
throw new Error("Shouldn't succeed");
|
|
} catch (e) {
|
|
expect(e.message).toMatch(/^Must pass.*/);
|
|
}
|
|
});
|
|
|
|
it("throws if the model name can't be found", () => {
|
|
this.defaultArgs.modelName = 'dne';
|
|
const t = new DestroyModelTask(this.defaultArgs);
|
|
try {
|
|
t.performLocal();
|
|
throw new Error("Shouldn't succeed");
|
|
} catch (e) {
|
|
expect(e.message).toMatch(/^Couldn't find the class for.*/);
|
|
}
|
|
});
|
|
|
|
it("throws if it can't find the object", () => {
|
|
jasmine.unspy(DatabaseStore, 'findBy');
|
|
spyOn(DatabaseStore, 'findBy').andCallFake(() => {
|
|
return Promise.resolve(null);
|
|
});
|
|
const t = new DestroyModelTask(this.defaultArgs);
|
|
window.waitsForPromise(() => {
|
|
return t
|
|
.performLocal()
|
|
.then(() => {
|
|
throw new Error("Shouldn't succeed");
|
|
})
|
|
.catch(err => {
|
|
expect(err.message).toMatch(/^Couldn't find the model with id.*/);
|
|
});
|
|
});
|
|
});
|
|
|
|
it('unpersists the new existing model properly', () => {
|
|
const unpersistFn = DatabaseWriter.prototype.unpersistModel;
|
|
const t = new DestroyModelTask(this.defaultArgs);
|
|
window.waitsForPromise(() => {
|
|
return t.performLocal().then(() => {
|
|
expect(unpersistFn).toHaveBeenCalled();
|
|
const model = unpersistFn.calls[0].args[0];
|
|
expect(model).toBe(this.existingModel);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|