fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
126 lines (124 loc) • 3.97 kB
text/typescript
import {
isTextObject,
isSerializableFiller,
isPattern,
isPath,
isFiller,
isActiveSelection,
} from './typeAssertions';
import { FabricText } from '../shapes/Text/Text';
import { IText } from '../shapes/IText/IText';
import { Textbox } from '../shapes/Textbox';
import { Path } from '../shapes/Path';
import { Pattern } from '../Pattern/Pattern';
import { Gradient } from '../gradient/Gradient';
import { Shadow } from '../Shadow';
import { ActiveSelection } from '../shapes/ActiveSelection';
import { Canvas } from '../canvas/Canvas';
import { Group } from '../shapes/Group';
describe('typeAssertions', () => {
describe('isTextObject', () => {
test('can detect FabricText', () => {
const text = new FabricText('hello');
expect(isTextObject(text)).toBe(true);
});
test('can detect IText', () => {
const text = new IText('hello');
expect(isTextObject(text)).toBe(true);
});
test('can detect Textbox', () => {
const text = new Textbox('hello');
expect(isTextObject(text)).toBe(true);
});
test('can detect other subclasses', () => {
class NewText extends Textbox {
status = 'new';
static type = 'NewText';
}
const newText = new NewText('hello world');
expect(isTextObject(newText)).toBe(true);
});
test('can safeguard agains other FabricObjects', () => {
const path = new Path('M 0 0 L 1 1');
expect(isTextObject(path)).toBe(false);
});
});
describe('isPath', () => {
test('can detect Path', () => {
const path = new Path('M 0 0 L 1 1');
expect(isPath(path)).toBe(true);
});
test('can detect other subclasses', () => {
class NewPath extends Path {
status = 'new';
static type = 'NewPath';
}
const newPath = new NewPath('M 0 0 L 1 1');
expect(isPath(newPath)).toBe(true);
});
test('can guard against other FabricObjects', () => {
const text = new Textbox('hello');
expect(isPath(text)).toBe(false);
});
});
describe('isPattern', () => {
test('can detect Pattern', () => {
const pattern = new Pattern({
source: new Image(100, 100),
});
expect(isPattern(pattern)).toBe(true);
});
test('can guard against Gradient', () => {
const gradient = new Gradient({ type: 'linear' });
expect(isPattern(gradient)).toBe(false);
});
test('can guard against Shadow', () => {
const shadow = new Shadow({ offsetX: 10 });
expect(isPattern(shadow as unknown as Pattern)).toBe(false);
});
});
describe('isFiller', () => {
test('can detect Pattern', () => {
const pattern = new Pattern({
source: new Image(100, 100),
});
expect(isFiller(pattern)).toBe(true);
});
test('can detect Gradient', () => {
const gradient = new Gradient({ type: 'linear' });
expect(isFiller(gradient)).toBe(true);
});
test('can guard against string', () => {
const filler = 'red';
expect(isFiller(filler)).toBe(false);
});
test('can guard against null', () => {
const filler = null;
expect(isFiller(filler)).toBe(false);
});
});
describe('isSerializableFiller', () => {
test('can detect Pattern', () => {
const pattern = new Pattern({
source: new Image(100, 100),
});
expect(isSerializableFiller(pattern)).toBe(true);
});
test('can detect Gradient', () => {
const gradient = new Gradient({ type: 'linear' });
expect(isSerializableFiller(gradient)).toBe(true);
});
});
describe('isActiveSelection', () => {
test('can detect activeSelection', () => {
const as = new ActiveSelection([], {
canvas: new Canvas(),
});
expect(isActiveSelection(as)).toBe(true);
});
test('can safeguard against a group', () => {
const group = new Group([]);
expect(isActiveSelection(group)).toBe(false);
});
});
});