product-admin
Version:
EA admin screens
176 lines (146 loc) • 4.85 kB
HTML
<html>
<head>
<meta charset="utf-8">
<script src="../../bower_components/webcomponentsjs/webcomponents-lite.js"></script>
<script src="../../bower_components/web-component-tester/browser.js"></script>
<link rel="import" href="../../element.html" />
<link rel="import" href="./admin-products-view.html">
</head>
<body>
<test-fixture id="admin-products-view-fixture">
<template>
<admin-products-view id="adminProductsView"
resources='{ "en": { "headingCreate": "Create", "headingEdit": "Edit", "name": "Name", "productCode": "productCode", "productDescription": "Description", "productDescriptionParen": "(>150 characters)", "currentSpecificationRate": "Production Rate", "currentSpecificationRateLabel": "PPH", "estCycleTime": "Estimated Cycle Time", "hours": "Hours", "minutes": "Min", "btnCreateEditPositive": "Save", "btnCreateEditNegative": "Cancel" , "getAssetsError": "fakeAssetsError", "error": "fakeError"} }'
language="en"
></admin-products-view>
</template>
</test-fixture>
<script>
suite('<admin-products-view>', function () {
var ajax;
var request;
var server;
var responseHeaders = {
json: { 'Content-Type': 'application/json' }
};
setup(function(done) {
server = sinon.fakeServer.create();
var fakeResponseBody = [{
name:"OPER3",
parent:"/segments/1d2b1885-1ba2-3e3b-b766-97a89f3803cd",
sourceKey:"OPER3",
type:"/assetTypes/5dd3d10f-b338-326a-a2ef-bdf764b80ac4",
uri:"/assets/6d4ee26e-7f70-3d82-b770-17c2ad78b33b"
},
{
name:"CNCVMPE7",
parent:"/segments/0c043604-c65c-3445-9099-fdb6c5cdf69d",
sourceKey:"CNCVMPE7",
type:"/assetTypes/5dd3d10f-b338-326a-a2ef-bdf764b80ac4",
uri:"/assets/512ebfe7-f09b-3fa4-9f1f-2734b6b302c8",
},
{
name:"VMILL2",
parent:"/segments/cb80c9f7-4ef0-3de2-bb35-653634b03635",
sourceKey:"VMILL2",
type:"/assetTypes/5dd3d10f-b338-326a-a2ef-bdf764b80ac4",
uri:"/assets/70f81046-f071-31dc-81b3-6511e1f8349f"
}
];
server.respondWith(
'GET',
"/assets", [
200,
responseHeaders.json,
JSON.stringify(fakeResponseBody)
]
);
replace('product-table-view').with('fake-product-table-view');
window.myEl = fixture("admin-products-view-fixture");
Polymer.dom.flush();
flush(done);
});
teardown(function(done) {
server.restore();
done();
});
test("admin-products-view exists", function() {
expect(myEl).to.exist;
});
test('just some ajax request', function(done) {
var ajax = window.myEl.getElementsByTagName('iron-ajax')[0];
ajax.lastResponse = null;
ajax.generateRequest();
server.respond();
flush(function() {
assert.equal(adminProductsView.assets.length, 3);
done();
});
});
test('some failed ajax request', function(done) {
server.respondWith(
'GET',
"/assets", [
500,
responseHeaders.json,
JSON.stringify({error: "some error"})
]
);
var ajax = window.myEl.getElementsByTagName('iron-ajax')[0];
var testFunction = function(event){
assert.equal(event.detail.errorMessage, 'fakeAssetsError');
assert.equal(event.detail.messageTitle, 'fakeError');
window.removeEventListener('alert-error-message',testFunction);
done();
}
window.addEventListener('alert-error-message',testFunction);
ajax.lastResponse = null;
ajax.generateRequest();
server.respond();
flush(function() {
});
});
test('should modify assets objects to only include value, name, and selected properties', function(done) {
var expectedAssetData = [
{
"value":"512ebfe7-f09b-3fa4-9f1f-2734b6b302c8",
"name":"CNCVMPE7",
"selected":false
},
{
"value":"6d4ee26e-7f70-3d82-b770-17c2ad78b33b",
"name":"OPER3",
"selected":false
},
{
"value":"70f81046-f071-31dc-81b3-6511e1f8349f",
"name":"VMILL2",
"selected":false
}
];
var ajax = window.myEl.getElementsByTagName('iron-ajax')[0];
ajax.lastResponse = null;
ajax.generateRequest();
server.respond();
flush(function() {
assert.deepEqual(adminProductsView.assets, expectedAssetData);
done();
});
});
test('should sort asset data in ascending alphabetical order by name', function(done) {
var ajax = window.myEl.getElementsByTagName('iron-ajax')[0];
ajax.lastResponse = null;
ajax.generateRequest();
server.respond();
flush(function() {
assert.equal(adminProductsView.assets[0].name, "CNCVMPE7");
assert.equal(adminProductsView.assets[1].name, "OPER3");
assert.equal(adminProductsView.assets[2].name, "VMILL2");
done();
});
});
});
</script>
</body>
</html>