"use strict"; define(["chai", "chai-jquery", "chai-backbone", "../../../../../../src/js/models/metadata/eml211/EMLMeasurementScale", "../../../../../../src/js/models/metadata/eml211/EMLNonNumericDomain", "../../../../../../src/js/models/metadata/eml211/EMLNumericDomain", "../../../../../../src/js/models/metadata/eml211/EMLDateTimeDomain", ], function(chai, chaiJquery, chaiBackbone, EMLMeasurementScale, EMLNonNumericDomain, EMLNumericDomain, EMLDateTimeDomain) { // Configure the Chai assertion library var should = chai.should(); var expect = chai.expect; // Pull in Jquery and Backbone-specific assertion libraries chai.use(chaiJquery); // exported from chai-jquery.js chai.use(chaiBackbone); // exported from chai-backbone.js describe("EMLMeasurementScale Factory Test Suite", function (){ var emlMeasurementScale; var domainName; var xml; /* Setup */ before(function() { // If needed }); /* Tear down */ afterEach(function() { // Clear the variables after each test emlMeasurementScale = undefined; domainName = undefined; xml = undefined; }); describe(".getInstance()", function() { it('should return a nominal instance of EMLNonNumericDomain', function() { xml = EMLMeasurementScaleUtil.getTestNominalMeasurementScaleXML(); emlMeasurementScale = EMLMeasurementScale.getInstance(xml); domainName = emlMeasurementScale.get("measurementScale"); expect(emlMeasurementScale).to.be.an("Object"); domainName.should.equal("nominal"); }); it('should return an ordinal instance of EMLNonNumericDomain', function() { xml = EMLMeasurementScaleUtil.getTestOrdinalMeasurementScaleXML(); emlMeasurementScale = EMLMeasurementScale.getInstance(xml); domainName = emlMeasurementScale.get("measurementScale"); expect(emlMeasurementScale).to.be.an.an("Object"); domainName.should.equal("ordinal"); }); it('should return an interval instance of EMLNumericDomain', function() { xml = EMLMeasurementScaleUtil.getTestIntervalMeasurementScaleXML(); emlMeasurementScale = EMLMeasurementScale.getInstance(xml); domainName = emlMeasurementScale.get("measurementScale"); expect(emlMeasurementScale).to.be.an.an("Object"); domainName.should.equal("interval"); }); it('should return a ratio instance of EMLNumericDomain', function() { xml = EMLMeasurementScaleUtil.getTestRatioMeasurementScaleXML(); emlMeasurementScale = EMLMeasurementScale.getInstance(xml); domainName = emlMeasurementScale.get("measurementScale"); expect(emlMeasurementScale).to.be.an.an("Object"); domainName.should.equal("ratio"); }); it('should return a dateTime instance of EMLDateTimeDomain', function() { xml = EMLMeasurementScaleUtil.getTestDateTimeMeasurementScaleXML(); emlMeasurementScale = EMLMeasurementScale.getInstance(xml); domainName = emlMeasurementScale.get("measurementScale"); expect(emlMeasurementScale).to.be.an.an("Object"); domainName.should.equal("datetime"); }); }); }); var EMLMeasurementScaleUtil = { /* Returns a nominal measurement scale fragment */ getTestNominalMeasurementScaleXML: function() { var xml = []; xml.push( "\n", "\t\n", "\t\t\n", "\t\t\t\n", "\t\t\t\tAny text\n", "\t\t\t\t*\n", "\t\t\t\tAny source\n", "\t\t\t\n", "\t\t\n", "\t\n", "\n"); return xml.join(''); }, /* Returns an ordinal measurement scale fragment */ getTestOrdinalMeasurementScaleXML: function() { var xml = []; xml.push( "\n", "\t\n", "\t\t\n", "\t\t\t\n", "\t\t\t\tAny text\n", "\t\t\t\t*\n", "\t\t\t\tAny source\n", "\t\t\t\n", "\t\t\n", "\t\n", "\n"); return xml.join(''); }, /* Returns an interval measurement scale fragment */ getTestIntervalMeasurementScaleXML: function() { var xml = []; xml.push( "\n", "\t\n", "\t\t\n", "\t\t\tmeter\n", "\t\t\n", "\t\t\n", "\t\t\twhole\n", "\t\t\n", "\t\n", "\n"); return xml.join(''); }, /* Returns a ratio measurement scale fragment */ getTestRatioMeasurementScaleXML: function() { var xml = []; xml.push( "\n", "\t\n", "\t\t\n", "\t\t\tmeter\n", "\t\t\n", "\t\t\n", "\t\t\tfloat\n", "\t\t\n", "\t\n", "\n"); return xml.join(''); }, /* Returns a dateTime measurement scale fragment */ getTestDateTimeMeasurementScaleXML: function() { var xml = []; xml.push( "\n", "\t\n", "\t\tYYYY-mm-DDTHH:MM:SS\n", "\t\tsecond\n", "\t\t\n", "\t\t\t\n", "\t\t\t\t2017-01-01T00:00:00\n", "\t\t\t\t2017-01-31T11:59:59\n", "\t\t\t\n", "\t\t\t\n", "\t\t\t\t2017-02-01T00:00:00\n", "\t\t\t\n", "\t\t\t\n", "\t\t\t\t2017-03-31T11:59:59\n", "\t\t\t\n", "\t\t\n", "\t", "\n"); return xml.join(''); } }; });