def test_basic_wiring_editor_operations(self): self.login() self.add_widget_to_mashup('Test', new_name='Test (1)') self.add_widget_to_mashup('Test', new_name='Test (2)') self.add_widget_to_mashup('Test', new_name='Test (3)') iwidgets = self.get_current_iwidgets() self.change_main_view('wiring') time.sleep(2) grid = self.driver.find_element_by_xpath("//*[contains(@class, 'container center_container grid')]") source = self.driver.find_element_by_xpath("//*[contains(@class, 'container iwidget')]//*[text()='Test (1)']") # TODO there are several bugs in the firefox, for now, this line of code "works" ActionChains(self.driver).click_and_hold(source).move_to_element(grid).move_by_offset(-40, -40).click().perform() source = self.driver.find_element_by_xpath("//*[contains(@class, 'container iwidget')]//*[text()='Test (2)']") # TODO there are several bugs in the firefox, for now, this line of code "works" ActionChains(self.driver).click_and_hold(source).move_to_element(grid).move_by_offset(40, 40).click().perform() time.sleep(0.2) source = self.get_iwidget_anchor(1, 'outputendpoint') target = self.get_iwidget_anchor(2, 'inputendpoint') ActionChains(self.driver).drag_and_drop(source, target).perform() self.change_main_view('workspace') time.sleep(0.2) with iwidget_context(self.driver, iwidgets[0]['id']): text_input = self.driver.find_element_by_tag_name('input') self.fill_form_input(text_input, 'hello world!!') # Work around hang when using Firefox Driver self.driver.execute_script('sendEvent();') #self.driver.find_element_by_id('b1').click() time.sleep(0.2) with iwidget_context(self.driver, iwidgets[1]['id']): try: WebDriverWait(self.driver, timeout=30).until(lambda driver: driver.find_element_by_id('wiringOut').text == 'hello world!!') except: pass text_div = self.driver.find_element_by_id('wiringOut') self.assertEqual(text_div.text, 'hello world!!') with iwidget_context(self.driver, iwidgets[2]['id']): text_div = self.driver.find_element_by_id('wiringOut') self.assertEqual(text_div.text, '') with iwidget_context(self.driver, iwidgets[0]['id']): text_div = self.driver.find_element_by_id('wiringOut') self.assertEqual(text_div.text, '')
def test_ngsi_available_to_widgets(self): self.login() resource = self.add_packaged_resource_to_catalogue('Wirecloud_ngsi-test-widget_1.0.wgt', 'Wirecloud NGSI API test widget') iwidget = self.instantiate(resource) with iwidget_context(self.driver, iwidget['id']): body = self.driver.find_element_by_tag_name('body') self.assertEqual(body.text, 'Success')
def test_create_workspace_from_catalogue(self): self.login() self.create_workspace_from_catalogue("Test Mashup") # Test that wiring works as expected tab = self.get_workspace_tab_by_name("Tab") tab2 = self.get_workspace_tab_by_name("Tab 2") # Load tab2 tab2.click() tab.click() iwidgets = self.get_current_iwidgets() # Send wiring event with iwidget_context(self.driver, iwidgets[0]["id"]): text_input = self.driver.find_element_by_tag_name("input") self.fill_form_input(text_input, "hello world!!") # Work around hang when using Firefox Driver self.driver.execute_script("sendEvent();") # self.driver.find_element_by_id('b1').click() time.sleep(0.2) # Check event is received by the second test widget tab2.click() with iwidget_context(self.driver, iwidgets[1]["id"]): try: WebDriverWait(self.driver, timeout=30).until( lambda driver: driver.find_element_by_id("wiringOut").text == "hello world!!" ) except: pass text_div = self.driver.find_element_by_id("wiringOut") self.assertEqual(text_div.text, "hello world!!")
def test_basic_widget_functionalities(self): self.login(username="******") iwidget_id = self.get_current_iwidgets()[0]["id"] api_test_iwidget = self.add_widget_to_mashup("Wirecloud API test")["id"] with iwidget_context(self.driver, iwidget_id): self.assertEqual(self.driver.find_element_by_id("listPref").text, "default") self.assertEqual(self.driver.find_element_by_id("textPref").text, "initial text") self.assertEqual(self.driver.find_element_by_id("booleanPref").text, "false") self.assertEqual(self.driver.find_element_by_id("passwordPref").text, "default") # Change widget settings self.driver.find_element_by_css_selector(".iwidget .icon-cogs").click() self.popup_menu_click("Settings") list_input = self.driver.find_element_by_css_selector('.window_menu [name="list"]') self.fill_form_input(list_input, "1") # value1 text_input = self.driver.find_element_by_css_selector('.window_menu [name="text"]') self.fill_form_input(text_input, "test") boolean_input = self.driver.find_element_by_css_selector('.window_menu [name="boolean"]') boolean_input.click() password_input = self.driver.find_element_by_css_selector('.window_menu [name="password"]') self.fill_form_input(password_input, "password") self.driver.find_element_by_xpath("//*[contains(@class, 'window_menu')]//*[text()='Accept']").click() with iwidget_context(self.driver, iwidget_id): self.assertEqual(self.driver.find_element_by_id("listPref").text, "1") self.assertEqual(self.driver.find_element_by_id("textPref").text, "test") self.assertEqual(self.driver.find_element_by_id("booleanPref").text, "true") self.assertEqual(self.driver.find_element_by_id("passwordPref").text, "password") # Change widget settings again self.driver.find_element_by_css_selector(".iwidget .icon-cogs").click() self.popup_menu_click("Settings") text_input = self.driver.find_element_by_css_selector('.window_menu [name="text"]') self.fill_form_input(text_input, "") password_input = self.driver.find_element_by_css_selector('.window_menu [name="password"]') self.fill_form_input(password_input, "") self.driver.find_element_by_xpath("//*[contains(@class, 'window_menu')]//*[text()='Accept']").click() with iwidget_context(self.driver, iwidget_id): self.assertEqual(self.driver.find_element_by_id("listPref").text, "1") self.assertEqual(self.driver.find_element_by_id("textPref").text, "") self.assertEqual(self.driver.find_element_by_id("booleanPref").text, "true") self.assertEqual(self.driver.find_element_by_id("passwordPref").text, "") # Use api test widget to test other API features with iwidget_context(self.driver, api_test_iwidget): self.assertEqual(self.driver.find_element_by_id("makerequest_test").text, "Success!!") prop_input = self.driver.find_element_by_css_selector("#update_prop_input") self.fill_form_input(prop_input, "new value") self.driver.find_element_by_css_selector("#update_prop_button").click() self.driver.refresh() self.wait_wirecloud_ready() time.sleep(1) with iwidget_context(self.driver, api_test_iwidget): prop_input = self.driver.find_element_by_css_selector("#update_prop_input") self.assertEqual(prop_input.get_attribute("value"), "new value")
def test_wiring_recovers_from_invalid_views_data(self): workspace = Workspace.objects.get(id=2) workspace.wiringStatus = json.dumps({ "views": [ { "label": "default", "iwidgets": { "1": None }, "operators": { "0": None }, "connections": [] } ], "operators": { "0": { "name": "Wirecloud/TestOperator/1.0", "id": "0", "preferences": {} } }, "connections": [ { "source": { "type": "iwidget", "id": 1, "endpoint": "outputendpoint" }, "target": { "type": "iwidget", "id": 2, "endpoint": "inputendpoint" } }, { "source": { "type": "iwidget", "id": 2, "endpoint": "outputendpoint" }, "target": { "type": "ioperator", "id": 0, "endpoint": "input" } }, { "source": { "type": "ioperator", "id": 0, "endpoint": "output" }, "target": { "type": "iwidget", "id": 1, "endpoint": "inputendpoint" } } ] }) workspace.save() self.login(username='******') iwidgets = self.get_current_iwidgets() self.assertEqual(len(iwidgets), 2) self.change_main_view('wiring') self.wait_element_visible_by_xpath("//*[contains(@class, 'window_menu')]//*[text()='Yes']") self.driver.find_element_by_xpath("//*[contains(@class, 'window_menu')]//*[text()='Yes']").click() time.sleep(2) window_menus = len(self.driver.find_elements_by_css_selector('.window_menu')) self.assertEqual(window_menus, 1) self.change_main_view('workspace') with iwidget_context(self.driver, iwidgets[0]['id']): text_input = self.driver.find_element_by_tag_name('input') self.fill_form_input(text_input, 'hello world!!') # Work around hang when using Firefox Driver self.driver.execute_script('sendEvent();') #self.driver.find_element_by_id('b1').click() time.sleep(0.2) with iwidget_context(self.driver, iwidgets[1]['id']): try: WebDriverWait(self.driver, timeout=30).until(lambda driver: driver.find_element_by_id('wiringOut').text == 'hello world!!') except: pass text_div = self.driver.find_element_by_id('wiringOut') self.assertEqual(text_div.text, 'hello world!!')