From d398ab6720636aae5b64562a514386c419851213 Mon Sep 17 00:00:00 2001 From: Jonathan Frederic Date: Tue, 10 Dec 2013 16:55:07 -0800 Subject: [PATCH] Added multicontainer widget tests --- .../html/tests/casperjs/test_cases/widgets.js | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/IPython/html/tests/casperjs/test_cases/widgets.js b/IPython/html/tests/casperjs/test_cases/widgets.js index 82a0a822f..a50ea9dc0 100644 --- a/IPython/html/tests/casperjs/test_cases/widgets.js +++ b/IPython/html/tests/casperjs/test_cases/widgets.js @@ -611,4 +611,107 @@ casper.notebook_test(function () { this.test.assert(this.get_output_cell(index).text == '12\n', 'Invald int textbox value caught and filtered.'); }); + + + // Test multicontainer widget //////////////////////////////////////////// + + // Test tab view + var multicontainer1_query = '.widget-area .widget-subarea div div.nav-tabs'; + var multicontainer1_index = this.append_cell( + 'multicontainer = widgets.MulticontainerWidget()\n' + + 'page1 = widgets.StringWidget(parent=multicontainer)\n' + + 'page2 = widgets.StringWidget(parent=multicontainer)\n' + + 'page3 = widgets.StringWidget(parent=multicontainer)\n' + + 'display(multicontainer)\n' + + 'multicontainer.selected_index = 0\n' + + 'print("Success")\n'); + this.execute_cell_then(multicontainer1_index, function(index){ + + this.test.assert(this.get_output_cell(index).text == 'Success\n', + 'Create multicontainer cell executed with correct output. (1)'); + + this.test.assert(this.cell_element_exists(index, + '.widget-area .widget-subarea'), + 'Widget subarea exists.'); + + this.test.assert(this.cell_element_exists(index, multicontainer1_query), + 'Widget tab list exists.'); + + this.test.assert(this.cell_element_exists(index, multicontainer1_query), + 'First widget tab list exists.'); + + // JQuery selector is 1 based + this.click(multicontainer1_query + ' li:nth-child(2) a') + }); + + this.wait(500); // Wait for change to execute in kernel + + index = this.append_cell( + 'print(multicontainer.selected_index)\n' + + 'multicontainer.selected_index = 2'); // 0 based + this.execute_cell_then(index, function(index){ + this.test.assert(this.get_output_cell(index).text == '1\n', // 0 based + 'selected_index property updated with tab change.'); + + // JQuery selector is 1 based + this.test.assert(!this.cell_element_function(multicontainer1_index, multicontainer1_query + ' li:nth-child(1)', 'hasClass', ['active']), + "Tab 1 is not selected.") + this.test.assert(!this.cell_element_function(multicontainer1_index, multicontainer1_query + ' li:nth-child(2)', 'hasClass', ['active']), + "Tab 2 is not selected.") + this.test.assert(this.cell_element_function(multicontainer1_index, multicontainer1_query + ' li:nth-child(3)', 'hasClass', ['active']), + "Tab 3 is selected.") + }); + + index = this.append_cell('multicontainer.set_title(1, "hello")\nprint("Success")'); // 0 based + this.execute_cell_then(index, function(index){ + this.test.assert(this.cell_element_function(multicontainer1_index, multicontainer1_query + + ' li:nth-child(2) a', 'html') == 'hello', + 'Tab page title set (after display).'); + }); + + // Test accordion view + var multicontainer2_query = '.widget-area .widget-subarea .accordion'; + var multicontainer2_index = this.append_cell( + 'multicontainer = widgets.MulticontainerWidget()\n' + + 'page1 = widgets.StringWidget(parent=multicontainer)\n' + + 'page2 = widgets.StringWidget(parent=multicontainer)\n' + + 'page3 = widgets.StringWidget(parent=multicontainer)\n' + + 'multicontainer.set_title(2, "good")\n' + + 'display(multicontainer, view_name="AccordionView")\n' + + 'multicontainer.selected_index = 0\n' + + 'print("Success")\n'); + this.execute_cell_then(multicontainer2_index, function(index){ + + this.test.assert(this.get_output_cell(index).text == 'Success\n', + 'Create multicontainer cell executed with correct output. (2)'); + + this.test.assert(this.cell_element_exists(index, + '.widget-area .widget-subarea'), + 'Widget subarea exists.'); + + this.test.assert(this.cell_element_exists(index, multicontainer2_query), + 'Widget accordion exists.'); + + this.test.assert(this.cell_element_exists(index, multicontainer2_query + + ' .accordion-group:nth-child(1) .accordion-body'), + 'First accordion page exists.'); + + // JQuery selector is 1 based + this.test.assert(this.cell_element_function(index, multicontainer2_query + + ' .accordion-group:nth-child(3) .accordion-heading .accordion-toggle', + 'html')=='good', 'Accordion page title set (before display).'); + + // JQuery selector is 1 based + this.click(multicontainer2_query + ' .accordion-group:nth-child(2) .accordion-heading .accordion-toggle'); + }); + + this.wait(500); // Wait for change to execute in kernel + + index = this.append_cell('print(multicontainer.selected_index)'); // 0 based + this.execute_cell_then(index, function(index){ + this.test.assert(this.get_output_cell(index).text == '1\n', // 0 based + 'selected_index property updated with tab change.'); + }); + + });