57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
import {expect, test} from 'vitest';
|
|
|
|
import Schema from './schema.js';
|
|
import Arbitrary from './arbitrary.js';
|
|
|
|
test('creates instances', () => {
|
|
class CreatingArbitrary extends Arbitrary {
|
|
static schema = new Schema({
|
|
type: 'object',
|
|
properties: {foo: {defaultValue: 'bar', type: 'string'}},
|
|
});
|
|
}
|
|
const Component = new CreatingArbitrary();
|
|
Component.create(1);
|
|
expect(Component.get(1).entity)
|
|
.to.equal(1);
|
|
});
|
|
|
|
test('does not serialize default values', () => {
|
|
class CreatingArbitrary extends Arbitrary {
|
|
static schema = new Schema({
|
|
type: 'object',
|
|
properties: {foo: {defaultValue: 'bar', type: 'string'}, bar: {type: 'uint8'}},
|
|
});
|
|
}
|
|
const fakeEcs = {markChange() {}};
|
|
const Component = new CreatingArbitrary(fakeEcs);
|
|
Component.create(1)
|
|
expect(Component.get(1).toJSON())
|
|
.to.deep.equal({});
|
|
Component.get(1).bar = 1;
|
|
expect(Component.get(1).toJSON())
|
|
.to.deep.equal({bar: 1});
|
|
});
|
|
|
|
test('reuses instances', () => {
|
|
class ReusingArbitrary extends Arbitrary {
|
|
static schema = new Schema({
|
|
type: 'object',
|
|
properties: {foo: {type: 'string'}},
|
|
});
|
|
}
|
|
const Component = new ReusingArbitrary();
|
|
Component.create(1);
|
|
const instance = Component.get(1);
|
|
Component.destroy(1);
|
|
expect(Component.get(1))
|
|
.to.be.undefined;
|
|
expect(() => {
|
|
Component.destroy(1);
|
|
})
|
|
.to.throw();
|
|
Component.create(1);
|
|
expect(Component.get(1))
|
|
.to.equal(instance);
|
|
});
|