def test_detail_dnshost_validity_flag(self): """ Tests that the validity flag is correctly set and unset when a component's widget value is set to a correct and incorrect value. """ site = SiteConfigurationManager.get_blank_site() dnshost = site.dnshost control_agent = DetailDNSHostControlAgent(dnshost) presentation_agent = control_agent.get_presentation_agent() observer = ValidityObserver() control_agent.get_event_bus().subscribe( DataValidityEvent, observer.validity_changed) presentation_agent['name'].set_text('abc') refresh_gui() self.assertTrue(observer.notified, 'validity observer has not been notified') self.assertTrue(observer.flag, 'dns validity should be true') presentation_agent['name'].set_text('@b c') refresh_gui() self.assertTrue(observer.notified, 'validity observer has not been notified') self.assertFalse(observer.flag, 'dnshost validity should be false') control_agent.get_event_bus().unsubscribe( DataValidityEvent, observer.validity_changed)
def test_detail_dnshost_gui_actions(self): """ Tests that repository detail component's presentation_agent works as expected, and that abstraction attributes are set correspondingly to GUI actions. """ site = SiteConfigurationManager.get_blank_site() dnshost = site.dnshost control_agent = DetailDNSHostControlAgent(dnshost) presentation_agent = control_agent.get_presentation_agent() refresh_gui() # When name entry is set, the abstraction should have corresponding # value set for name in ('name', 'description'): presentation_agent[name].set_text('abc') refresh_gui() self.assertEquals(getattr(dnshost, name), 'abc', 'dnshost %s attribute is wrong: %s' % (name, getattr(dnshost, name))) # Comboboxes value should be reported to abstraction domain = SiteDefaultsManager.get_domains().keys()[0] platform = SiteDefaultsManager.get_platforms().keys()[0] for name, value in {'domain': domain, 'platform': platform}.items(): presentation_agent.set_value(name, value) refresh_gui() self.assertEquals(getattr(dnshost, name), value, 'dnshost %s attribute is wrong' % name)
def test_detail_dnshost_abstraction_actions(self): """ Tests that database detail component's abstractions changes are correctly reported to GUI. """ site = SiteConfigurationManager.get_blank_site() dnshost = site.dnshost control_agent = DetailDNSHostControlAgent(dnshost) presentation_agent = control_agent.get_presentation_agent() refresh_gui() # All widgets should be enabled flags = { 'name': True, 'domain': True, 'platform': True, 'description': True } self.assert_widgets_sensitive_flag(presentation_agent, flags) # When a name or description is set, correpsonding widget # should follow for name in ('name', 'description'): setattr(dnshost, name, 'abc') refresh_gui() self.assertEquals(presentation_agent[name].get_text(), 'abc', 'dnshost %s widget is wrong' % name) # Comboboxes value should reflect abstraction changes domain = SiteDefaultsManager.get_domains().keys()[0] platform = SiteDefaultsManager.get_platforms().keys()[0] for name, value in {'domain': domain, 'platform': platform}.items(): setattr(dnshost, name, value) refresh_gui() self.assertEquals(presentation_agent.get_combobox_selection( presentation_agent[name]), value, 'dnshost %s widget selection is wrong' % name) # Tests that when done flag is set, allw widgets are disabled dnshost.done = True refresh_gui() # Tests widgets sensitivity after enablement flags = { 'description': False, 'name': False, 'domain': False, 'platform': False, } self.assert_widgets_sensitive_flag(presentation_agent, flags)
def test_detail_dnshost_read_only(self): """ Tests that database detail component's abstractions changes are correctly reported to GUI. """ site = SiteConfigurationManager.get_blank_site() dnshost = site.dnshost control_agent = DetailDNSHostControlAgent(dnshost, read_only=True) presentation_agent = control_agent.get_presentation_agent() refresh_gui() # Ine read-only mode, all widgets should be disabled flags = { 'name': False, 'domain': False, 'platform': False, 'description': False } self.assert_widgets_sensitive_flag(presentation_agent, flags)
def test_detail_dnshost_init_state(self): """ Tests repository detail component's presentation_agent initial state """ dnshost = SiteConfigurationManager.lookup_host_by_name('*', '*')[0] site = SiteConfigurationManager.get_site_by_name(dnshost.name, dnshost.domain) dnshost = site.dnshost control_agent = DetailDNSHostControlAgent(dnshost) presentation_agent = control_agent.get_presentation_agent() refresh_gui() # Tests widgets sensitivity flags = { 'description': not dnshost.done, 'name': not dnshost.done, 'domain': not dnshost.done, 'platform': not dnshost.done, } self.assert_widgets_sensitive_flag(presentation_agent, flags)