diff options
Diffstat (limited to 'vaadin-grid/test')
-rw-r--r-- | vaadin-grid/test/common.js | 86 | ||||
-rw-r--r-- | vaadin-grid/test/grid-binding-data.html | 185 | ||||
-rw-r--r-- | vaadin-grid/test/grid-editing-columns.html | 412 | ||||
-rw-r--r-- | vaadin-grid/test/grid-editor-handler.html | 202 | ||||
-rw-r--r-- | vaadin-grid/test/grid-properties.html | 86 | ||||
-rw-r--r-- | vaadin-grid/test/grid-redrawer.html | 201 | ||||
-rw-r--r-- | vaadin-grid/test/grid-rendering-light-dom.html | 130 | ||||
-rw-r--r-- | vaadin-grid/test/grid-scrolling-rows.html | 114 | ||||
-rw-r--r-- | vaadin-grid/test/grid-selecting-rows.html | 645 | ||||
-rw-r--r-- | vaadin-grid/test/grid-sorting-rows.html | 100 | ||||
-rw-r--r-- | vaadin-grid/test/grid-static-sections.html | 222 | ||||
-rw-r--r-- | vaadin-grid/test/index.html | 24 |
12 files changed, 0 insertions, 2407 deletions
diff --git a/vaadin-grid/test/common.js b/vaadin-grid/test/common.js deleted file mode 100644 index 4815d96..0000000 --- a/vaadin-grid/test/common.js +++ /dev/null @@ -1,86 +0,0 @@ -var grid, wrapper; - -describe.feature = function(description, suite) { - describe(description, function() { - before(function(done) { - initializeGrid(); - - waitUntil(function() { - return grid.then; - }, done, done); - }); - - after(function() { - return grid; //make sure everything is finished before moving on. - }); - - suite(); - }); -}; - -function gridContainsText(_grid, text) { - return Polymer.dom(_grid.root).querySelector(".v-grid-tablewrapper").parentElement.innerHTML.indexOf(text) > -1; -} - -function waitUntil(check, exec, onTimeout) { - var id = setInterval(function() { - if (check()) { - clearInterval(id); - clearTimeout(timeoutId); - exec(); - } - }, 100); - - var timeoutId = setTimeout(function() { - clearInterval(id); - assert.fail(); - onTimeout(); - }, 5000); -} - - -function initializeGrid() { - wrapper = document.getElementById("gridwrapper"); - wrapper.innerHTML = "<v-grid>" + - " <table>" + - " <col header-text='Name'>" + - " <col header-text='Value'>" + - " <tbody>" + - " <tr>" + - " <td>Grid</td>" + - " <td>10000</td>" + - " </tr>" + - " <tr>" + - " <td>VaadinX</td>" + - " <td>1000</td>" + - " </tr>" + - " </tbody>" + - " <tfoot>" + - " <tr>" + - " <td>Name</td>" + - " <td>Value</td>" + - " </tr>" + - " </tfoot>"+ - " </table>" + - " </v-grid>"; - grid = wrapper.querySelector("v-grid"); - - return grid; -}; - -var local = function() { - return Polymer.dom(grid.root); -}; -var light = function() { - return Polymer.dom(grid); -}; - -var qLocal = function(selector) { - return local().querySelector(selector); -}; -var qaLocal = function(selector) { - return local().querySelectorAll(selector); -}; -var qLight = function(selector) { - return light().querySelector(selector); -}; diff --git a/vaadin-grid/test/grid-binding-data.html b/vaadin-grid/test/grid-binding-data.html deleted file mode 100644 index 2d82b26..0000000 --- a/vaadin-grid/test/grid-binding-data.html +++ /dev/null @@ -1,185 +0,0 @@ -<!DOCTYPE html> -<html> - -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> - -<body> - -<div id="gridwrapper"></div> - -<script> - describe.feature('binding data', function() { - - afterEach(function() { - return grid.then(function() { - - grid.selection.mode = 'single'; - grid.columns = [{name: 'Name', headerHtml: 'Name'}, {name: 'Value', headerHtml: 'Value'}]; - grid.data.source = [['Grid', '10000'], ['VaadinX', '1000']]; - - return grid; - }); - }); - - it('data: object type', function(done) { - grid.columns[0].name = "firstname"; - grid.columns[1].name = "lastname"; - grid.columns.push({ - name: 'salary', - headerHtml: "Salary" - }); - - var mydata = [{ - firstname: "John", - lastname: "Doe", - salary: 1234.56 - }, { - firstname: "Jane", - lastname: "Doe", - salary: 2345.67 - }, ]; - - grid.data.source = function(request) { - request.success(mydata.slice(request.index, request.index + - request.count), mydata.length); - }; - - - waitUntil(function() { - return gridContainsText(grid, "2345.67"); - }, function() { - var cells = qaLocal(".v-grid-body .v-grid-cell"); - assert.equal(cells[0].innerHTML, "John"); - assert.equal(cells[2].innerHTML, "1234.56"); - assert.equal(cells[3].innerHTML, "Jane"); - assert.equal(cells[4].innerHTML, "Doe"); - done(); - }, done); - - }); - - it('data: array type', function(done) { - grid.columns.push({ - headerHtml: "Salary" - }); - - mydata = [ - ["John", "Doe", 1234.56], - ["Jane", "Doe", 2345.67], - ]; - - grid.data.source = mydata; - - waitUntil(function() { - return gridContainsText(grid, "2345.67"); - }, function() { - var cells = qaLocal(".v-grid-body .v-grid-cell"); - assert.equal(cells[0].innerHTML, "John"); - assert.equal(cells[2].innerHTML, "1234.56"); - assert.equal(cells[3].innerHTML, "Jane"); - assert.equal(cells[4].innerHTML, "Doe"); - done(); - }, done); - - }); - - it('data: boolean type', function(done) { - grid.columns.splice(0, 1); - grid.selection.mode = "multi"; - - waitUntil(function() { - return qLocal("input[type='checkbox']"); - }, function() { - var mydata = [ - false, - true, - ]; - - grid.data.source = function(request) { - request.success(mydata.slice(request.index, request.index + - request.count), mydata.length); - }; - - waitUntil(function() { - return gridContainsText(grid, "false"); - }, function() { - var cells = qaLocal(".v-grid-body .v-grid-cell"); - assert.equal(cells[3].innerHTML, "true"); - done(); - }, done); - }, done); - - }); - - it('data: string type', function(done) { - grid.columns.splice(0, 1); - grid.selection.mode = "multi"; - - waitUntil(function() { - return qLocal("input[type='checkbox']"); - }, function() { - var mydata = [ - "Lorem", - "Ipsum", - ]; - - grid.data.source = function(request) { - request.success(mydata.slice(request.index, request.index + - request.count), mydata.length); - }; - - waitUntil(function() { - return gridContainsText(grid, "Lorem"); - }, function() { - var cells = qaLocal(".v-grid-body .v-grid-cell"); - assert.equal(cells[3].innerHTML, "Ipsum"); - done(); - }, done); - }, done); - - }); - - it('data: non-object types', function(done) { - var first = grid.columns[0]; - grid.columns.splice(0, 1); - grid.columns.push(first); - grid.columns.splice(1, 1); - grid._grid.setRows(5); - - - var mydata = [ - 1, 2, null, undefined, 1, "cellsready" - ]; - - grid.data.source = function(request) { - request.success(mydata.slice(request.index, request.index + - request.count), mydata.length); - }; - - waitUntil(function() { - return gridContainsText(grid, "cellsready"); - }, function() { - var cells = qaLocal(".v-grid-body .v-grid-cell"); - assert.equal(cells[0].innerHTML, "1"); - assert.equal(cells[1].innerHTML, "2"); - assert.equal(cells[2].innerHTML, ""); - assert.equal(cells[3].innerHTML, ""); - assert.equal(cells[4].innerHTML, "1"); - done(); - }, done); - - }); - }); -</script> - -</body> -</html> diff --git a/vaadin-grid/test/grid-editing-columns.html b/vaadin-grid/test/grid-editing-columns.html deleted file mode 100644 index 105aa3e..0000000 --- a/vaadin-grid/test/grid-editing-columns.html +++ /dev/null @@ -1,412 +0,0 @@ -<!DOCTYPE html> -<html> - -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> - -<body> - -<div id="gridwrapper"></div> - -<script> - describe.feature('editing columns', function() { - - function getFirstCell() { - return qLocal('.v-grid-body .v-grid-cell'); - } - - beforeEach(function() { - return grid.then(function() { - - grid.selection.mode = 'single'; - grid.frozenColumns = 0; - grid.columns = [{name: 'Name', headerContent: 'Name'}, {name: 'Value', headerContent: 'Value'}]; - grid.data.source = [['Grid', '10000'], ['VaadinX', '1000']]; - - return grid; - }); - }); - - it('add new column', function() { - grid.addColumn({ - name: "foo", - headerContent: "<b>Foo</b>", - sortable: true, - minWidth: 100, - maxWidth: 200, - width: 150, - flex: 1, - }); - - var c = grid.columns[grid.columns.length - 1]; - assert.equal(c.name, "foo"); - assert.equal(c.headerContent, "<b>Foo</b>"); - assert.equal(c.sortable, true); - assert.notOk(c.editable); - assert.equal(c.minWidth, 100); - assert.equal(c.maxWidth, 200); - assert.equal(c.width, 150); - assert.equal(c.flex, 1); - }); - - it('add new column before', function(done) { - - expect(grid.addColumn.bind(grid, { - name: "foo" - }, -1)).to.throw("Column not found."); - - expect(grid.addColumn.bind(grid, { - name: "foo" - }, 100)).to.throw("Column not found."); - - grid.addColumn({ - name: "foo", - headerContent: "foo" - }, 0); - grid.addColumn({ - name: "bar", - headerContent: "testHtml" - }, "foo"); - - waitUntil(function() { - return gridContainsText(grid, "testHtml"); - }, function() { - var headers = qaLocal(".v-grid-header .v-grid-row th"); - assert.equal(headers[0].innerHTML, "testHtml"); - assert.equal(headers[1].innerHTML, "foo"); - - expect(grid.addColumn.bind(grid, { - name: "baz" - }, "foobar")).to.throw("Column not found."); - done(); - }, done); - - }); - - it('edit new column', function(done) { - var c = { - name: "foo", - headerContent: "testHtml" - }; - grid.addColumn(c); - - waitUntil(function() { - return gridContainsText(grid, "testHtml"); - }, function() { - - var headers = qaLocal(".v-grid-header .v-grid-row th"); - assert.equal(headers[grid.columns.length - 1].innerHTML, "testHtml"); - - c.headerContent = "testHtml2"; - - waitUntil(function() { - return gridContainsText(grid, "testHtml2"); - }, function() { - assert.equal(headers[grid.columns.length - 1].innerHTML, "testHtml2"); - done(); - }, done); - - }, done); - - }); - - it('edit existing column', function(done) { - grid.columns[0].headerContent = "testHtml"; - waitUntil(function() { - return gridContainsText(grid, "testHtml"); - }, function() { - var headers = qaLocal(".v-grid-header .v-grid-row th"); - assert.equal(headers[0].innerHTML, "testHtml"); - done(); - }); - }); - - it('generated value', function(done) { - grid.addColumn({ - valueGenerator: function(dataItem) { - return "foo " + dataItem[0]; - } - }); - - waitUntil(function() { - return gridContainsText(grid, "foo Grid"); - }, done, done); - }); - - it('setting valueGenerator shouldnt fire select', function() { - var selectListener = sinon.spy(); - grid.addEventListener('select', selectListener); - - grid.selection.mode = "multi"; - grid.columns[0].valueGenerator = function() { return 1; }; - expect(selectListener.notCalled).to.be.true; - }); - - it('should not update the generated value', function(done) { - grid.columns[0].valueGenerator = function(dataItem) { - return Math.random(); - }; - - grid.then(function() { - var generatedValue = getFirstCell().innerText; - grid.selection.select(0); - expect(generatedValue).to.eql(getFirstCell().innerText); - done(); - }); - - }); - - it('renderer property', function(done) { - grid.columns[0].renderer = function(cell) { - cell.element.innerHTML = "<b>" + cell.data + "</b>"; - }; - - waitUntil(function() { - return gridContainsText(grid, "<b>Grid</b>"); - }, done, done); - }); - - it('renderer: cell values on change', function(done) { - var mydata = [ - ["John", "TestFoo"], - ["Jane", "TestBar"], - ]; - - grid.data.source = mydata; - - grid.columns[1].renderer = function(cell) { - cell.element.innerHTML = cell.data; - cell.element.cell = cell; - }; - - waitUntil(function() { - return gridContainsText(grid, "TestFoo"); - }, function() { - var cell = grid.querySelectorAll(".v-grid-body .v-grid-cell")[3].cell; - assert.equal(cell.row.index, 1); - assert.equal(cell.index, 1); - - mydata.splice(0, 1); - mydata[0].splice(0, 1); - grid.data.clearCache(); - - grid.columns.splice(0, 1); - waitUntil(function() { - return !gridContainsText(grid, "TestFoo"); - }, function() { - assert.equal(cell.row.index, 0); - assert.equal(cell.index, 0); - done(); - }, done); - }, done); - - }); - - it('initial property values', function() { - assert.equal(grid.columns[0].headerContent, "Name"); - }); - - describe('modifying columns array directly', function() { - it('should replace header content', function() { - expect(grid.querySelector('th').textContent).to.equal('Name'); - - grid.columns[0].headerContent = 'Foo'; - - return grid.then(function() { - expect(grid.querySelector('th').textContent).to.equal('Foo'); - }); - }); - - // fails because of replacing columns doesn't render row contents, - // see https://trello.com/c/8e27Tv3q/58-v-grid-bugs - it.skip('should render row contents', function() { - expect(grid.querySelectorAll('td').textContent).to.equal('Grid'); - - grid.columns = [{headerContent: 'Foo'}]; - - return grid.then(function() { - expect(grid.querySelectorAll('td').textContent).to.equal('Grid'); - }); - }); - }); - - it('modify columns array', function(done) { - var col = grid.columns[0]; - grid.columns.splice(1, 1); - - waitUntil(function() { - return !gridContainsText(grid, "Progress"); - }, function() { - grid.columns.push({ - headerContent: "testHtml" - }); - waitUntil(function() { - return gridContainsText(grid, "testHtml"); - }, done, done); - }, done); - }); - - it('remove column', function(done) { - grid.addColumn({ - name: "test", - headerContent: "test" - }); - grid.removeColumn(0); - - waitUntil(function() { - return !gridContainsText(grid, "Name") && gridContainsText(grid, "test"); - }, function() { - grid.removeColumn("test"); - waitUntil(function() { - return !gridContainsText(grid, "test"); - }, done, done); - }, done); - }); - - it('add new column to an empty grid', function(done) { - grid.columns = []; - - grid.columns.push({ - name: "foo", - headerContent: "fooheader" - }); - - grid.then(function() { - expect(gridContainsText(grid, 'fooheader')).to.be.true; - done(); - }); - }); - - it('frozen column', function(done) { - grid.frozenColumns = 1; - - waitUntil(function() { - return gridContainsText(grid, "v-grid-cell frozen"); - }, function() { - var headers = qaLocal(".v-grid-header .v-grid-row th"); - assert.isTrue(headers[0].classList.contains("frozen")); - done(); - }, done); - - }); - - it('frozen column declarative', function() { - grid.setAttribute("frozen-columns", "1"); - - return grid.then(function() { - expect(function(){grid.selection.mode = "multi";}).not.to.throw(); - }); - }); - - it('frozen column: unfreeze selection column', function() { - grid.selection.mode = "multi"; - assert.ok(qLocal(".frozen")); - - grid.frozenColumns = -1; - assert.notOk(qLocal(".frozen")); - }); - - it('should add a column to an empty grid with an index', function() { - grid.columns = []; - return grid.then(function() { - grid.addColumn({headerContent: "foo"}, 0); - return grid; - }).then(function() { - expect(qaLocal(".v-grid-header .v-grid-cell")).to.have.length(1); - return grid; - }); - }); - - it('should reference header cell after adding a new column', function() { - grid.addColumn({name: "foo"}); - grid.header.getCell(0, "foo").content = "foo"; - expect(grid.columns[2].headerContent).to.eql("foo"); - }); - - it('should support nested column names', function() { - grid.addColumn({ - name: "foo.bar.baz", - }); - grid.data.source = [{ - foo: { - bar: { - baz: "testing" - } - } - }]; - return grid.then(function() { - expect(gridContainsText(grid, "testing")).to.be.true; - }); - }); - - it('should not return values from name path', function() { - grid.addColumn({ - name: "foo.bar.baz", - }); - grid.data.source = [{ - foo: { - bar: "testing" - } - }]; - return grid.then(function() { - expect(gridContainsText(grid, "testing")).to.be.false; - }); - }); - - it('should allow undefined nested values', function() { - grid.addColumn({ - name: "foo.bar.baz", - }); - grid.data.source = [{ - foo: { - bar: undefined - } - }]; - return grid.then(function() { - expect(qaLocal(".v-grid-body .v-grid-cell")[2].innerHTML).to.be.empty; - }); - }); - - it('should have the right default value if flex attribute exists', function() { - qLight("table col").setAttribute("flex", ""); - return grid.then(function() { - expect(grid.columns[0].flex).to.eql(1); - expect(grid.columns[1].flex).to.eql(-1); - }); - }); - - it('should size columns with width property', function() { - grid.columns[0].width = 100; - return grid.then(function(){ - expect(qLocal(".v-grid-cell").offsetWidth).to.eql(100); - }); - }); - - it('should size columns with minWidth property', function() { - grid.columns[0].width = 100; - grid.columns[0].minWidth = 150; - return grid.then(function(){ - expect(qLocal(".v-grid-cell").offsetWidth).to.eql(150); - }); - }); - - it('should size columns with maxWidth property', function() { - grid.columns[0].maxWidth = 100; - return grid.then(function(){ - expect(qLocal(".v-grid-cell").offsetWidth).to.eql(100); - }); - }); - - }); -</script> - -</body> -</html> diff --git a/vaadin-grid/test/grid-editor-handler.html b/vaadin-grid/test/grid-editor-handler.html deleted file mode 100644 index 20c6e66..0000000 --- a/vaadin-grid/test/grid-editor-handler.html +++ /dev/null @@ -1,202 +0,0 @@ -<!DOCTYPE html> -<html> - -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> - -<body> - -<div id="gridwrapper"></div> - -<script> - describe.feature('using editor handler', function() { - var editorHandler; - - beforeEach(function() { - grid.columns = [{name: 'Name'}, {name: 'Value'}]; - grid.editor.cancel(); - - editorHandler = { - getCellEditor: function(columnObject) { - var input = document.createElement("input"); - return input; - }, - bind: function(req) { - for (var i = 0; i < req.grid.columns.length; i++) { - var col = req.grid.columns[i]; - if (!col.readOnly) { - var el = req.getCellEditor(col); - el.value = req.dataItem[i]; - } - } - req.success(); - }, - save: function(req) { - var failingColumns = []; - for (var i = 0; i < req.grid.columns.length; i++) { - var col = req.grid.columns[i]; - var el = req.getCellEditor(col); - if (el.value == "fail") { - failingColumns.push(col); - } - } - if (failingColumns.length > 0) { - req.failure("Save failed", failingColumns); - } else { - req.success(); - } - } - }; - - grid.editor.handler = editorHandler; - - return grid; - }); - - it('editor: enabled', function() { - grid.columns[0].name = "name"; - grid.columns[1].name = "value"; - grid.editor.handler = editorHandler; - expect(grid.editor.editRow.bind(grid.editor, 0)).to.throw("editor is not enabled"); - grid.editor.enabled = true; - grid.editor.editRow(0); - - assert.isTrue(gridContainsText(grid, "v-grid-editor")); - }); - - it('editor: saveButtonText and cancelButtonText', function() { - grid.columns[0].name = "name"; - grid.columns[1].name = "value"; - grid.editor.handler = editorHandler; - grid.editor.enabled = true; - grid.editor.editRow(0); - grid.editor.saveButtonText = "saveButtonTextFoo"; - grid.editor.cancelButtonText = "cancelButtonTextFoo"; - - assert.isTrue(gridContainsText(grid, "saveButtonTextFoo")); - assert.isTrue(gridContainsText(grid, "cancelButtonTextFoo")); - }); - - it('editor: editrow', function() { - grid.columns[0].name = "name"; - grid.columns[1].name = "value"; - grid.editor.handler = editorHandler; - grid.editor.enabled = true; - - grid.editor.editRow(0); - assert.equal(qLocal(".v-grid-editor input").value, "Grid"); - grid.editor.cancel(); - assert.isFalse(gridContainsText(grid, "v-grid-editor")); - grid.editor.editRow(1); - assert.equal(qLocal(".v-grid-editor input").value, "VaadinX"); - grid.editor.save(); - assert.isFalse(gridContainsText(grid, "v-grid-editor")); - - expect(grid.editor.editRow.bind(grid.editor, 10)).to.throw("Row index"); - }); - - it('editor: failure', function() { - grid.columns[0].name = "name"; - grid.columns[1].name = "value"; - grid.editor.handler = editorHandler; - grid.editor.enabled = true; - - grid.editor.editRow(0); - var fields = qaLocal(".v-grid-editor input"); - fields[0].value = "fail"; - grid.editor.save(); - - assert.isTrue(gridContainsText(grid, "Save failed")); - var cells = qaLocal(".v-grid-editor-cells > div"); - assert.isTrue(cells[0].classList.contains("error")); - assert.isFalse(cells[1].classList.contains("error")); - - }); - - it('editor: return null cell editor', function() { - grid.columns[0].name = "name"; - grid.columns[1].name = "value"; - grid.editor.handler = { - getCellEditor: function(columnObject) { - return columnObject === grid.columns[0] ? null : undefined; - }, - bind: function(req) { - req.success(); - } - }; - grid.editor.enabled = true; - - grid.editor.editRow(0); - var cells = qaLocal(".v-grid-editor .v-grid-editor-cells > div"); - assert.lengthOf(cells, 2); - - var editors = qaLocal(".v-grid-editor .v-grid-editor-cells > div *"); - assert.lengthOf(editors, 0); - }); - - it('editor: element instance after save', function() { - grid.editor.enabled = true; - grid.editor.handler = editorHandler; - - var editor1, editor2; - editorHandler.save = function(req) { - if (!editor1) { - editor1 = req.getCellEditor(grid.columns[0]); - req.failure(); - } else { - editor2 = req.getCellEditor(grid.columns[0]); - req.success(); - } - }; - grid.editor.editRow(0); - - //Save fails - grid.editor.save(); - //Save succeeds - grid.editor.save(); - - assert.equal(editor1, editor2); - }); - - // fails because of replacing columns doesn't render row contents, - // see https://trello.com/c/8e27Tv3q/58-v-grid-bugs - it.skip('editor: default editor', function() { - grid.editor.enabled = true; - grid.editor.editRow(0); - - return grid.then(function() { - assert.equal("Grid", grid.querySelector('tbody tr td').textContent); - assert.equal("Grid", grid.querySelector('input').value); - - grid.querySelector('input').value = "Foo"; - grid.editor.save(); - }); - - }); - - it('editor: getCellEditor and read-only columns', function() { - grid.columns[0].readOnly = true; - - sinon.spy(editorHandler, "getCellEditor"); - - grid.editor.handler = editorHandler; - grid.editor.enabled = true; - grid.editor.editRow(0); - - assert.isTrue(editorHandler.getCellEditor.calledOnce); - - editorHandler.getCellEditor.restore(); - }); - }); -</script> - -</body> -</html> diff --git a/vaadin-grid/test/grid-properties.html b/vaadin-grid/test/grid-properties.html deleted file mode 100644 index 46743a4..0000000 --- a/vaadin-grid/test/grid-properties.html +++ /dev/null @@ -1,86 +0,0 @@ -<!DOCTYPE html> -<html> - -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> - -<body> - -<div id="gridwrapper"></div> - -<script> - describe.feature('using properties', function() { - - it('rowClassGenerator', function() { - var gridEquals = true; - var elementEquals = true; - assert.notOk(grid.rowClassGenerator); - var rowClassGenerator = function(row) { - gridEquals = gridEquals && row.grid == grid; - elementEquals = elementEquals && row.element == qaLocal(".v-grid-body .v-grid-row")[row.index]; - return row.index + "_" + row.data[0]; - }; - - grid.rowClassGenerator = rowClassGenerator; - - assert.isTrue(elementEquals && gridEquals); - assert.isTrue(qLocal(".v-grid-body .v-grid-row").classList.contains("0_Grid")); - assert.equal(grid.rowClassGenerator, rowClassGenerator); - }); - - it('cellClassGenerator', function() { - var elementEquals = true; - - grid.columns[0].name = "name"; - grid.columns[1].name = "value"; - assert.notOk(grid.cellClassGenerator); - var cellClassGenerator = function(cell) { - var columnIndex = cell.columnName == "name" ? 0 : 1; - var cellElement = qaLocal(".v-grid-body .v-grid-row")[cell.row.index].querySelectorAll(".v-grid-cell")[columnIndex]; - elementEquals = elementEquals && cell.element == cellElement; - return cell.columnName; - }; - - grid.cellClassGenerator = cellClassGenerator; - - assert.isTrue(elementEquals); - assert.isTrue(qLocal(".v-grid-body .v-grid-row .v-grid-cell").classList.contains("name")); - assert.equal(grid.cellClassGenerator, cellClassGenerator); - }); - - it('should be enabled by default', function() { - expect(grid.disabled).to.be.false; - }); - - it('should disable', function() { - grid.disabled = true; - expect(grid.disabled).to.be.true; - }); - - it('should reflect disabled to attribute', function() { - grid.disabled = true; - expect(grid.hasAttribute("disabled")).to.be.true; - grid.disabled = false; - expect(grid.hasAttribute("disabled")).to.be.false; - }); - - it('should apply disabled attribute', function() { - grid.setAttribute("disabled", true); - expect(grid.disabled).to.be.true; - grid.removeAttribute("disabled"); - expect(grid.disabled).to.be.false; - }); - }); - -</script> - -</body> -</html> diff --git a/vaadin-grid/test/grid-redrawer.html b/vaadin-grid/test/grid-redrawer.html deleted file mode 100644 index 81c5f49..0000000 --- a/vaadin-grid/test/grid-redrawer.html +++ /dev/null @@ -1,201 +0,0 @@ -<!DOCTYPE html> -<html> - -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> - -<body> - -<div id="gridwrapper"></div> - -<script> - describe.feature('redrawer', function() { - function width(e) { - return pxval(e, 'width'); - } - - function height(e) { - return pxval(e, 'height'); - } - - function pxval(e, prop) { - return parseInt(e.ownerDocument.defaultView.getComputedStyle(e).getPropertyValue(prop).replace('px', '')); - } - - describe('redraw', function() { - function assertHeightByRows(rows) { - var headersHeight = headers * thHeight; - var footersHeight = footers * tfHeight; - - h1 = headersHeight + footersHeight + rows * tdHeight; - // IE and FF add an aditional pixel to each row - h2 = h1 + rows + headers + footers; - - expect([h1, h2]).to.include(height(inner)); - } - - function assertSameDimensions() { - expect(width(grid)).to.equal(width(inner)); - expect(height(grid)).to.equal(height(inner)); - } - - var inner, - tbody, - headers, - footers, - tfHeight, - thHeight, - tdHeight - - beforeEach(function() { - inner = qaLocal("div.v-grid")[1]; - tbody = qLight('table tbody'); - - headers = qaLocal('thead tr').length; - footers = qaLocal('tfoot tr').length; - - tfHeight = height(qLocal('tfoot tr td')); - thHeight = height(qLocal('thead tr th')); - tdHeight = height(qLocal('tbody tr td')); - - grid.style.height = ""; - grid.style.width = ""; - grid.removeAttribute('rows'); - - // need to return thenable object for FF sake. - return grid; - }); - - // currently disabled because the grid.then call jams the test on IE. - it.skip('should draw correct dimensions and row heights by default', function() { - return grid.then(function() { - assertSameDimensions(); - assertHeightByRows(2); - }); - }); - - it('should redraw correctly after modifying body', function() { - tbody.innerHTML += tbody.innerHTML; - - return grid.then(function() { - assertSameDimensions(); - assertHeightByRows(4); - }); - }); - - describe('using limited row visibility', function() { - before(function() { - // Increase the number of rows - tbody.innerHTML += tbody.innerHTML; //4 - tbody.innerHTML += tbody.innerHTML; //8 - tbody.innerHTML += tbody.innerHTML; //16 - - return grid; - }); - - it('should redraw only visible rows', function() { - return grid.then(function() { - assertSameDimensions(); - - // grid has a limit of 10 data rows by default - assertHeightByRows(10); - }); - }); - - it('should redraw visible rows after limit is decreased', function() { - grid.rows = 3; - - return grid.then(function() { - assertSameDimensions(); - - assertHeightByRows(3); - }); - }); - - it('should redraw visible rows limit is removed', function() { - grid.rows = 0; - - return grid.then(function() { - assertSameDimensions(); - - assertHeightByRows(10); // default - }); - }); - }); - - it('should redraw with fixed dimensions', function() { - grid.style.width = '300px'; - grid.style.height = '100px'; - - return grid.then(function() { - return grid.then(function() { - assertSameDimensions(); - }); - }); - }); - - describe('grid with a fixed height (issue #8)', function() { - it('should keep the correct height after sorting', function() { - grid.columns[0].sortable = true; - grid.style.height = "500px"; - - var firstNonFrozenHeaderCell = qLocal.bind(this, ".v-grid-header .v-grid-cell:not(.frozen)"); - firstNonFrozenHeaderCell().click(); - - return grid.then(function() { - expect(qaLocal('.v-grid')[3].style.height).to.equal('100%'); - }); - }); - }); - - describe('using scaled dimensions', function() { - beforeEach(function() { - grid.style.position = 'absolute'; - grid.style.width = '100%'; - grid.style.height = '100%'; - - return grid; - }); - - it('should redraw with scaled dimensions', function() { - assertSameDimensions(); - }); - - it('should match dimensions with the surrounding div', function() { - expect(height(grid)).to.equal(document.body.clientHeight); - - // For some reason in IE sometimes there is a slight difference of 1 pixels - expect(Math.abs(document.body.clientWidth - width(grid))).to.be.at.most(1); - }) - - it('should allow different dimensions for v-grid and inner div', function() { - // We can have different height for v-grid and the inner grid. - // Also we can define more than 10 rows. - tbody.innerHTML += tbody.innerHTML; //4 - tbody.innerHTML += tbody.innerHTML; //8 - tbody.innerHTML += tbody.innerHTML; //16 - - grid.rows = 12; - grid.style.width = '50%'; - - return grid.then(function() { - expect(height(grid)).to.not.equal(height(inner)); - assert.equal(width(grid), width(inner)); - assertHeightByRows(12); - }); - }); - }); - }); - }); -</script> - -</body> -</html> diff --git a/vaadin-grid/test/grid-rendering-light-dom.html b/vaadin-grid/test/grid-rendering-light-dom.html deleted file mode 100644 index 0251cd7..0000000 --- a/vaadin-grid/test/grid-rendering-light-dom.html +++ /dev/null @@ -1,130 +0,0 @@ -<!DOCTYPE html> -<html> - -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> - -<body> - -<div id="gridwrapper"></div> - -<script> - describe.feature('rendering light DOM', function() { - it('light dom table header gets rendered in the grid', function() { - var row = qLocal(".v-grid-header .v-grid-row"); - var cells = row.childNodes; - - assert.isTrue(cells[0].innerHTML == 'Name'); - assert.isTrue(cells[1].innerHTML == 'Value'); - }); - - it('light dom table body gets rendered in the grid', function() { - var row = qLocal(".v-grid-body .v-grid-row"); - var cells = row.childNodes; - - assert.isTrue(cells[0].innerHTML == 'Grid'); - assert.isTrue(cells[1].innerHTML == '10000'); - }); - - function removeGrid() { - if (grid) { - grid.style.visibility = "hidden"; - document.body.appendChild(grid); - grid = null; - } - } - - // makes grid.then in afterEach to never finish... - it.skip('DOM: headers & footers', function(done) { -// removeGrid(); - wrapper.innerHTML = "<v-grid><table>" + - "<thead hidden><tr class='red'><td colspan='2'></td></tr><tr class='pink'><th></th><th></th></tr></thead>" + - "<tfoot><tr class='foot1'><td colspan='2'></td></tr><tr class='foot2'><td></td><td></td></tr></tfoot>" + - "</table></v-grid>"; - grid = wrapper.querySelector("v-grid"); - - waitUntil(function() { - return qLocal(".v-grid-body"); - }, function() { - assert.equal(0, qaLocal("thead tr").length); - assert.equal(1, qaLocal("tfoot tr.foot1").length); - assert.equal(1, qaLocal("tfoot tr.foot2").length); - assert.equal(1, qaLocal("tfoot td[colspan='2']").length); - - qLight("thead").setAttribute('hidden', false) - waitUntil(function() { - return qaLocal("thead tr").length > 0; - }, function() { - assert.equal(1, qaLocal("thead tr.red").length); - assert.equal(1, qaLocal("thead tr.pink").length); - assert.equal(1, qaLocal("thead th[colspan='2']").length); - done(); - }, done); - - }, done); - }); - - it('DOM: mutation', function(done) { - waitUntil(function() { - return qLocal(".v-grid-body"); - }, function() { - var nrows = qaLocal("tbody tr").length; - var nheads = qaLocal("thead tr").length; - qLight("thead").innerHTML += qLight("table thead").innerHTML; - qLight("tbody").innerHTML += qLight("table tbody").innerHTML; - assert.equal("Name", qLocal("th").textContent); - qLight("th").textContent = "foo"; - waitUntil(function() { - return qLocal("tbody tr") && qaLocal("tbody tr").length == nrows * 2; - }, function() { - assert.equal(qaLocal("tbody tr").length, nrows * 2); - assert.equal(qaLocal("thead tr").length, nheads * 2); - assert.equal("foo", qLocal("th").textContent); - done(); - }, done); - }, done); - }); - - it('should have a sort-order', function(done) { - var ths = light().querySelectorAll("th"); - ths[0].setAttribute("sort-direction", "asc"); - ths[1].setAttribute("sort-direction", "desc"); - - grid.then(function(){ - var sortOrder = grid.sortOrder; - expect(grid.sortOrder[0]).to.eql({column: 0, direction: "asc"}); - expect(grid.sortOrder[1]).to.eql({column: 1, direction: "desc"}); - }).then(done); - }); - - it('should apply header-text from a th element', function(done) { - light().querySelector("th").setAttribute("header-text", "foo"); - - grid.then(function(){ - expect(grid.columns[0].headerHtml).to.eql("foo"); - }).then(done); - }); - - it('should apply header-text from a col element', function(done) { - var col = document.createElement("col"); - col.setAttribute("header-text", "foo"); - light().querySelector("table").prependChild(col); - - grid.then(function(){ - expect(grid.columns[0].headerHtml).to.eql("foo"); - }).then(done); - }); - - }); -</script> - -</body> -</html> diff --git a/vaadin-grid/test/grid-scrolling-rows.html b/vaadin-grid/test/grid-scrolling-rows.html deleted file mode 100644 index a0ff781..0000000 --- a/vaadin-grid/test/grid-scrolling-rows.html +++ /dev/null @@ -1,114 +0,0 @@ -<!DOCTYPE html> -<html> - -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> - -<body> - -<div id="gridwrapper"></div> - -<script> - describe.feature('scrolling rows', function() { - - var infiniteDataSource = function(req) { - var data = []; - for (var i = req.index; i < req.index + req.count; i++) { - data.push(["foo " + i, "bar " + i]); - } - req.success(data, this.size); - }; - - function firstColumnContents() { - var cells = qaLocal('td'); - - return _.chain(cells) - .filter(function(n) { - return _.indexOf(cells, n) % 2 == 0; - }) - .map(function(n) { - return n.textContent; - }) - .reduce(function(result, n) { - return result + ', ' + n; - }).value(); - } - - before(function() { - infiniteDataSource.size = 100; - grid.data.source = infiniteDataSource; - grid.rows = 5; - - return grid; - }); - - beforeEach(function() { - //reset position to an arbitrary row. - return grid.scrollToRow(24).then(function () { - // calling scrollToRow - scrollToRow - then seems to quite often - // run the callback in 'then' before the latter scrolling has finished. - // This is most likely caused by multiple timers being fired inside the Grid, - // and there's some gap between them - which makes grid.isWorkPending() to return - // 'false' too soon. - // Adding one 'then' in between the scrolling calls - // doesn't seem to remedy the situation. So let's add more. - return grid; - }); - }); - - it('should throw an error when scrolling to an invalid row', function() { - expect(grid.scrollToRow.bind(grid, -1)).to.throw("Row index"); - expect(grid.scrollToRow.bind(grid, 100)).to.throw("Row index"); - }); - - it('should scroll using scrollToRow', function() { - return grid.scrollToRow(50) - .then(function() { - expect(firstColumnContents()).to.contain('foo 50'); - }); - }); - - describe('scrolling with destination', function() { - it('should scroll to start', function() { - return grid.scrollToRow(50, 'start') - .then(function() { - expect(firstColumnContents()).to.contain('foo 50'); - expect(firstColumnContents()).to.contain('foo 54'); - }); - }); - - it('should scroll to end', function() { - return grid.scrollToRow(50, 'end') - .then(function() { - expect(firstColumnContents()).to.contain('foo 46'); - expect(firstColumnContents()).to.contain('foo 50'); - }); - }); - }); - - it('should scroll to end', function() { - return grid.scrollToEnd() - .then(function() { - expect(firstColumnContents()).to.contain('foo 99'); - }); - }); - - it('should scroll to start', function() { - return grid.scrollToStart() - .then(function() { - expect(firstColumnContents()).to.contain('foo 0'); - }); - }); - }); -</script> - -</body> -</html> diff --git a/vaadin-grid/test/grid-selecting-rows.html b/vaadin-grid/test/grid-selecting-rows.html deleted file mode 100644 index 0ac2eee..0000000 --- a/vaadin-grid/test/grid-selecting-rows.html +++ /dev/null @@ -1,645 +0,0 @@ -<!DOCTYPE html> -<html> - -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> - -<body> - - <div id="gridwrapper"></div> - - <script> - describe.feature('selecting rows', function() { - var selectListener; - - before(function() { - selectListener = sinon.spy(); - grid.addEventListener('select', selectListener); - }); - - function getSelectionModeAttr() { - return grid.getAttribute('selection-mode'); - }; - - function setSelectionModeAttr(mode) { - grid.setAttribute('selection-mode', mode); - - return grid; - }; - - afterEach(function() { - selectListener.reset(); - - return grid.then(function() { - // force selection clear - grid.selection.mode = 'disabled'; - grid.selection.mode = 'single'; - - return grid; - }); - }); - - describe('using attributes', function() { - describe('selection-mode', function() { - it('should set selectionMode to disabled', function() { - return setSelectionModeAttr('disabled').then(function() { - expect(grid.selection.mode).to.equal('disabled'); - }); - }); - - it('should set selectionMode to single', function() { - return setSelectionModeAttr('single').then(function() { - expect(grid.selection.mode).to.equal('single'); - }); - }); - - it('should set selectionMode to multi', function() { - return setSelectionModeAttr('multi').then(function() { - expect(grid.selection.mode).to.equal('multi'); - }); - }); - - it('should should remove selectionMode property', function() { - setSelectionModeAttr('disabled'); - grid.removeAttribute('selection-mode'); - - return grid.then(function() { - // 'single' is the default - expect(grid.selection.mode).to.equal('single'); - }); - }); - - // TODO: throws an error, but for some reason expect doesn't catch it. - it.skip('should fail setting the value to foobar', function() { - expect(function() { - setSelectionModeAttr('foobar'); - }).to.throw(Object); - }); - }); - }); - - describe('using properties', function() { - describe('selection.mode', function() { - var checkBoxQuery = "input[type='checkbox']"; - - it('should be single by default', function() { - expect(grid.selection.mode).to.equal('single'); - }); - - it('should be use default value when removing the value', function() { - grid.selection.mode = 'disabled'; - - grid.selection.mode = undefined; - - expect(grid.selection.mode).to.equal('single'); - }); - - it('should set selection-mode to disabled', function() { - grid.selection.mode = 'disabled'; - - return grid.then(function() { - expect(getSelectionModeAttr()).to.equal('disabled'); - expect(qLocal(checkBoxQuery)).to.be.undefined; - }); - }); - - it('should set selection-mode to single', function() { - grid.selection.mode = 'single'; - - return grid.then(function() { - expect(getSelectionModeAttr()).to.equal('single'); - expect(qLocal(checkBoxQuery)).to.be.undefined; - }); - }); - - it('should set selection-mode to multi', function() { - grid.selection.mode = 'multi'; - - return grid.then(function() { - expect(getSelectionModeAttr()).to.equal('multi'); - expect(qLocal(checkBoxQuery)).to.not.be.undefined; - }); - }); - - it('should fail setting the value to foobar', function() { - expect(function() { - grid.selection.mode = 'foobar'; - }).to.throw(Object); - }); - }); - - describe('selected', function() { - describe('with mode: single', function() { - beforeEach(function() { - grid.selection.mode = 'single'; - }); - - it('should clear the selection when changing mode to disabled', function() { - grid.selection.select(0); - - grid.selection.mode = 'disabled'; - - expect(grid.selection.selected()).to.be.empty; - }); - - it('should clear selection when changing mode to multi', function() { - grid.selection.select(0); - - grid.selection.mode = 'multi'; - - expect(grid.selection.selected()).to.be.empty; - }); - }); - - describe('with selectionMode: multi', function() { - beforeEach(function() { - grid.selection.mode = 'multi'; - }); - - it('should fire a \'select\' event', function() { - grid.selection.select(0); - - expect(selectListener.calledOnce).to.be.true; - }); - - it('should clear the selection when changing mode to disabled', function() { - grid.selection.select(0); - - grid.selection.mode = 'disabled'; - - expect(grid.selection.selected()).to.be.empty; - }); - - it('should clear selection when changing mode to single', function() { - grid.selection.select(0); - - grid.selection.mode = 'single'; - - expect(grid.selection.selected()).to.be.empty; - }); - - it('should remove multiple selections when changing mode to single', function() { - grid.selection.select(0); - grid.selection.select(1); - - grid.selection.mode = 'single'; - - expect(grid.selection.selected()).to.be.empty; - }); - }); - - describe('with selectionMode: disabled', function() { - beforeEach(function() { - grid.selection.mode = 'disabled'; - }); - - it('should not select any rows', function() { - grid.selection.select(0); - - expect(grid.selection.selected()).to.be.empty; - }); - }); - }); - }); - - describe('by clicking', function() { - function getFirstCell() { - return qLocal('.v-grid-body .v-grid-cell'); - } - - function clickFirstCell() { - getFirstCell().click(); - - return grid; - } - - before(function() { - // extra 'wait' added for IE11. - return grid; - }); - - it('should fire a \'select\' event', function() { - return clickFirstCell().then(function() { - expect(selectListener.calledOnce).to.be.true; - expect(selectListener.args[0][0]).to.have.property('type', 'select'); - }); - }); - - describe('with selection-mode: single', function() { - beforeEach(function() { - return setSelectionModeAttr('single'); - }); - - it('should select a row', function() { - return clickFirstCell().then(function() { - expect(grid.selection.selected()).to.eql([0]); - }); - }); - }); - - describe('with selection-mode: multi', function() { - beforeEach(function() { - return setSelectionModeAttr('multi'); - }); - - it('should only focus a clicked cell', function() { - return clickFirstCell().then(function() { - expect(grid.selection.selected()).to.be.empty; - expect(getFirstCell().getAttribute('class')).to.contain('focus'); - }); - }); - - // TODO: apparently clicking checkboxes isn't going to happen using JS... - it.skip('should select multiple rows', function() { - var inputs = qaLocal('input'); - inputs[0].checked = true; - inputs[1].click(); - - expect(getSelectedRowsAttr()).to.equal('0,1'); - }); - }); - - describe('with selection-mode: disabled', function() { - beforeEach(function() { - return setSelectionModeAttr('disabled'); - }); - - it('should not select a row', function() { - return clickFirstCell().then(function() { - expect(grid.selection.selected()).to.be.empty; - }); - }); - }); - }); - - describe('by using API', function() { - it('should fire a \'select\' event', function() { - grid.selection.select(0); - - expect(selectListener.calledOnce).to.be.true; - }); - - it('should not select invalid row', function() { - grid.selection.select('foo'); - - expect(grid.selection.selected()).to.be.empty; - }); - - it('should add \'row-selected\' class to the selected row', function() { - return grid.selection.select(1).then(function() { - expect(qaLocal('.v-grid-body .v-grid-row-selected')).to.have.length(1); - }); - }); - - describe('with selectionMode: single', function() { - beforeEach(function() { - grid.selection.mode = 'single'; - }); - - it('should select a row', function() { - grid.selection.select(1); - - expect(grid.selection.selected()).to.eql([1]); - }); - - it('should select another row', function() { - grid.selection.select(1); - grid.selection.select(0); - - expect(grid.selection.selected()).to.eql([0]); - }); - }); - - describe('with selectionMode: multi', function() { - beforeEach(function() { - grid.selection.mode = 'multi'; - }) - - it('should select multiple rows', function() { - grid.selection.select(0); - grid.selection.select(1); - - expect(grid.selection.selected()).to.eql([0,1]); - }); - }); - - describe('with selectionMode: disabled', function() { - beforeEach(function() { - grid.selection.mode = 'disabled'; - }); - - it('should not select a row', function() { - grid.selection.select(0); - - expect(grid.selection.selected()).to.be.empty; - }); - }); - }); - - describe('deselecting rows using API', function() { - it('should fire \'select\' event', function() { - grid.selection.select(0); - - grid.selection.deselect(0); - - expect(selectListener.calledTwice).to.be.true; - }); - - describe('with selectionMode: single', function() { - beforeEach(function() { - grid.selection.mode = 'single'; - }); - - it('should deselect a row', function() { - grid.selection.select(0); - - grid.selection.deselect(0); - - expect(grid.selectedRows).to.be.empty; - }); - - it('should not deselect other rows', function() { - grid.selection.select(0); - - grid.selection.deselect(1); - - expect(grid.selection.selected()).to.eql([0]); - }); - }); - - describe('with selectionMode: multi', function() { - beforeEach(function() { - grid.selection.mode = 'multi'; - }); - - it('should deselect a single row', function() { - grid.selection.select(0); - grid.selection.select(1); - - grid.selection.deselect(0); - - expect(grid.selection.selected()).to.eql([1]); - }); - }); - }); - - describe('selected indexes', function() { - - describe('in mode: single', function() { - beforeEach(function() { - grid.selection.mode = 'single'; - grid.selection.select(0); - }); - - it('should have a right size', function() { - expect(grid.selection.size).to.eql(1); - }); - - it('should have right deselections', function() { - expect(grid.selection.deselected()).to.be.empty; - }); - - it('should have right selections', function() { - expect(grid.selection.selected()).to.eql([0]); - }); - - it('should iterate right selections', function() { - var spy = sinon.spy(); - grid.selection.selected(spy); - expect(spy.calledOnce).to.be.true; - }); - - it('should return right mapped value', function() { - var mapper = function(index){ - return "foo " + index; - }; - expect(grid.selection.selected(mapper)).to.eql(["foo 0"]); - }); - - it('should return nothing with iterator', function() { - var iterator = function(i){ - // Itearate - }; - expect(grid.selection.selected(iterator)).to.be.empty; - }); - - it('clear should work right', function() { - grid.selection.clear(); - expect(grid.selection.selected()).to.be.empty; - }); - - it('selectAll should work right', function() { - grid.selection.selectAll(); - expect(grid.selection.selected()).to.be.empty; - }); - }); - - describe('in mode: multi', function() { - beforeEach(function() { - grid.data.source = function(req) { - var data = []; - for (var i = req.index; i < req.index + req.count; i++) { - data.push(["foo " + i, "bar " + i]); - } - req.success(data, 100); - }; - grid.selection.mode = 'multi'; - grid.selection.select(0); - grid.selection.select(1); - grid.selection.select(80); - grid.selection.select(81); - }); - - it('should have a right size', function() { - expect(grid.selection.size).to.eql(4); - }); - - it('should have right deselections', function() { - expect(grid.selection.deselected()).to.be.empty; - }); - - it('should have right selections', function() { - expect(grid.selection.selected()).to.eql([0,1,80,81]); - }); - - it('should iterate right selections', function() { - var spy = sinon.spy(); - grid.selection.selected(spy); - expect(spy.callCount).to.eql(4); - }); - - it('should return right mapped value', function() { - var mapper = function(index){ - return "foo " + index; - }; - expect(grid.selection.selected(mapper)).to.eql(["foo 0", "foo 1", "foo 80", "foo 81"]); - }); - - it('should return nothing with iterator', function() { - var iterator = function(i){ - // Itearate - }; - expect(grid.selection.selected(iterator)).to.be.empty; - }); - - it('should return tail', function() { - expect(grid.selection.selected(undefined, 3)).to.eql([81]); - }); - - it('should return head', function() { - expect(grid.selection.selected(undefined, undefined, 1)).to.eql([0, 1]); - }); - - it('should return range', function() { - expect(grid.selection.selected(undefined, 1, 2)).to.eql([1, 80]); - }); - - it('clear should work right', function() { - grid.selection.clear(); - expect(grid.selection.selected()).to.be.empty; - }); - - it('selectAll should work right', function() { - grid.selection.selectAll(); - expect(grid.selection.mode).to.eql("all"); - }); - - }); - - describe('in mode: all', function() { - beforeEach(function() { - grid.data.source = function(req) { - var data = []; - for (var i = req.index; i < req.index + req.count; i++) { - data.push(["foo " + i, "bar " + i]); - } - req.success(data, 100); - }; - grid.selection.mode = 'all'; - grid.selection.deselect(0); - grid.selection.deselect(1); - grid.selection.deselect(80); - grid.selection.deselect(81); - }); - - it('should have a right size', function() { - expect(grid.selection.size).to.eql(96); - }); - - it('should have right deselections', function() { - expect(grid.selection.deselected()).to.eql([0,1,80,81]); - }); - - it('should have right selections', function() { - expect(grid.selection.selected()).to.have.length(96); - }); - - it('should iterate right selections', function() { - var spy = sinon.spy(); - grid.selection.selected(spy); - expect(spy.callCount).to.eql(96); - }); - - it('should return right mapped value', function() { - var mapper = function(index){ - return "foo " + index; - }; - expect(grid.selection.selected(mapper)).to.contain("foo 2"); - expect(grid.selection.deselected(mapper)).to.eql(["foo 0", "foo 1", "foo 80", "foo 81"]); - }); - - it('should return nothing with iterator', function() { - var iterator = function(i){ - // Itearate - }; - expect(grid.selection.selected(iterator)).to.be.empty; - expect(grid.selection.deselected(iterator)).to.be.empty; - }); - - it('should return tail', function() { - expect(grid.selection.selected(undefined, 50)).to.have.length(46); - expect(grid.selection.deselected(undefined, 3)).to.eql([81]); - }); - - it('should return head', function() { - expect(grid.selection.selected(undefined, undefined, 30)).to.have.length(31); - expect(grid.selection.deselected(undefined, undefined, 1)).to.eql([0, 1]); - }); - - it('should not contain deselected values', function() { - expect(grid.selection.selected()).not.to.contain(0); - expect(grid.selection.selected()).not.to.contain(80); - }); - - it('should return range', function() { - expect(grid.selection.selected(undefined, 1, 2)).to.eql([3, 4]); - expect(grid.selection.deselected(undefined, 1, 2)).to.eql([1, 80]); - }); - - it('clear should work right', function() { - grid.selection.clear(); - expect(grid.selection.mode).to.eql("multi"); - }); - - it('selectAll should work right', function() { - grid.selection.selectAll(); - expect(grid.selection.deselected()).to.be.empty; - }); - - }); - - describe('in mode: disabled', function() { - beforeEach(function() { - grid.selection.mode = 'disabled'; - grid.selection.select(0); - }); - - it('should have a right size', function() { - expect(grid.selection.size).to.eql(0); - }); - - it('should have right deselections', function() { - expect(grid.selection.deselected()).to.eql([]); - }); - - it('should have right selections', function() { - expect(grid.selection.selected()).to.eql([]); - }); - - it('should iterate right selections', function() { - var spy = sinon.spy(); - grid.selection.selected(spy); - expect(spy.callCount).to.eql(0); - }); - - it('should return right mapped value', function() { - var mapper = function(index){ - return "foo " + index; - }; - expect(grid.selection.selected(mapper)).to.eql([]); - expect(grid.selection.deselected(mapper)).to.eql([]); - }); - - it('selectAll should work right', function() { - grid.selection.selectAll(); - expect(grid.selection.selected()).to.eql([]); - }); - - }); - - }); - - - }); - </script> -</body> - -</html> diff --git a/vaadin-grid/test/grid-sorting-rows.html b/vaadin-grid/test/grid-sorting-rows.html deleted file mode 100644 index 59acbbf..0000000 --- a/vaadin-grid/test/grid-sorting-rows.html +++ /dev/null @@ -1,100 +0,0 @@ -<!DOCTYPE html> -<html> - -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> - -<body> - - <div id="gridwrapper"></div> - - <script> - describe.feature('sorting rows', function() { - - describe('using api', function() { - - function assignInvalidSortOrder() { - grid.data.sortOrder = [{ - column: 0, - direction: "ascending" // Should be asc or desc - }]; - } - - beforeEach(function() { - grid.columns[0].sortable = true; - grid.columns[1].sortable = true; - }); - - it('should set sortOrder property', function() { - grid.data.sortOrder = [{ - column: 0, - direction: "desc" - }]; - - expect(qLocal(".v-grid-header th").classList.contains("sort-desc")).to.be.true; - }); - - it('should clear sort order', function() { - grid.data.sortOrder = [{ - column: 0, - direction: "desc" - }]; - grid.data.sortOrder = []; - expect(grid.data.sortOrder).to.be.empty; - }); - - it('should preserve existing sort order on invalid value', function() { - grid.data.sortOrder = [{ - column: 0, - direction: "desc" - }]; - expect(assignInvalidSortOrder).to.throw("Invalid sort direction"); - expect(qLocal(".v-grid-header th").classList.contains("sort-desc")).to.be.true; - }); - - it('should be able to sort with multiple columns', function() { - grid.data.sortOrder = [{ - column: 0, - direction: "desc" - }, { - column: 1 - }]; - assert.lengthOf(grid.data.sortOrder, 2); - expect(qaLocal(".v-grid-header th")[0].classList.contains("sort-desc")).to.be.true; - expect(qaLocal(".v-grid-header th")[1].classList.contains("sort-asc")).to.be.true; - }); - - it('should reset selection', function() { - grid.selectedRows = [0]; - - grid.data.sortOrder = [{ - column: 0, - direction: "desc" - }]; - - expect(grid.selection.selected()).to.be.empty; - }); - - it('should ignore selection column from index', function() { - var firstNonFrozenHeaderCell = qLocal.bind(this, ".v-grid-header .v-grid-cell:not(.frozen)"); - - firstNonFrozenHeaderCell().click(); - expect(grid.data.sortOrder[0].column).to.eql(0); - - grid.selection.mode = "multi"; - firstNonFrozenHeaderCell().click(); - expect(grid.data.sortOrder[0].column).to.eql(0); - }); - - - }); - }); - </script> diff --git a/vaadin-grid/test/grid-static-sections.html b/vaadin-grid/test/grid-static-sections.html deleted file mode 100644 index 757e8d2..0000000 --- a/vaadin-grid/test/grid-static-sections.html +++ /dev/null @@ -1,222 +0,0 @@ -<!DOCTYPE html> -<html> -<head lang="en"> - <meta charset="UTF-8"> - <title></title> - <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> - - <script src="common.js"></script> - - <link rel="import" href="../vaadin-grid.html"> -</head> -<body> - <div id="gridwrapper"></div> - - <script> - describe.feature('static sections', function() { - function removeHeaders() { - for(var i = grid.header.rowCount;i>0;i--) { - grid.header.removeRow(); - } - } - - function removeFooters() { - for(var i = grid.footer.rowCount;i>0;i--) { - grid.footer.removeRow(); - } - } - - beforeEach(function() { - removeHeaders(); - removeFooters(); - - grid.header.addRow(0, ['Name', 'Value']); - grid.footer.addRow(0, ['Name', 'Value']); - - grid.header.hidden = false; - grid.footer.hidden = false; - - return grid; - }); - - describe('header.defaultRow', function() { - it('should be 0 by default', function() { - expect(grid.header.defaultRow).to.equal(0); - }); - - it('should fail when set to a nonexisting row', function() { - expect(function() { - grid.header.defaultRow = 1; - }).to.throw('Row with index 1 does not exist'); - }); - - it('should set the defaultRow', function() { - grid.header.addRow(); - - // sorting indicator moves to the default row, so we'll - // use that to assert that default row has changed. - grid.columns[0].sortable = true; - grid.data.sortOrder = [{column: 0, direction: 'asc'}]; - - grid.header.defaultRow = 1; - - var cells = qaLocal('.v-grid-header .v-grid-cell'); - expect(cells[2].classList.toString()).to.contain('sort-asc'); - }); - - it('should have content in sync with column.headerContent', function() { - var column = grid.columns[0]; - var headerCell = grid.header.getCell(grid.header.defaultRow, 0); - - column.headerContent = "foo"; - expect(headerCell.content).to.eql("foo"); - - headerCell.content = "bar"; - expect(column.headerContent).to.eql("bar"); - }); - - }); - - ['header', 'footer'].forEach(function(section) { - describe(section, function() { - it('should be readonly', function() { - var originalValue = grid[section]; - - grid[section] = undefined; - - expect(grid[section]).to.equal(originalValue); - }); - - describe('getCell', function() { - it('should return correct cell using indeces', function() { - var cell = grid[section].getCell(0,0); - - expect(cell.content).to.equal('Name'); - }); - - it('should return correct cell using identifier', function() { - grid.columns[0].name = 'foo'; - - var cell = grid[section].getCell(0, 'foo'); - - expect(cell.content).to.equal('Name'); - }); - - it('should return correct cell from appended row', function() { - grid[section].addRow(1, [section + 'foo']); - - var cell = grid[section].getCell(1, 0); - - expect(cell.content).to.equal(section + 'foo'); - }); - }); - - describe('cell', function() { - describe('content', function() { - it('should set content', function() { - var cell = grid[section].getCell(0,0); - cell.content = 'foo'; - - expect(grid[section].getCell(0,0).content).to.equal('foo'); - }); - - it('should set html content', function() { - var cell = grid[section].getCell(0, 0); - - var input = document.createElement('input'); - cell.content = input; - - expect(qLocal('.v-grid-' + section + ' .v-grid-cell > input')).to.not.be.undefined; - }); - }); - - describe('hidden', function() { - it('should clear innerHTML', function() { - grid[section].hidden = true; - - expect(qLocal('.v-grid-' + section).innerHTML).to.be.empty; - }); - }); - - describe('colspan', function() { - it('should hide spanned cells', function() { - var cell = grid[section].getCell(0, 0); - - cell.colspan = 2; - - return grid.then(function() { - expect(qaLocal(".v-grid-" + section + " .v-grid-cell")[1].style.display).to.equal('none'); - }); - }); - }); - }); - - describe('addRow', function() { - it('should append new row', function() { - grid[section].addRow(); - - grid[section].getCell(1,0).content = 'foo'; - grid[section].getCell(1,1).content = 'bar'; - - var cells = qaLocal('.v-grid-' + section + ' .v-grid-cell'); - expect(cells[0].innerHTML).to.equal('Name'); - expect(cells[1].innerHTML).to.equal('Value'); - expect(cells[2].innerHTML).to.equal('foo'); - expect(cells[3].innerHTML).to.equal('bar'); - }); - - it('should insert new row to correct index', function() { - grid[section].addRow(0); - - grid[section].getCell(0,0).content = 'foo'; - grid[section].getCell(0,1).content = 'bar'; - - var cells = qaLocal('.v-grid-' + section + ' .v-grid-cell'); - expect(cells[0].innerHTML).to.equal('foo'); - expect(cells[1].innerHTML).to.equal('bar'); - expect(cells[2].innerHTML).to.equal('Name'); - expect(cells[3].innerHTML).to.equal('Value'); - }); - - it('should insert content to a new row', function() { - grid[section].addRow(0, ['foo', 'bar']); - - var cells = qaLocal(".v-grid-" + section + " .v-grid-cell"); - expect(cells[0].innerHTML).to.equal('foo'); - expect(cells[1].innerHTML).to.equal('bar'); - }); - }); - - describe('removeRow', function() { - it('should remove first row', function() { - grid[section].removeRow(); - - expect(qaLocal('.v-grid-' + section + ' .v-grid-cell')).to.be.empty; - }); - - it('should remove a specific row', function() { - grid[section].addRow(0, ['foo', 'bar']); - - grid[section].removeRow(1); - - expect(qaLocal('.v-grid-' + section + ' .v-grid-cell')).to.have.length(2); - }); - }); - - describe('setRowClassName', function() { - it('should set the classname of a specific row', function() { - grid[section].addRow(); - - grid[section].setRowClassName(1, 'second'); - - var rows = qaLocal(".v-grid-" + section + " .v-grid-row"); - expect(rows[1].classList.toString()).to.contain('second'); - }); - }); - }); - }); - }); - </script> -</body> -</html>
\ No newline at end of file diff --git a/vaadin-grid/test/index.html b/vaadin-grid/test/index.html deleted file mode 100644 index e9bd2fc..0000000 --- a/vaadin-grid/test/index.html +++ /dev/null @@ -1,24 +0,0 @@ -<!doctype html> -<html> -<head> - <meta charset="utf-8"> - <script src="../../webcomponentsjs/webcomponents.min.js"></script> - <script src="../../web-component-tester/browser.js"></script> -</head> -<body> -<script> -WCT.loadSuites([ - 'grid-binding-data.html', - 'grid-editing-columns.html', - 'grid-editor-handler.html', - 'grid-properties.html', - 'grid-redrawer.html', -// 'grid-rendering-light-dom.html', - 'grid-scrolling-rows.html', - 'grid-selecting-rows.html', - 'grid-static-sections.html', - 'grid-sorting-rows.html' -]); -</script> -</body> -</html> |