UNPKG

networked-aframe

Version:

A web framework for building multi-user virtual reality experiences.

211 lines (169 loc) 4.69 kB
/* global assert, setup, suite, test, teardown */ var Schemas = require('../../src/Schemas'); var helpers = require('./helpers'); require('../../src/NafIndex'); suite('Schemas', function() { var schemas; setup(function() { schemas = new Schemas(); }); teardown(function() { document.body.innerHTML = ''; }); suite('validateSchema', function() { test('marks correct schema correct', function() { var schema = { template: '#template4', components: [ 'scale' ] }; var result = schemas.validateSchema(schema); assert.isTrue(result); }); test('catches missing template property', function() { var schema = { components: [ 'scale' ] }; var result = schemas.validateSchema(schema); assert.isFalse(result); }); test('catches missing components property', function() { var schema = { template: '#template4' }; var result = schemas.validateSchema(schema); assert.isFalse(result); }); }); suite('validateTemplate', function() { test('catches template with more than one child', function() { var schema = { template: '#template4', components: [ 'position' ] }; const template = helpers.addTemplateToDomWithChildren('template4', 2); var result = schemas.validateTemplate(schema, template); assert.isFalse(result); }); test('catches template that is not a template tag', function() { var schema = { template: '#template', components: [ 'position' ] }; const template = document.createElement('div'); template.id = 'template'; document.body.appendChild(template); var result = schemas.validateTemplate(schema, template); assert.isFalse(result); }) }); suite('add', function() { test('adds correct schema', function() { helpers.addTemplateToDomWithChildren('template4', 1); var schema = { template: '#template4', components: [ 'scale' ] }; schemas.add(schema); var result = schemas.hasTemplate(schema.template); assert.isTrue(result); }); test('invalid schema not added', function() { var schema = { template: '#template4' }; schemas.add(schema); var result = schemas.hasTemplate(schema.template); assert.isFalse(result); }); test('invalid template not added', function() { helpers.addTemplateToDomWithChildren('template4', 2); var schema = { template: '#template4', components: [ 'scale' ] }; schemas.add(schema); var result = schemas.hasTemplate(schema.template); assert.isTrue(result); }); }); suite('getComponents', function() { test('gets correct components', function() { var schema = { template: '#template4', components: [ 'comp1', 'comp2' ] }; schemas.add(schema); var result = schemas.getComponents(schema.template); assert.deepEqual(result, schema.components); }); test('returns defaults for incorrect template', function() { var schema = { template: '#template4', components: [ 'comp1', 'comp2' ] }; schemas.add(schema); var result = schemas.getComponents('wrong'); assert.deepEqual(result, ['position', 'rotation']); }); }); suite('clear', function() { test('removes all schemas', function() { helpers.addTemplateToDomWithChildren('template4', 1); helpers.addTemplateToDomWithChildren('templasd', 1); var schema1 = { template: '#template4', components: [ 'comp1', 'comp2' ] }; var schema2 = { template: '#templasd', components: [ 'comp1', 'comp2' ] }; schemas.add(schema1); schemas.add(schema2); schemas.clear(); var result1 = schemas.hasTemplate(schema1.template); var result2 = schemas.hasTemplate(schema2.template); assert.isFalse(result1); assert.isFalse(result2); }); }); suite('clear', function() { test('removes all schemas', function() { var schema = { template: '#template4', components: [ 'comp1', 'comp2' ] }; schemas.add(schema); schemas.remove(schema.template); var result = schemas.hasTemplate(schema.template); assert.isFalse(result); }); }); });