예제 #1
0
        public void Test_RemoveSecondInstanceOfSameLoadedObjectDoesNotRemoveIt()
        {
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadDefaultClassDef();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            ContactPersonTestBO originalContactPerson = new ContactPersonTestBO();
            ContactPersonTestBO copyContactPerson     = new ContactPersonTestBO();

            copyContactPerson.ContactPersonID = originalContactPerson.ContactPersonID;
            BusinessObjectManager.Instance.Add(copyContactPerson);

            //---------------Assert Precondition----------------
            Assert.AreNotSame(originalContactPerson, copyContactPerson);
            Assert.AreEqual(originalContactPerson.ID.GetObjectId(), copyContactPerson.ID.GetObjectId());
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(copyContactPerson));
            Assert.IsFalse(boMan.Contains(originalContactPerson));

            //---------------Execute Test ----------------------
            BusinessObjectManager.Instance.Remove(originalContactPerson);

            //---------------Test Result -----------------------
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(copyContactPerson));
            Assert.IsFalse(boMan.Contains(originalContactPerson));
        }
예제 #2
0
        public void Test_SavedObject_Twice_AddedToObjectManager_Once()
        {
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadDefaultClassDef();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            ContactPersonTestBO cp = new ContactPersonTestBO();

            cp.Surname = TestUtil.CreateRandomString();
            cp.Save();
            //---------------Assert Precondition----------------
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(cp));

            //---------------Execute Test ----------------------

            cp.Surname = TestUtil.CreateRandomString();
            cp.Save();

            //---------------Test Result -----------------------
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(cp));
            Assert.IsTrue(boMan.Contains(cp.ID));
            Assert.IsTrue(boMan.Contains(cp.ID.GetObjectId()));
            Assert.AreSame(cp, boMan[cp.ID.GetObjectId()]);
            Assert.AreSame(cp, boMan[cp.ID]);
        }
예제 #3
0
        public BusinessObjectActionReport <DataRepositoryActionStatus> Update(IDepartmentModel department)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(department);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                int num;
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                        num = dataStoreContext.wm_Departments_Update(department.DepartmentId, department.ParentDepartmentId, department.Name, department.OfficeId);
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at wm_Departments_Update", ex);
                    throw new DataStoreException(ex, true);
                }
                if (num == 0)
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.NoRecordRowAffected;
                    _Log.ErrorFormat("Department {0} was not updated at the database, NoRecordRowAffected"
                                     , DebugUtility.GetObjectString(department));
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("Department {0} was not updated at the database because the validation failed.\nReport: {1}"
                                , DebugUtility.GetObjectString(department)
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #4
0
        public void Test_Add_CopyOfSameObjectTwiceShould_ThrowError()
        {
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadDefaultClassDef();

            ContactPersonTestBO   cp    = new ContactPersonTestBO();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            boMan.Add(cp);

            //---------------Assert Precondition----------------
            Assert.AreEqual(1, boMan.Count);

            //---------------Execute Test ----------------------
            ContactPersonTestBO cp2 = new ContactPersonTestBO();

            cp2.ContactPersonID = cp.ContactPersonID;
            try
            {
                boMan.Add(cp2);
                Assert.Fail("expected Err");
            }
            //---------------Test Result -----------------------
            catch (HabaneroDeveloperException ex)
            {
                StringAssert.Contains("There was a serious developer exception. Two copies of the business object", ex.Message);
                StringAssert.Contains(" were added to the object manager", ex.Message);
            }
        }
예제 #5
0
        public void Test_LoadObject_UpdateObjectMan_NonGenericLoad()
        {
            //---------------Set up test pack-------------------
            ClassDef classDef           = ContactPersonTestBO.LoadDefaultClassDef();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            ContactPersonTestBO cp = CreateSavedCP();
            IPrimaryKey         id = cp.ID;

            cp = null;

            TestUtil.WaitForGC();
            boMan.ClearLoadedObjects();

            //---------------Assert Precondition----------------
            Assert.AreEqual(0, boMan.Count);

            //---------------Execute Test ----------------------
            ContactPersonTestBO contactPersonTestBO = (ContactPersonTestBO)BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject(classDef, id);

            //---------------Test Result -----------------------
            Assert.IsNotNull(contactPersonTestBO);
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(contactPersonTestBO));

            Assert.IsTrue(boMan.Contains(id));
            Assert.IsTrue(boMan.Contains(id.GetObjectId()));
            Assert.AreSame(contactPersonTestBO, boMan[id.GetObjectId()]);
            Assert.AreSame(contactPersonTestBO, boMan[id]);
        }
