public void TestConstructor_DefaultUIDef_NoControlFactory()
        {
            //---------------Set up test pack-------------------
            IClassDef def = TestBOEditorControl.GetCustomClassDef();

            GlobalUIRegistry.ControlFactory = GetControlFactory();
            //---------------Assert Precondition----------------
            Assert.IsNotNull(GlobalUIRegistry.ControlFactory);
            //---------------Execute Test ----------------------
            IBOPanelEditorControl controlWin = CreateEditorControl(def);

            //---------------Test Result -----------------------
            Assert.IsNotNull(controlWin);
            AssertControlsAreDisabled(controlWin);
        }
        public void Test_setBusinessObject_ChangesBOInBOControl()
        {
            //   ---------------Set up test pack-------------------
            GlobalUIRegistry.ControlFactory = GetControlFactory();
            BORegistry.DataAccessor         = new DataAccessorInMemory();
            IBOPanelEditorControl controlWin     = CreateEditorControl(TestBOEditorControl.GetCustomClassDef());
            OrganisationTestBO    businessObject = OrganisationTestBO.CreateSavedOrganisation();

            //---------------Assert Precondition----------------
            Assert.IsNull(controlWin.BusinessObject);
            // ---------------Execute Test ----------------------
            controlWin.BusinessObject = businessObject;
            //  ---------------Test Result -----------------------
            Assert.AreEqual(businessObject, controlWin.BusinessObject);
            Assert.AreSame(businessObject, controlWin.PanelInfo.BusinessObject);
            AssertControlsAreEnabled(controlWin);
        }
        public virtual void Test_IsDirty_WhenNoEditsDone_ShouldBeFalse()
        {
            //---------------Set up test pack-------------------
            TestBOEditorControl.GetCustomClassDef();
            GlobalUIRegistry.ControlFactory = GetControlFactory();
            BORegistry.DataAccessor         = new DataAccessorInMemory();
            ContactPersonTestBO   person     = ContactPersonTestBO.CreateSavedContactPerson();
            IBOPanelEditorControl controlWin = CreateEditorControl(person.ClassDef);

            //---------------Assert Precondition----------------
            Assert.IsTrue(person.Status.IsValid());
            //---------------Execute Test ----------------------
            controlWin.BusinessObject = person;
            bool dirty = controlWin.IsDirty;

            //---------------Test Result -----------------------
            Assert.IsFalse(dirty);
        }
        public virtual void Test_HasErrors_WhenBOValid_ShouldBeFalse()
        {
            //---------------Set up test pack-------------------
            TestBOEditorControl.GetCustomClassDef();
            GlobalUIRegistry.ControlFactory = GetControlFactory();
            BORegistry.DataAccessor         = new DataAccessorInMemory();
            ContactPersonTestBO   person     = ContactPersonTestBO.CreateSavedContactPerson();
            IBOPanelEditorControl controlWin = CreateEditorControl(person.ClassDef);

            controlWin.BusinessObject = person;
            //---------------Assert Precondition----------------
            Assert.IsTrue(controlWin.BusinessObject.Status.IsValid());
            //---------------Execute Test ----------------------
            bool hasErrors = controlWin.HasErrors;

            //---------------Test Result -----------------------
            Assert.IsFalse(hasErrors);
        }
        public virtual void Test_IfValidState_WhenSetControlValueToInvalidValue_ShouldUpdatesErrorProviders()
        {
            //---------------Set up test pack-------------------
            TestBOEditorControl.GetCustomClassDef();
            GlobalUIRegistry.ControlFactory = GetControlFactory();
            BORegistry.DataAccessor         = new DataAccessorInMemory();
            ContactPersonTestBO   person     = ContactPersonTestBO.CreateSavedContactPerson();
            IBOPanelEditorControl controlWin = CreateEditorControl(person.ClassDef);

            controlWin.BusinessObject = person;
            //---------------Assert Precondition----------------
            Assert.IsTrue(controlWin.BusinessObject.Status.IsValid());
            AssertErrorProvidersHaveBeenCleared(controlWin);
            //---------------Execute Test ----------------------
            SetSurnameTextBoxToNull(controlWin);
            //---------------Test Result -----------------------
            AssertErrorProviderHasErrors(controlWin, "Surname");
        }
        public virtual void TestConstructor_NullClassDef_ShouldRaiseError()
        {
            // ---------------Set up test pack-------------------
            TestBOEditorControl.GetCustomClassDef();
            // ---------------Assert Precondition----------------
            // ---------------Execute Test ----------------------
            try
            {
                CreateEditorControl(GetControlFactory(), null, TestBOEditorControl.CUSTOM_UIDEF_NAME);

                Assert.Fail("Null controlFactory should be prevented");
            }
            //    ---------------Test Result -----------------------
            catch (ArgumentNullException ex)
            {
                Assert.AreEqual("classDef", ex.ParamName);
            }
        }
        public void Test_IfInvalidState_WhenSetBOToNull_ShouldClearErrorProviders()
        {
            //---------------Set up test pack-------------------
            TestBOEditorControl.GetCustomClassDef();
            GlobalUIRegistry.ControlFactory = GetControlFactory();
            BORegistry.DataAccessor         = new DataAccessorInMemory();
            ContactPersonTestBO   boInvalid  = ContactPersonTestBO.CreateUnsavedContactPerson("", "");
            IBOPanelEditorControl controlWin = CreateEditorControl(boInvalid.ClassDef);

            controlWin.BusinessObject = boInvalid;
            //---------------Assert Precondition----------------
            Assert.IsFalse(boInvalid.Status.IsValid());
            AssertErrorProviderHasErrors(controlWin, "Surname");
            //---------------Execute Test ----------------------
            controlWin.BusinessObject = null;
            //---------------Test Result -----------------------
            Assert.IsNull(controlWin.BusinessObject);
            AssertErrorProvidersHaveBeenCleared(controlWin);
        }
        public void Test_SetBusinessObject_Null()
        {
            //   ---------------Set up test pack-------------------
            GlobalUIRegistry.ControlFactory = GetControlFactory();
            BORegistry.DataAccessor         = new DataAccessorInMemory();
            IBOPanelEditorControl controlWin     = CreateEditorControl(TestBOEditorControl.GetCustomClassDef());
            OrganisationTestBO    businessObject = OrganisationTestBO.CreateSavedOrganisation();

            controlWin.BusinessObject = businessObject;
            //---------------Assert Precondition----------------
            Assert.IsNotNull(controlWin.BusinessObject);
            // ---------------Execute Test ----------------------
            controlWin.BusinessObject = null;
            //  ---------------Test Result -----------------------
            Assert.IsNull(controlWin.BusinessObject);
            AssertControlsAreDisabled(controlWin);
            controlWin.PanelInfo.ClearErrorProviders();
            AssertErrorProvidersHaveBeenCleared(controlWin);
        }
        public virtual void Test_ApplyChangesToBo_WhenControlIsEdited_ShouldUpdateTheBusinessObject()
        {
            //---------------Set up test pack-------------------
            TestBOEditorControl.GetCustomClassDef();
            GlobalUIRegistry.ControlFactory = GetControlFactory();
            BORegistry.DataAccessor         = new DataAccessorInMemory();
            ContactPersonTestBO   person     = ContactPersonTestBO.CreateSavedContactPerson();
            IBOPanelEditorControl controlWin = CreateEditorControl(person.ClassDef);

            controlWin.BusinessObject = person;
            //---------------Assert Precondition----------------
            Assert.IsTrue(controlWin.BusinessObject.Status.IsValid());
            Assert.IsFalse(controlWin.IsDirty);
            TestUtil.AssertStringNotEmpty(person.Surname, "person.Surname");
            //---------------Execute Test ----------------------
            SetSurnameTextBoxToNull(controlWin);
            controlWin.ApplyChangesToBusinessObject();
            //---------------Test Result -----------------------
            TestUtil.AssertStringEmpty(person.Surname, "person.Surname");
        }
        public virtual void TestConstructor_uiDefDoesNotHaveAUIForm_ShouldRaiseError()
        {
            // ---------------Set up test pack-------------------
            IClassDef def = TestBOEditorControl.GetCustomClassDef();

            // ---------------Assert Precondition----------------
            // ---------------Execute Test ----------------------
            try
            {
                CreateEditorControl(GetControlFactory(), def, TestBOEditorControl.GRID_WITHNOFORM);
                Assert.Fail("expected Err");
            }
            //---------------Test Result -----------------------
            catch (HabaneroDeveloperException ex)
            {
                string expectedDeveloperMessage = "The 'IBOEditorControl";
                StringAssert.Contains(expectedDeveloperMessage, ex.Message);
                expectedDeveloperMessage = "' could not be created since the the uiDef '" +
                                           TestBOEditorControl.GRID_WITHNOFORM
                                           + "' does not exist in the classDef for '" + def.ClassNameFull;
                StringAssert.Contains(expectedDeveloperMessage, ex.Message);
            }
        }