UNPKG

product-admin

Version:

EA admin screens

176 lines (146 loc) 4.85 kB
<!DOCTYPE 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>