예제 #6
0
        internal BusinessObjectActionReport <DataRepositoryActionStatus> Delete(CMSContent cmsContent, bool deleteLinkedThreads)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(cmsContent);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                int num = this.Delete(cmsContent.CMSContentId, deleteLinkedThreads);
                if (num == 0 || num == -1003)
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.NoRecordRowAffected;
                }
                else if (num < 0)
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.SqlError;
                    _Log.WarnFormat("CMSContent {0} was not deleted from the database (ErrorCode: {1})."
                                    , DebugUtility.GetObjectString(cmsContent)
                                    , num);
                }
                else
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.Success;
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("CMSContent {0} was not deleted from the database because the validation failed.\nReport: {1}"
                                , DebugUtility.GetObjectString(cmsContent)
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #7
0
        public BusinessObjectActionReport <DataRepositoryActionStatus> Delete(IApplication application)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(application);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                int num = 0;
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                        num = dataStoreContext.wm_Applications_Delete(application.ApplicationId);
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at wm_Applications_Delete", ex);
                    throw new DataStoreException(ex, true);
                }
                if (num == 0)
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.SqlError;
                    _Log.WarnFormat("Application {0} was not deleted from the database (ErrorCode: {1})."
                                    , DebugUtility.GetObjectString(application)
                                    , num);
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("Application {0} was not deleted from the database because the validation failed.\nReport: {1}"
                                , DebugUtility.GetObjectString(application)
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #8
0
        internal BusinessObjectActionReport <DataRepositoryActionStatus> Update(CMSGroup cmsGroup)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(cmsGroup);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                        businessObjectActionReport.Status = (DataRepositoryActionStatus)dataStoreContext.cms_Groups_InsertOrUpdate(cmsGroup.CMSGroupId, cmsGroup.Name, cmsGroup.Description, cmsGroup.CMSGroupType);

                    return(businessObjectActionReport);
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at cms_Groups_InsertOrUpdate", ex);
                    throw new DataStoreException(ex, true);
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("CMSGroup {0} was not updated at the database because the validation failed.\nReport: {1}"
                                , DebugUtility.GetObjectString(cmsGroup)
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #9
0
        internal BusinessObjectActionReport <DataRepositoryActionStatus> Delete(CMSThreadRating cmsThreadRating)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(cmsThreadRating);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                int num = 0;
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                    {
                        num = dataStoreContext.cms_ThreadRatings_Delete(cmsThreadRating.CMSUserId, cmsThreadRating.CMSThreadId);
                    }
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at cms_ThreadRatings_Delete", ex);
                    throw new DataStoreException(ex, true);
                }
                if (num != 0)
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.SqlError;
                    _Log.WarnFormat("CMSThreadRating {0} was not deleted from the database (ErrorCode: {1})."
                                    , DebugUtility.GetObjectString(cmsThreadRating), num);
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("CMSThreadRating {0} was not deleted from the database because the validation failed.\nReport: {1}", DebugUtility.GetObjectString(cmsThreadRating), businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #10
0
        public void Test_ReturnSameObjectFromBusinessObjectLoader()
        {
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadClassDefWithAddressTestBOsRelationship();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;
            ContactPersonTestBO   originalContactPerson = CreateSavedCP();
            IPrimaryKey           id = originalContactPerson.ID;

            originalContactPerson = null;
            boMan.ClearLoadedObjects();
            TestUtil.WaitForGC();

            //load second object from DB to ensure that it is now in the object manager
            ContactPersonTestBO myContact2 =
                BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <ContactPersonTestBO>(id);

            //---------------Assert Precondition----------------
            Assert.AreNotSame(originalContactPerson, myContact2);

            //---------------Execute Test ----------------------
            ContactPersonTestBO myContact3 =
                BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <ContactPersonTestBO>(id);

            //---------------Test Result -----------------------
            Assert.AreNotSame(originalContactPerson, myContact3);
            Assert.AreSame(myContact2, myContact3);
        }
예제 #11
0
        public void Test_ChangePrimaryKeyForCompositeKey_UpdatedObjectMan()
        {
            //---------------Set up test pack-------------------
            ContactPersonCompositeKey.LoadClassDefs();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            ContactPersonCompositeKey cp = new ContactPersonCompositeKey();

            cp.PK1Prop1 = TestUtil.CreateRandomString();
            cp.PK1Prop2 = TestUtil.CreateRandomString();
            cp.Save();

            //---------------Assert Precondition----------------
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(cp.ID));
            Assert.AreSame(cp, boMan[cp.ID]);

            //---------------Execute Test ----------------------
            cp.PK1Prop1 = TestUtil.CreateRandomString();
            cp.PK1Prop2 = TestUtil.CreateRandomString();
            cp.Save();

            //---------------Test Result -----------------------
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(cp));
            Assert.IsTrue(boMan.Contains(cp.ID));
            Assert.IsTrue(boMan.Contains(cp.ID.GetObjectId()));
            Assert.AreSame(cp, boMan[cp.ID.GetObjectId()]);
            Assert.AreSame(cp, boMan[cp.ID]);
        }
