@onehat/data
Version:
JS data modeling package with adapters for many storage mediums.
138 lines (126 loc) • 3.98 kB
JavaScript
import Schema from '../../src/Schema/index.js';
import GroupsUsersDefinition from '../fixtures/Definitions/GroupsUsers.js';
describe('Schema', function() {
beforeEach(function() {
this.schema = new Schema(GroupsUsersDefinition);
});
it('schema is valid', function() {
expect(this.schema instanceof Schema).to.be.true;
expect(this.schema.name).to.be.eq('GroupsUsers');
expect(this.schema.model.associations.hasOne).to.be.an('array');
expect(this.schema.model.associations.hasMany).to.be.an('array');
expect(this.schema.model.associations.belongsTo).to.be.an('array');
expect(this.schema.model.associations.belongsToMany).to.be.an('array');
expect(this.schema.entity.methods.testMethod).to.be.a('function');
expect(this.schema.repository.type).to.be.eq('onebuild');
});
it('clone', function() {
const clone = this.schema.clone();
expect(clone instanceof Schema).to.be.true;
expect(clone.name).to.be.eq('GroupsUsers');
expect(_.isEqual(clone._originalConfig, this.schema._originalConfig)).to.be.true;
});
it('getPropertyDefinition', function() {
const propertyDefinition = this.schema.getPropertyDefinition('groups_users__id');
expect(_.isEqual(propertyDefinition.name, 'groups_users__id')).to.be.true;
});
it('getDefaultValues', function() {
const
defaultValues = this.schema.getDefaultValues(),
expectedDefaultValues = {
groups_users__id: null,
groups_users__group_id: null,
groups_users__user_id: null,
groups__id: null,
groups__name: 'default_group_name',
groups__description: null,
users__id: null,
users__username: 'default_username',
users__password: null,
users__full_name: null,
users__first_name: null,
users__last_name: null,
users__job_title: null,
users__email: null,
users__login_count: null,
users__last_login: null,
};
// console.log('defaultValues', defaultValues);
// console.log('expectedDefaultValues', expectedDefaultValues);
expect(defaultValues).to.be.eql(expectedDefaultValues);
});
it('getTitles, getVirtualdPropertyNames, getIsFilteringDisabledPropertyNames, getIsEditingDisabledPropertyNames, getFieldGroupNames, getFilterTypes', function() {
const
schema = new Schema({
id: 'foo',
name: 'foo',
model: {
idProperty: 'model__field1',
displayProperty: 'model__field2',
properties: [
{
name: 'model__field1',
title: 'title1',
isVirtual: true,
isFilteringDisabled: false,
filterType: {
type: 'Combo',
loadAfterRender: false,
},
isEditingDisabled: true,
fieldGroup: 'group1',
},
{
name: 'model__field2',
title: 'title2',
isVirtual: true,
isFilteringDisabled: true,
isEditingDisabled: false,
fieldGroup: 'group1',
},
{
name: 'model__field3',
title: 'title3',
isVirtual: false,
isFilteringDisabled: true,
isEditingDisabled: true,
fieldGroup: 'group2',
},
],
},
}),
titles = [
'title1',
'title2',
'title3',
],
virtualPropertyNames = [
'model__field1',
'model__field2',
],
isFilteringDisabledPropertyNames = [
'model__field2',
'model__field3',
],
isEditingDisabledPropertyNames = [
'model__field1',
'model__field3',
],
fieldGroupNames = [
'group1',
'group2',
],
filterTypes = {
model__field1: {
type: 'Combo',
loadAfterRender: false,
},
};
expect(schema.getTitles()).to.be.eql(titles);
expect(schema.getVirtualPropertyNames()).to.be.eql(virtualPropertyNames);
expect(schema.getIsFilteringDisabledPropertyNames()).to.be.eql(isFilteringDisabledPropertyNames);
expect(schema.getIsEditingDisabledPropertyNames()).to.be.eql(isEditingDisabledPropertyNames);
expect(schema.getFieldGroupNames()).to.be.eql(fieldGroupNames);
expect(schema.getFilterTypes()).to.be.eql(filterTypes);
});
});