"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('');
}
};
});