예제 #12
0
        internal BusinessObjectActionReport <DataRepositoryActionStatus> Update(CMSContent cmsContent, string[] tags, bool doReindex)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(cmsContent);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                int num = 0;
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                    {
                        num = dataStoreContext.cms_Contents_Update(
                            cmsContent.CMSContentId
                            , cmsContent.CMSThreadId
                            , cmsContent.CMSParentContentId
                            , cmsContent.AuthorUserId
                            , cmsContent.CMSContentLevel
                            , cmsContent.Subject
                            , cmsContent.FormattedBody
                            , cmsContent.IsApproved
                            , cmsContent.IsLocked
                            , cmsContent.CMSContentType
                            , cmsContent.CMSContentStatus
                            , cmsContent.CMSExtraInfo
                            , cmsContent.CMSBaseContentId
                            , cmsContent.UrlFriendlyName
                            , tags);
                    }
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at cms_Contents_Update", ex);
                    throw new DataStoreException(ex, true);
                }
                if (num != 0)
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.SqlError;
                    _Log.ErrorFormat("CMSContent {0} was not updated from the database (ErrorCode: {1})."
                                     , DebugUtility.GetObjectString(cmsContent)
                                     , num);
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("CMSContent {0} was not updated at the database because the validation failed.\nReport: {1}"
                                , DebugUtility.GetObjectString(cmsContent)
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #13
0
        public void Test_CreateObjectManager()
        {
            //---------------Set up test pack-------------------

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            //---------------Test Result -----------------------
            Assert.AreEqual(0, boMan.Count);
//            Assert.IsInstanceOfType(typeof(BusinessObjectManager), boMan);
        }
예제 #14
0
        public void Test_BusinessObjectRegexValidation()
        {
            // TODO (Roman): Write a proper test for this

            MyTestClass testClass = new MyTestClass();

            testClass.Name        = "abcDEF123--";
            testClass.Email       = "*****@*****.**";
            testClass.SomeInteger = 144;
            testClass.SomeLong    = 155;

            Assert.IsTrue(BusinessObjectManager.Validate(testClass).IsValid);
        }
예제 #15
0
        public void Test_SetBusinessObjectManager_ShouldSet()
        {
            //---------------Set up test pack-------------------
            IBusinessObjectManager expectedObjectManager = new BusinessObjectManager();

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            BORegistry.BusinessObjectManager = expectedObjectManager;
            //---------------Test Result -----------------------
            var actualObjectManager = BORegistry.BusinessObjectManager;

            Assert.AreSame(expectedObjectManager, actualObjectManager);
        }
예제 #16
0
        internal BusinessObjectActionReport <RatingDataRepositoryActionStatus> Create(CMSContentRating cmsContentRating, bool getBaseRatingInfo, bool allowSelfRating, out BaseRatingInfo baseRatingInfo)
        {
            baseRatingInfo = null;
            BusinessObjectActionReport <RatingDataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <RatingDataRepositoryActionStatus>(RatingDataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(cmsContentRating);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                int num = 0;
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                    {
                        num = dataStoreContext.cms_ContentRatings_InsertOrUpdate(cmsContentRating.Rating, cmsContentRating.CMSContentId, cmsContentRating.CMSUserId, allowSelfRating);
                        if (getBaseRatingInfo)
                        {
                            baseRatingInfo = dataStoreContext.cms_Contents_GetBaseRatingInfo(cmsContentRating.CMSContentId);
                        }
                    }
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at cms_ContentRatings_InsertOrUpdate, cms_Contents_GetBaseRatingInfo", ex);
                    throw new DataStoreException(ex, true);
                }
                switch (num)
                {
                case -1:
                    businessObjectActionReport.Status = RatingDataRepositoryActionStatus.SelfRatingNotAllowed;
                    break;

                case 0:
                    cmsContentRating.DateCreatedUtc = DateTime.UtcNow;
                    break;

                default:
                    businessObjectActionReport.Status = RatingDataRepositoryActionStatus.SqlError;
                    _Log.ErrorFormat("CMSContentRating {0} was not inserted at the database (ErrorCode: {1})."
                                     , DebugUtility.GetObjectString(cmsContentRating), num);
                    break;
                }
            }
            else
            {
                businessObjectActionReport.Status = RatingDataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("CMSContentRating {0} was not inserted at the database because the validation failed.\nReport: {1}"
                                , DebugUtility.GetObjectString(cmsContentRating)
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #17
0
        public void Test_NewObjectNotAddedToObjectManager()
        {
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadDefaultClassDef();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            //---------------Assert Precondition----------------
            Assert.AreEqual(0, boMan.Count);

            //---------------Execute Test ----------------------
            new ContactPersonTestBO();

            //---------------Test Result -----------------------
            Assert.AreEqual(0, boMan.Count);
        }
예제 #18
0
        public BusinessObjectActionReport <DataRepositoryActionStatus> Create(IEmail email)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(email);
            int num;

            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                        num = dataStoreContext.wm_Emails_Insert(
                            email.ApplicationId
                            , email.Subject
                            , email.Body
                            , email.Recipients
                            , email.Sender
                            , email.CreatedByUserId
                            , email.Status
                            , email.Priority
                            , email.EmailType);
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at wm_Emails_Insert", ex);
                    throw new DataStoreException(ex, true);
                }

                if (num > 0)
                {
                    email.EmailId = num;
                }
                else
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.SqlError;
                    _Log.ErrorFormat("Email was not inserted at the database (ErrorCode: {0}).", num);
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("Email {0} was not inserted at the database because the validation failed.\nReport: {1}"
                                , DebugUtility.GetObjectString(email)
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #19
0
        internal BusinessObjectActionReport <DataRepositoryActionStatus> Create(CMSThread cmsThread)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(cmsThread);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                int num = -1;
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                    {
                        num = dataStoreContext.cms_Threads_Insert(
                            cmsThread.CMSSectionId
                            , cmsThread.CMSName
                            , cmsThread.CMSStickyDateUtc
                            , cmsThread.IsLocked
                            , cmsThread.CMSIsSticky
                            , cmsThread.IsApproved
                            , cmsThread.CMSThreadStatus);
                    }
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at cms_Threads_Insert", ex);
                    throw new DataStoreException(ex, true);
                }
                if (num > 0)
                {
                    cmsThread.CMSThreadId    = num;
                    cmsThread.DateCreatedUtc = DateTime.UtcNow;
                }
                else
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.NoRecordRowAffected;
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("CMSThread {0} was not inserted at the database because the validation failed.\nReport: {1}"
                                , DebugUtility.GetObjectString(cmsThread)
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #20
0
        public void Test_LoadObjectWhenAlreadyObjectInObjectManager()
        {
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadClassDefWithAddressTestBOsRelationship();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            AddressTestBO       address;
            ContactPersonTestBO cp = CreateSavedCP_WithOneAddresss(out address);

            IPrimaryKey contactPersonID = cp.ID;
            IPrimaryKey addresssID      = address.ID;

            cp      = null;
            address = null;

            TestUtil.WaitForGC();
            boMan.ClearLoadedObjects();

            AddressTestBO addressOut;

            CreateSavedCP_WithOneAddresss(out addressOut);
            CreateSavedCP_WithOneAddresss(out addressOut);
            CreateSavedCP_WithOneAddresss(out addressOut);

            //---------------Assert Precondition----------------
            Assert.AreEqual(6, boMan.Count);

            //---------------Execute Test ----------------------
            ContactPersonTestBO loadedCP = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <ContactPersonTestBO>(contactPersonID);
            RelatedBusinessObjectCollection <AddressTestBO> addresses = loadedCP.AddressTestBOs;

            //---------------Test Result -----------------------
            Assert.AreEqual(1, addresses.Count);
            Assert.AreEqual(8, boMan.Count);

            Assert.IsTrue(boMan.Contains(loadedCP));
            Assert.AreSame(loadedCP, boMan[contactPersonID]);

            AddressTestBO loadedAddress = addresses[0];

            Assert.IsTrue(boMan.Contains(loadedAddress));
            Assert.IsTrue(boMan.Contains(addresssID));
            Assert.IsTrue(boMan.Contains(addresssID.GetObjectId()));
            Assert.AreSame(loadedAddress, boMan[addresssID]);
            Assert.AreSame(loadedAddress, boMan[addresssID.GetObjectId()]);
        }
예제 #21
0
        public static BusinessObjectActionReport <UniqueUserActionStatus> Update(UniqueUser user)
        {
            BusinessObjectActionReport <UniqueUserActionStatus> actionReport = new BusinessObjectActionReport <UniqueUserActionStatus>(UniqueUserActionStatus.Success);

            actionReport.ValidationResult = BusinessObjectManager.Validate(user);
            if (actionReport.ValidationResult.IsValid)
            {
                try
                {
                    UsersDataContext dc = Configuration.GetUsersDataContext();

                    int affectedRows = dc.UpdateUniqueUser(user.UserID, user.AccountStatus, user.Timezone, user.Firstname, user.Lastname
                                                           , user.DateOfBirth, user.City, user.IsNewletterSubscriber);

                    if (affectedRows == 0)
                    {
                        actionReport.Status = UniqueUserActionStatus.NoRecordRowAffected;
                        LogManager.LogEvent(ApplicationLocation.DataAccess, EventType.Error
                                            , "User " + user.UserID.ToString() + " was not updated at the database.");
                    }
                }
                catch (SqlException ex)
                {
                    actionReport.Status = UniqueUserActionStatus.SqlException;
                    LogManager.LogException(ApplicationLocation.DataAccess, ex);
                }
                catch (Exception ex)
                {
                    actionReport.Status = UniqueUserActionStatus.UnknownError;
                    LogManager.LogException(ApplicationLocation.DataAccess, ex);
                }
                finally
                {
                }
            }
            else
            {
                actionReport.Status = UniqueUserActionStatus.ValidationFailed;
                LogManager.LogEvent(ApplicationLocation.DataAccess, EventType.Warning,
                                    "User " + user.UserID.ToString() + " was not updated at the database because the validation failed. Report: "
                                    + actionReport.ValidationResult.ToString(CommonTools.TextFormat.ASCII));
            }

            return(actionReport);
        }
예제 #22
0
        internal BusinessObjectActionReport <DataRepositoryActionStatus> Create(CMSFile cmsFile, string[] tags)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(cmsFile);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                int num = -1;
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                    {
                        num = dataStoreContext.cms_Files_Insert(cmsFile.ApplicationId, cmsFile.CMSUserId, cmsFile.CMSFileType, cmsFile.FileName, cmsFile.Content, cmsFile.ContentType, cmsFile.ContentSize, cmsFile.FriendlyFileName, cmsFile.CMSHeight, cmsFile.CMSWidth, cmsFile.ContentId, tags);
                    }
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at cms_Files_Insert", ex);
                    throw new DataStoreException(ex, true);
                }

                if (num > 0)
                {
                    cmsFile.CMSFileId      = num;
                    cmsFile.DateCreatedUtc = DateTime.UtcNow;
                }
                else if (num == -501)
                {// this is a special condition for system profile images to ensure thread safety on inserts
                    businessObjectActionReport.Status = DataRepositoryActionStatus.UniqueKeyConstraint;
                }
                else
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.SqlError;
                    _Log.ErrorFormat("CMSFile was not inserted at the database (ErrorCode: {0}).", num);
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("CMSFile {0} was not inserted at the database because the validation failed.\nReport: {1}", cmsFile.CMSFileId
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #23
0
        public void Test_ChildElementPropagation()
        {
            int validInteger   = 120;
            int invalidInteger = 1000;

            MyParent myParent = new MyParent();

            myParent.MyChild = new MyChild(invalidInteger);

            BusinessObjectValidationResult businessObjectValidationResult = BusinessObjectManager.Validate(myParent);

            Assert.AreEqual(ValidationStatus.NotAllPropertiesValid, businessObjectValidationResult.ValidationStatus);
            Trace.WriteLine(businessObjectValidationResult.ToString(TextFormat.ASCII));



            myParent.MyChild = new MyChild(validInteger);
            businessObjectValidationResult = BusinessObjectManager.Validate(myParent);
            Assert.AreEqual(ValidationStatus.Valid, businessObjectValidationResult.ValidationStatus);
            Trace.WriteLine(businessObjectValidationResult.ToString(TextFormat.ASCII));



            myParent.MyChildList = new List <MyChild>();
            myParent.MyChildList.Add(new MyChild(validInteger));
            myParent.MyChildList.Add(new MyChild(validInteger));
            myParent.MyChildList.Add(new MyChild(validInteger));

            businessObjectValidationResult = BusinessObjectManager.Validate(myParent);
            Assert.AreEqual(ValidationStatus.Valid, businessObjectValidationResult.ValidationStatus);
            Trace.WriteLine(businessObjectValidationResult.ToString(TextFormat.ASCII));



            myParent.MyChildList = new List <MyChild>();
            myParent.MyChildList.Add(new MyChild(validInteger));
            myParent.MyChildList.Add(new MyChild(invalidInteger));
            myParent.MyChildList.Add(new MyChild(invalidInteger));

            businessObjectValidationResult = BusinessObjectManager.Validate(myParent);
            Assert.AreEqual(ValidationStatus.NotAllPropertiesValid, businessObjectValidationResult.ValidationStatus);

            Trace.WriteLine(businessObjectValidationResult.ToString(TextFormat.ASCII));
        }
예제 #24
0
        internal BusinessObjectActionReport <DataRepositoryActionStatus> Update(CMSSection cmsSection)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(cmsSection);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                int num = 0;
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                    {
                        num = dataStoreContext.cms_Sections_Update(cmsSection.CMSSectionId, cmsSection.CMSParentSectionId, cmsSection.CMSGroupId
                                                                   , cmsSection.Name, cmsSection.Description, cmsSection.CMSSectionType, cmsSection.IsActive, cmsSection.IsModerated);
                    }
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at cms_Sections_Update", ex);
                    throw new DataStoreException(ex, true);
                }
                // TODO (Roman): make sure we return the right values from db
                if (num != -1003)
                {
                    if (num == 0)
                    {
                        businessObjectActionReport.Status = DataRepositoryActionStatus.NoRecordRowAffected;
                    }
                }
                else
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.NameNotUnique;
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("CMSSection {0} was not updated at the database because the validation failed.\nReport: {1}"
                                , DebugUtility.GetObjectString(cmsSection)
                                , businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #25
0
        public void Test_DeleteObject_RemovesFromObjectMan()
        {
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadDefaultClassDef();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            ContactPersonTestBO cp = CreateSavedCP();

            //---------------Assert Precondition----------------
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(cp));
            Assert.AreSame(cp, boMan[cp.ID]);

            //---------------Execute Test ----------------------
            cp.Delete();
            cp.Save();

            //---------------Test Result -----------------------
            Assert.AreEqual(0, boMan.Count);
        }
예제 #26
0
        public void Test_LoadObject_SingleRelationship_UpdatedObjectMan_Generic()
        {
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadClassDefWithAddressTestBOsRelationship();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;

            ContactPersonTestBO cp      = CreateSavedCP();
            AddressTestBO       address = new AddressTestBO();

            address.ContactPersonID = cp.ContactPersonID;
            address.Save();

            IPrimaryKey contactPersonID = cp.ID;
            IPrimaryKey addresssID      = address.ID;

            cp      = null;
            address = null;

            TestUtil.WaitForGC();
            boMan.ClearLoadedObjects();

            //---------------Assert Precondition----------------
            Assert.AreEqual(0, boMan.Count);

            //---------------Execute Test ----------------------
            AddressTestBO       loadedAddress = BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <AddressTestBO>(addresssID);
            ContactPersonTestBO loadedCP      = loadedAddress.ContactPersonTestBO;

            //---------------Test Result -----------------------
            Assert.AreEqual(2, boMan.Count);

            Assert.IsTrue(boMan.Contains(loadedCP));
            Assert.IsTrue(boMan.Contains(contactPersonID));
            Assert.AreSame(loadedCP, boMan[contactPersonID]);

            Assert.IsTrue(boMan.Contains(loadedAddress));
            Assert.IsTrue(boMan.Contains(addresssID));
            Assert.IsTrue(boMan.Contains(addresssID.GetObjectId()));
            Assert.AreSame(loadedAddress, boMan[addresssID]);
            Assert.AreSame(loadedAddress, boMan[addresssID.GetObjectId()]);
        }
예제 #27
0
        internal BusinessObjectActionReport <DataRepositoryActionStatus> CreateTemporaryFile(CMSFile cmsFile)
        {
            BusinessObjectActionReport <DataRepositoryActionStatus> businessObjectActionReport = new BusinessObjectActionReport <DataRepositoryActionStatus>(DataRepositoryActionStatus.Success);

            businessObjectActionReport.ValidationResult = BusinessObjectManager.Validate(cmsFile);
            if (businessObjectActionReport.ValidationResult.IsValid)
            {
                DateTime utcNow = DateTime.UtcNow;
                int      num    = -1;
                try
                {
                    using (IDataStoreContext dataStoreContext = this._DataStore.CreateContext())
                    {
                        num = dataStoreContext.cms_FilesTemp_Insert(cmsFile.ApplicationId, cmsFile.CMSUserId, cmsFile.CMSFileType, cmsFile.FileName, cmsFile.Content
                                                                    , cmsFile.ContentType, cmsFile.ContentSize, cmsFile.FriendlyFileName, cmsFile.CMSHeight, cmsFile.CMSWidth);
                    }
                }
                catch (Exception ex)
                {
                    _Log.Error("Error at cms_FilesTemp_Insert", ex);
                    throw new DataStoreException(ex, true);
                }
                if (num > 0)
                {
                    cmsFile.CMSFileId      = num;
                    cmsFile.IsTemporary    = true;
                    cmsFile.DateCreatedUtc = DateTime.UtcNow;
                }
                else
                {
                    businessObjectActionReport.Status = DataRepositoryActionStatus.SqlError;
                    _Log.ErrorFormat("Temporary CMSFile {0} was not inserted at the database (ErrorCode: {1}).", cmsFile.CMSFileId, num);
                }
            }
            else
            {
                businessObjectActionReport.Status = DataRepositoryActionStatus.ValidationFailed;
                _Log.WarnFormat("Temporary CMSFile {0} was not inserted at the database because the validation failed.\nReport: {1}", cmsFile.CMSFileId, businessObjectActionReport.ValidationResult.ToString(TextFormat.ASCII));
            }
            return(businessObjectActionReport);
        }
예제 #28
0
        public void Test_RemoveFromObjectManager()
        {
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadDefaultClassDef();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;
            ContactPersonTestBO   cp    = new ContactPersonTestBO();

            cp.Surname = TestUtil.CreateRandomString();
            boMan.Add(cp);

            //---------------Assert Precondition----------------
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(cp));

            //---------------Execute Test ----------------------
            boMan.Remove(cp);

            //---------------Test Result -----------------------
            Assert.AreEqual(0, boMan.Count);
            Assert.IsFalse(boMan.Contains(cp));
        }
예제 #29
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!Page.IsPostBack)
     {
         try
         {
             ICityManager cityManager = (ICityManager)BusinessObjectManager.GetCityManager();
             ddlCities.DataSource = cityManager.GetCities();
             //ddlCities.DataMember = "CityId";
             ddlCities.DataValueField = "CityId";
             ddlCities.DataTextField  = "Name";
             ddlCities.DataBind();
         }
         catch (CityManagerException)
         {
         }
         catch (Exception)
         {
         }
     }
 }
