mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-12-27 02:23:28 +08:00
cff437e900
* Shfit away from default exports and PropTypes for better TS support * localize strings and expand use of types in WeekView, create new EventOccurence distinct from Event * Remove calendar wrap, use TS enum for view type + consistent prop interface * Bump Typescript to 3.8.3 and improve query / attribute / search typings * Re-use the Autolinker for calendar event descriptions with aggressive phone detection * Clean up WeekView and the editing popover, lots of cruft here * Update ScrollRegion to initialize scrollbar provided by external ref * Expose ScrollRegion’s resizeObserver to clean up tick interval tracking * Simply tickGenerator and move it to a helper * Bump to Electron 8.x for Chrome 75+ CSS features * Bump Handlebars dep to fix annoying npm audit noise * Remove electron-remote from electron-spellchecker * Explicitly add node-gyp, why is this necessary? * Fix lesslint issues * Bump eslint and let it fix 133 issues * Satisfy remaining eslint@2020 errors by hand * Add tsc-watch npm script and fix all TS errors outside calendar * Configure appveyor to publish all the pdb files it gets * Log sync exit codes and signals for easier triage on Windows * Upgrade npm, mark that the build process supports Node 11+ not just Node 11 * Resolve more errors * Upgrade sqlite to be a context-aware native module * Fix: Tab key no longer navigating into contenteditable because tabIndex not inferred * Fix: Bad print styles because Chrome now adds more CSS of it’s own when doctype is missing * Fix: before-navigate is now called after beforeunload
41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
/* eslint quote-props: 0 */
|
|
import _ from 'underscore';
|
|
import { Model } from '../src/flux/models/model';
|
|
import * as Attributes from '../src/flux/attributes';
|
|
import DatabaseObjectRegistry from '../src/registries/database-object-registry';
|
|
|
|
class GoodTest extends Model {
|
|
static attributes = {
|
|
...Model.attributes,
|
|
|
|
foo: Attributes.String({
|
|
modelKey: 'foo',
|
|
jsonKey: 'foo',
|
|
}),
|
|
};
|
|
}
|
|
|
|
describe('DatabaseObjectRegistry', function DatabaseObjectRegistrySpecs() {
|
|
beforeEach(() => DatabaseObjectRegistry.unregister('GoodTest'));
|
|
|
|
it('can register constructors', () => {
|
|
const testFn = () => GoodTest;
|
|
expect(() => DatabaseObjectRegistry.register('GoodTest', testFn)).not.toThrow();
|
|
expect(DatabaseObjectRegistry.get('GoodTest')).toBe(GoodTest);
|
|
});
|
|
|
|
it('Tests if a constructor is in the registry', () => {
|
|
DatabaseObjectRegistry.register('GoodTest', () => GoodTest);
|
|
expect(DatabaseObjectRegistry.isInRegistry('GoodTest')).toBe(true);
|
|
});
|
|
|
|
it('deserializes the objects for a constructor', () => {
|
|
DatabaseObjectRegistry.register('GoodTest', () => GoodTest);
|
|
const obj = DatabaseObjectRegistry.deserialize('GoodTest', { foo: 'bar' });
|
|
expect(obj instanceof GoodTest).toBe(true);
|
|
expect(obj.foo).toBe('bar');
|
|
});
|
|
|
|
it("throws an error if the object can't be deserialized", () =>
|
|
expect(() => DatabaseObjectRegistry.deserialize('GoodTest', { foo: 'bar' })).toThrow());
|
|
});
|