public void Data_SaveableDatabase_Update()
        {
            var testEntity = new CustomerInfo();
            var saver      = SaveableDatabase <CustomerInfo> .Construct();

            var oldFirstName = TypeExtension.DefaultString;
            var newFirstName = DateTime.UtcNow.Ticks.ToString();
            int entityID     = TypeExtension.DefaultInteger;
            var entityKey    = TypeExtension.DefaultGuid;

            // Create and capture original data
            this.Data_SaveableDatabase_Insert();
            testEntity           = saver.GetAll().OrderByDescending(x => x.CreatedDate).FirstOrDefaultSafe();
            oldFirstName         = testEntity.FirstName;
            entityID             = testEntity.ID;
            entityKey            = testEntity.Key;
            testEntity.FirstName = newFirstName;
            Assert.IsTrue(testEntity.IsNew == false);
            Assert.IsTrue(testEntity.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(testEntity.Key != TypeExtension.DefaultGuid);

            // Do Update
            saver.Save(testEntity);

            // Pull from DB and retest
            testEntity = saver.GetByID(entityID);
            Assert.IsTrue(testEntity.IsNew == false);
            Assert.IsTrue(testEntity.ID == entityID);
            Assert.IsTrue(testEntity.Key == entityKey);
            Assert.IsTrue(testEntity.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(testEntity.Key != TypeExtension.DefaultGuid);
        }
        public void Data_SaveableDatabase_GetWhere()
        {
            // Plain EntityInfo object
            var testData2 = SaveableDatabase <CustomerInfo> .Construct();

            var testEntity2 = new CustomerInfo();
            var testId2     = testData2.GetAllExcludeDefault().FirstOrDefaultSafe().ID;

            testEntity2 = testData2.GetAll().Where(x => x.ID == testId2).FirstOrDefaultSafe();
            Assert.IsTrue(testEntity2.IsNew == false);
            Assert.IsTrue(testEntity2.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(testEntity2.Key != TypeExtension.DefaultGuid);

            // CrudEntity object
            this.Data_SaveableDatabase_Insert();
            var testData = SaveableDatabase <CustomerInfo> .Construct();

            var testEntity = new CustomerInfo();
            var testId     = testData.GetAllExcludeDefault().FirstOrDefaultSafe().ID;

            testEntity = testData.GetAll().Where(x => x.ID == testId).FirstOrDefaultSafe();
            Assert.IsTrue(testEntity.IsNew == false);
            Assert.IsTrue(testEntity.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(testEntity.Key != TypeExtension.DefaultGuid);
        }
        public void Data_SaveableDatabase_Delete()
        {
            var saver = SaveableDatabase <CustomerInfo> .Construct();

            var testEntity = new CustomerInfo();
            var oldID      = TypeExtension.DefaultInteger;
            var oldKey     = TypeExtension.DefaultGuid;

            // Insert and baseline test
            this.Data_SaveableDatabase_Insert();
            testEntity = saver.GetAll().OrderByDescending(x => x.CreatedDate).FirstOrDefaultSafe();
            oldID      = testEntity.ID;
            oldKey     = testEntity.Key;
            Assert.IsTrue(testEntity.IsNew == false);
            Assert.IsTrue(testEntity.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(testEntity.Key != TypeExtension.DefaultGuid);

            // Do delete
            saver.Delete(testEntity);

            // Pull from DB and retest
            testEntity = saver.GetAll().Where(x => x.ID == oldID).FirstOrDefaultSafe();
            Assert.IsTrue(testEntity.IsNew == true);
            Assert.IsTrue(testEntity.ID != oldID);
            Assert.IsTrue(testEntity.Key != oldKey);
            Assert.IsTrue(testEntity.ID == TypeExtension.DefaultInteger);
            Assert.IsTrue(testEntity.Key == TypeExtension.DefaultGuid);

            // Add to recycle bin for cleanup
            recycleBin.Add(testEntity.ID);
        }
        public void Data_SaveableDatabase_RepeatingQueries()
        {
            var dataStore = SaveableDatabase <CustomerInfo> .Construct();

            var customer = new CustomerInfo();

            // Multiple Gets
            var a      = dataStore.GetAll().ToList();
            var aCount = a.Count;
            var b      = dataStore.GetAll().ToList();
            var bCount = b.Count;

            // datastore.Save
            customer           = dataStore.GetByID(a.FirstOrDefaultSafe().ID);
            customer.FirstName = DateTime.UtcNow.Ticks.ToString();
            dataStore.Save(customer);
            // Save check
            var c      = dataStore.GetAll().ToList();
            var cCount = c.Count;

            Assert.IsTrue(aCount == bCount && bCount == cCount);
            // customer.save
            customer.Update();
            // Multiple Gets
            var x      = dataStore.GetAll().ToList();
            var xCount = x.Count;
            var y      = dataStore.GetAll().ToList();
            var yCount = y.Count;
            var z      = dataStore.GetAll().ToList();
            var zCount = z.Count;

            Assert.IsTrue(xCount == yCount && yCount == zCount);
        }
        public void Data_SaveableDatabase_CountAny()
        {
            var db = SaveableDatabase <CustomerType> .Construct();

            // GetAll() count and any
            var resultsAll = db.GetAll();

            Assert.IsTrue(resultsAll.Count() > 0);
            Assert.IsTrue(resultsAll.Any() == true);

            // GetAll().Take(1) count and any
            var resultsTake = db.GetAll().Take(1);

            Assert.IsTrue(resultsTake.Count() == 1);
            Assert.IsTrue(resultsTake.Any() == true);

            // Get an ID to test
            var id = db.GetAllExcludeDefault().FirstOrDefaultSafe().ID;

            Assert.IsTrue(id != TypeExtension.DefaultInteger);

            // GetAll().Where count and any
            var resultsWhere = db.GetAll().Where(x => x.ID == id);

            Assert.IsTrue(resultsWhere.Count() > 0);
            Assert.IsTrue(resultsWhere.Any() == true);
        }
Пример #6
0
        public void Data_SaveableDatabase_GetByID()
        {
            var custData = SaveableDatabase <CustomerInfo> .Construct();

            var custEntity = new CustomerInfo();
            var randomID   = custData.GetAll().FirstOrDefaultSafe().ID;
            var randomID2  = custData.GetAll().OrderByDescending(x => x.ID).FirstOrDefaultSafe().ID;

            // GetByID
            var custGetByID = custData.GetByID(randomID);

            Assert.IsTrue(custGetByID.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(custGetByID.Key != TypeExtension.DefaultGuid);

            // GetAll().Where() by LINQ expression
            var fname1 = custData.GetAll();

            Assert.IsTrue(fname1.Any());
            var fnameValue = fname1.FirstOrDefaultSafe().FirstName;
            var fname2     = custData.GetAll().Where(y => y.FirstName == fnameValue);

            Assert.IsTrue(fname2.Any());
            var fname3 = fname1.Where(y => y.FirstName == fnameValue);

            Assert.IsTrue(fname3.Any());

            // Where 1 record
            custEntity = custData.GetAll().Take(1).FirstOrDefaultSafe();
            Assert.IsTrue(custEntity.ID == randomID);
            Assert.IsTrue(custEntity.IsNew == false);
        }
        public void Data_SaveableDatabase_GetByID()
        {
            var custData = SaveableDatabase <CustomerInfo> .Construct();

            var custEntity = new CustomerInfo();
            var randomID   = custData.GetAll().FirstOrDefaultSafe().ID;
            var randomID2  = custData.GetAll().OrderByDescending(x => x.ID).FirstOrDefaultSafe().ID;

            // GetByID
            var custGetByID   = custData.GetByID(randomID);
            var custFirstName = custGetByID.FirstName;

            Assert.IsTrue(custGetByID.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(custGetByID.Key != TypeExtension.DefaultGuid);

            // By custom where
            var fname = custData.GetAll().Where(y => y.FirstName == custFirstName);

            Assert.IsTrue(fname.Any() == true);
            var fnEntity = fname.FirstOrDefaultSafe();

            Assert.IsTrue(fnEntity.IsNew == false);
            Assert.IsTrue(fnEntity.FirstName != TypeExtension.DefaultString);

            // Where 1 record
            custEntity = custData.GetAll().Take(1).FirstOrDefaultSafe();
            Assert.IsTrue(custEntity.ID == randomID);
            Assert.IsTrue(custEntity.IsNew == false);
        }
Пример #8
0
        /// <summary>
        /// Creates this object in the database
        ///  ActivityContext record is auto-generated
        /// </summary>s
        /// <returns></returns>
        public virtual TEntity Create()
        {
            var returnValue = new TEntity();
            var db          = SaveableDatabase <TEntity> .Construct();

            returnValue = db.Save(this.ToEntity(), forceInsert: true);

            return(returnValue);
        }
Пример #9
0
        private void Cleanup()
        {
            var db = SaveableDatabase <CustomerInfo> .Construct();

            foreach (int item in recycleBin)
            {
                db.GetByID(item).Delete();
            }
        }
        public static void Cleanup()
        {
            var db = SaveableDatabase <CustomerInfo> .Construct();

            foreach (int item in CrudEntityTests.RecycleBin)
            {
                db.GetByID(item).Delete();
            }
        }
Пример #11
0
        /// <summary>
        /// Creates this object in the database
        ///  ActivityContext record is supplied as parameter
        /// </summary>
        /// <param name="activity">Activity Context of this operation, used to track DB commits</param>
        /// <returns>Fresh TEntity pulled from the database, as DB might change some data automatically</returns>
        public virtual TEntity Create(IActivityContext activity)
        {
            var returnValue = new TEntity();
            var db          = SaveableDatabase <TEntity> .Construct();

            this.ActivityContextID = activity.ActivityContextID;
            returnValue            = db.Save(this.ToEntity(), forceInsert: true);

            return(returnValue);
        }
Пример #12
0
        /// <summary>
        /// Deletes this object with automatic tracking
        /// </summary>
        /// <returns>Object deleted and all current values. Returned values should be empty</returns>
        public virtual bool Delete()
        {
            var db = SaveableDatabase <TEntity> .Construct();

            var returnValue = TypeExtension.DefaultBoolean;

            returnValue = db.Delete(this.ToEntity());

            return(returnValue);
        }
Пример #13
0
        /// <summary>
        /// Deletes this object from the database
        ///  ActivityContext record is supplied as parameter
        /// </summary>
        /// <param name="activity">Activity Context of this operation, used to track DB commits</param>
        /// <returns>Fresh TEntity pulled from the database, as DB might change some data automatically</returns>
        public virtual bool Delete(IActivityContext activity)
        {
            var db = SaveableDatabase <TEntity> .Construct();

            var returnValue = TypeExtension.DefaultBoolean;

            this.ActivityContextID = activity.ActivityContextID;
            returnValue            = db.Delete(this.ToEntity());

            return(returnValue);
        }
        private void Cleanup()
        {
            var saver = SaveableDatabase <CustomerInfo> .Construct();

            var toDelete = new CustomerInfo();

            foreach (int item in recycleBin)
            {
                toDelete = saver.GetAll().Where(x => x.ID == item).FirstOrDefaultSafe();
                saver.Delete(toDelete);
            }
        }
        public void Data_SaveableDatabase_GetAll()
        {
            var typeDB = SaveableDatabase <CustomerType> .Construct();

            var typeResults = typeDB.GetAll().Take(1);

            Assert.IsTrue(typeResults.Count() > 0);

            this.Data_SaveableDatabase_Insert();
            var custDB = SaveableDatabase <CustomerInfo> .Construct();

            var custResults = custDB.GetAll().Take(1);

            Assert.IsTrue(custResults.Count() > 0);
        }
        public void Data_SaveableDatabase_GetByKey()
        {
            // Should create 1 record
            var custData = SaveableDatabase <CustomerInfo> .Construct();

            var custCount = custData.GetAll().Count();

            Assert.IsTrue(custCount > 0);
            // ByKey Should return 1 record
            var existingKey  = custData.GetAll().FirstOrDefaultSafe().Key;
            var custWhereKey = custData.GetByKey(existingKey);

            Assert.IsTrue(custWhereKey.Key == existingKey);
            Assert.IsTrue(custWhereKey.ID != TypeExtension.DefaultInteger);
        }
Пример #17
0
        public void Data_SaveableDatabase_GetByKey()
        {
            var custData = SaveableDatabase <CustomerInfo> .Construct();

            // ByKey Should return 1 record
            var randomRecord = custData.GetAll().FirstOrDefaultSafe();
            var custWhereKey = custData.GetByKey(randomRecord.Key);

            Assert.IsTrue(custWhereKey.Key == randomRecord.Key);
            Assert.IsTrue(custWhereKey.ID != TypeExtension.DefaultInteger);

            // FirstName works, but Key does not
            var fname = custData.GetAll().Where(y => y.FirstName == randomRecord.FirstName);

            Assert.IsTrue(fname.Count() > 0);
        }
        public void Data_SaveableDatabase_Insert()
        {
            var dataStore = SaveableDatabase <CustomerInfo> .Construct();

            var testEntity   = new CustomerInfo();
            var resultEntity = new CustomerInfo();
            var oldID        = TypeExtension.DefaultInteger;
            var oldKey       = TypeExtension.DefaultGuid;
            var newID        = TypeExtension.DefaultInteger;
            var newKey       = TypeExtension.DefaultGuid;

            // Create and insert record
            testEntity.Fill(testEntities[Arithmetic.Random(1, 5)]);
            oldID  = testEntity.ID;
            oldKey = testEntity.Key;
            Assert.IsTrue(testEntity.IsNew == true);
            Assert.IsTrue(testEntity.ID == TypeExtension.DefaultInteger);
            Assert.IsTrue(testEntity.Key == TypeExtension.DefaultGuid);

            // Do Insert and check passed entity and returned entity
            resultEntity = dataStore.Save(testEntity, true);
            Assert.IsTrue(testEntity.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(testEntity.Key != TypeExtension.DefaultGuid);
            Assert.IsTrue(resultEntity.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(resultEntity.Key != TypeExtension.DefaultGuid);

            // Pull from DB and retest
            testEntity = dataStore.GetByID(resultEntity.ID);
            Assert.IsTrue(testEntity.IsNew == false);
            Assert.IsTrue(testEntity.ID != oldID);
            Assert.IsTrue(testEntity.Key != oldKey);
            Assert.IsTrue(testEntity.ID != TypeExtension.DefaultInteger);
            Assert.IsTrue(testEntity.Key != TypeExtension.DefaultGuid);

            // Cleanup
            recycleBin.Add(testEntity.ID);
        }
Пример #19
0
        /// <summary>
        /// Inserts or Updates this object with Workflow-based tracking.
        /// </summary>
        /// <param name="entity">Entity to be committed to the datastore</param>
        /// <param name="activity">Activity record owning this process</param>
        public TEntity Save(TEntity entity, IActivityContext activity)
        {
            var db = SaveableDatabase <TEntity> .Construct();

            return(db.Save(entity, activity));
        }
Пример #20
0
        /// <summary>
        /// Saves this object with automatic tracking.
        /// </summary>
        /// <param name="entity">Entity to be committed to the datastore</param>
        /// <param name="forceInsert">Ability to override insert vs. update and force insert</param>
        public TEntity Save(TEntity entity, bool forceInsert)
        {
            var db = SaveableDatabase <TEntity> .Construct();

            return(db.Save(entity, forceInsert));
        }
Пример #21
0
        /// <summary>
        /// Deletes the passed object with automatic tracking
        /// </summary>
        /// <param name="entity">Entity to be removed from the datastore</param>
        /// <returns>True if record deleted, false if not</returns>
        public bool Delete(TEntity entity)
        {
            var db = SaveableDatabase <TEntity> .Construct();

            return(db.Delete(entity));
        }
Пример #22
0
        /// <summary>
        /// Inserts or Updates this object in the database
        /// </summary>
        /// <returns>Object updated and all current values as of the save</returns>
        public TEntity Save(TEntity entity)
        {
            var db = SaveableDatabase <TEntity> .Construct();

            return(db.Save(entity));
        }