예제 #30
0
        public void Test_SaveDuplicateObject_DoesNotAddItselfToObjectManager()
        {
            //This scenario is unlikely to ever happen in normal use but is frequently hit during testing.
            //An object that has a reference to it is removed from the object manager (usually via ClearLoadedObjects).
            // A second instance of the same object is now loaded. This new instance is therefore added to the object manager.
            // The first object is saved. This must not remove the second instance of the object from the object manager and insert a itself.
            //---------------Set up test pack-------------------
            ContactPersonTestBO.LoadDefaultClassDef();
            BusinessObjectManager boMan = BusinessObjectManager.Instance;
            ContactPersonTestBO   originalContactPerson = new ContactPersonTestBO();

            originalContactPerson.Surname = "FirstSurname";
            originalContactPerson.Save();
            IPrimaryKey origCPID = originalContactPerson.ID;

            BusinessObjectManager.Instance.ClearLoadedObjects();

            //---------------Assert Precondition----------------
            Assert.AreEqual(0, boMan.Count);
            Assert.IsFalse(boMan.Contains(originalContactPerson));

            //---------------Execute Test Step 1----------------------
            ContactPersonTestBO myContact2 =
                BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <ContactPersonTestBO>(origCPID);

            //---------------Test Result Step 1-----------------------
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(myContact2));


            //---------------Execute Test Step 2----------------------
            originalContactPerson.Surname = TestUtil.CreateRandomString();
            originalContactPerson.Save();

            //---------------Test Result Step 1-----------------------
            Assert.AreNotSame(originalContactPerson, myContact2);
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(myContact2));
            Assert.IsFalse(boMan.Contains(originalContactPerson));
        }
 public void Test_CompositePrimaryKey_CreateBO_DoesNotAddToObjectManager()
 {
     //---------------Set up test pack-------------------
     ContactPersonCompositeKey.LoadClassDefs();
     IBusinessObjectManager boMan = new BusinessObjectManager();
     BORegistry.BusinessObjectManager = boMan;
     //---------------Assert Precondition----------------
     Assert.AreEqual(0, boMan.Count);
     //---------------Execute Tests----------------------
     new ContactPersonCompositeKey();
     //---------------Execute Test ----------------------
     Assert.AreEqual(1, boMan.Count);
 }
 public void Test_ObjectID_CreateBO_DoesNotAddToObjectManager()
 {
     //---------------Set up test pack-------------------
     SetupDefaultContactPersonBO();
     IBusinessObjectManager boMan = new BusinessObjectManager();
     BORegistry.BusinessObjectManager = boMan;
     //---------------Assert Precondition----------------
     Assert.AreEqual(0, boMan.Count);
     //---------------Execute Tests----------------------
     new ContactPersonTestBO();
     //---------------Execute Test ----------------------
     Assert.AreEqual(1, boMan.Count);
 }
 public void Test_GetBusinessObject_WithPrimaryKey_WhenNotExistsWhenComposite_ShouldRetNull_FixBug533()
 {
     //--------------- Set up test pack ------------------
     var businessObjectManager = new BusinessObjectManager();
     BORegistry.BusinessObjectManager = businessObjectManager;
     ContactPersonCompositeKey.LoadClassDefs();
     var cp = CreateCompositeCP();
     var otherBOMan = new BusinessObjectManager();
     //----------------Assert Preconditions---------------
     Assert.IsNotNull(cp.ID);
     Assert.IsFalse(otherBOMan.Contains(cp.ID));
     //--------------- Execute Test ----------------------
     var found = otherBOMan.GetBusinessObject(cp.ID);
     //--------------- Test Result -----------------------
     Assert.IsNull(found);
 }
 public void Test_GetBusinessObject_WithPrimaryKey_WhenExistsWhenComposite_ShouldRetObject_FixBug533()
 {
     //--------------- Set up test pack ------------------
     var businessObjectManager = new BusinessObjectManager();
     BORegistry.BusinessObjectManager = businessObjectManager;
     ContactPersonCompositeKey.LoadClassDefs();
     var expectedFound = CreateCompositeCP();
     //----------------Assert Preconditions---------------
     Assert.IsNotNull(expectedFound.ID);
     Assert.IsNotNull(((BOPrimaryKey)expectedFound.ID).BusinessObject);
     Assert.IsTrue(businessObjectManager.Contains(expectedFound.ID));
     //--------------- Execute Test ----------------------
     var found = businessObjectManager.GetBusinessObject(expectedFound.ID);
     //--------------- Test Result -----------------------
     Assert.AreSame(expectedFound, found);
 }
 public void Test_GetBusinessObject_WithPrimaryKey_WhenNotExists_ShouldRetNull_FixBug533()
 {
     //--------------- Set up test pack ------------------
     var businessObjectManager = new BusinessObjectManager();
     BORegistry.BusinessObjectManager = businessObjectManager;
     SetupDefaultContactPersonBO();
     var cp = new ContactPersonTestBO();
     var otherBOMan = new BusinessObjectManager();
     //----------------Assert Preconditions---------------
     Assert.IsFalse(otherBOMan.Contains(cp.ID));
     //--------------- Execute Test ----------------------
     var found = otherBOMan.GetBusinessObject(cp.ID);
     //--------------- Test Result -----------------------
     Assert.IsNull(found);
 }
        public void Test_SaveForCompositeKey_UpdatedObjectMan()
        {
            //---------------Set up test pack-------------------
            ContactPersonCompositeKey.LoadClassDefs();
            IBusinessObjectManager boMan = new BusinessObjectManager();
            BORegistry.BusinessObjectManager = boMan;
            var cp = new ContactPersonCompositeKey
                                               {
                                                   PK1Prop1 = TestUtil.GetRandomString(),
                                                   PK1Prop2 = TestUtil.GetRandomString()
                                               };

            //---------------Assert Precondition----------------
            Assert.AreEqual(1, boMan.Count);

            //---------------Execute Test ----------------------
            cp.Save();

            //---------------Test Result -----------------------
            Assert.AreEqual(1, boMan.Count);
            Assert.IsTrue(boMan.Contains(cp));
            Assert.IsTrue(boMan.Contains(cp.ID));
            Assert.IsTrue(boMan.Contains(cp.ID.ObjectID));
            Assert.AreSame(cp, boMan[cp.ID.ObjectID]);
            Assert.AreSame(cp, boMan[cp.ID]);
        }
        public void Test_CompositePrimaryKey_SetPrimaryKeyPropValue_DoesNotAddToObjectManager()
        {
            //---------------Set up test pack-------------------
            ContactPersonCompositeKey.LoadClassDefs();
            IBusinessObjectManager boMan = new BusinessObjectManager();
            BORegistry.BusinessObjectManager = boMan;
            //---------------Assert Precondition----------------
            Assert.AreEqual(0, boMan.Count);
            //---------------Execute Tests----------------------
            var cp = new ContactPersonCompositeKey {PK1Prop1 = TestUtil.GetRandomString()};

            //---------------Execute Test ----------------------
            Assert.AreEqual(1, boMan.Count);
        }
 public void Test_GetBusinessObject_WithPrimaryKey_WhenExists_ShouldRetObject_FixBug533()
 {
     //--------------- Set up test pack ------------------
     var businessObjectManager = new BusinessObjectManager();
     BORegistry.BusinessObjectManager = businessObjectManager;
     SetupDefaultContactPersonBO();
     var expectedFound = new ContactPersonTestBO();
     //----------------Assert Preconditions---------------
     Assert.IsTrue( businessObjectManager.Contains(expectedFound.ID));
     //--------------- Execute Test ----------------------
     var found = businessObjectManager.GetBusinessObject(expectedFound.ID);
     //--------------- Test Result -----------------------
     Assert.AreSame(expectedFound, found);
 }
        public void Test_CompositePrimaryKey_SetBothPrimaryKeyPropValues_DoesNotAddToObjectManager()
        {
            //---------------Set up test pack-------------------
            ContactPersonCompositeKey.LoadClassDefs();
            IBusinessObjectManager boMan = new BusinessObjectManager();
            BORegistry.BusinessObjectManager = boMan;
            //---------------Assert Precondition----------------
            Assert.AreEqual(0, boMan.Count);
            //---------------Execute Tests----------------------
            var cp = CreateCompositeCP();

            //---------------Execute Test ----------------------
            Assert.IsNotNull(cp);
            Assert.AreEqual(1, boMan.Count);
        }
예제 #40
0
 public void Test_SetBusinessObjectManager_ShouldSet()
 {
     //---------------Set up test pack-------------------
     IBusinessObjectManager expectedObjectManager = new BusinessObjectManager();            
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     BORegistry.BusinessObjectManager = expectedObjectManager;
     //---------------Test Result -----------------------
     var actualObjectManager = BORegistry.BusinessObjectManager;
     Assert.AreSame(expectedObjectManager, actualObjectManager);
 }