コード例 #1
0
        public async Task Data_DatabaseWriter_Delete()
        {
            var testEntity = new CustomerInfo();
            var oldId      = Defaults.Integer;
            var oldKey     = Defaults.Guid;

            // Insert and baseline test
            await Data_DatabaseWriter_Insert();

            testEntity = new EntityReader <CustomerInfo>().GetAll().OrderByDescending(x => x.CreatedDate).FirstOrDefaultSafe();
            oldId      = testEntity.Id;
            oldKey     = testEntity.Key;
            Assert.IsTrue(testEntity.IsNew == false);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);

            // Do delete
            using (var writer = new StoredProcedureWriter <CustomerInfo>(testEntity, new CustomerSPConfig(testEntity)))
            {
                testEntity = await writer.DeleteAsync();
            }

            // Pull from DB and retest
            testEntity = new EntityReader <CustomerInfo>().GetById(oldId);
            Assert.IsTrue(testEntity.IsNew);
            Assert.IsTrue(testEntity.Id != oldId);
            Assert.IsTrue(testEntity.Key != oldKey);
            Assert.IsTrue(testEntity.IsNew);
            Assert.IsTrue(testEntity.Key == Defaults.Guid);

            // Add to recycle bin for cleanup
            DatabaseWriterTests.RecycleBin.Add(testEntity.Key);
        }
コード例 #2
0
        public void Entity_StoredProcedureEntity_Delete()
        {
            var writer      = new StoredProcedureWriter <CustomerInfo>();
            var reader      = new EntityReader <CustomerInfo>();
            var dbCustomer  = new CustomerInfo();
            var lastKey     = TypeExtension.DefaultGuid;
            var originalId  = TypeExtension.DefaultInteger;
            var originalKey = TypeExtension.DefaultGuid;

            Entity_StoredProcedureEntity_Create();
            lastKey = StoredProcedureEntityTests.RecycleBin.Last();

            dbCustomer  = reader.GetByKey(lastKey);
            originalId  = dbCustomer.Id;
            originalKey = dbCustomer.Key;
            Assert.IsTrue(!dbCustomer.IsNew);
            Assert.IsTrue(dbCustomer.Id != TypeExtension.DefaultInteger);
            Assert.IsTrue(dbCustomer.Key != TypeExtension.DefaultGuid);
            Assert.IsTrue(dbCustomer.CreatedDate.Date == DateTime.UtcNow.Date);

            dbCustomer = writer.Delete(dbCustomer);
            Assert.IsTrue(dbCustomer.IsNew);

            dbCustomer = reader.GetById(originalId);
            Assert.IsTrue(dbCustomer.IsNew);
            Assert.IsTrue(dbCustomer.Id == TypeExtension.DefaultInteger);
            Assert.IsTrue(dbCustomer.Key == TypeExtension.DefaultGuid);
        }
コード例 #3
0
        public async Task Entity_CustomerInfo_Delete()
        {
            var testEntity   = new CustomerInfo();
            var resultEntity = new CustomerInfo();
            var lastKey      = Defaults.Guid;
            var originalId   = Defaults.Integer;
            var originalKey  = Defaults.Guid;
            var reader       = new EntityReader <CustomerInfo>();

            await Entity_CustomerInfo_Create();

            lastKey = CustomerEntityTests.RecycleBin.Last();

            testEntity  = reader.Read(x => x.Key == lastKey).FirstOrDefaultSafe();
            originalId  = testEntity.Id;
            originalKey = testEntity.Key;
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(testEntity.CreatedDate.Date == DateTime.UtcNow.Date);

            using (var writer = new StoredProcedureWriter <CustomerInfo>(testEntity, new CustomerSPConfig(testEntity)))
            {
                resultEntity = await writer.DeleteAsync();
            }
            Assert.IsTrue(resultEntity.IsNew);

            testEntity = reader.Read(x => x.Id == originalId).FirstOrDefaultSafe();
            Assert.IsTrue(testEntity.Id != originalId);
            Assert.IsTrue(testEntity.Key != originalKey);
            Assert.IsTrue(testEntity.IsNew);
            Assert.IsTrue(testEntity.Key == Defaults.Guid);
        }
コード例 #4
0
        /// <summary>
        /// Save the entity to the database. This method will auto-generate activity tracking.
        /// </summary>
        public CustomerInfo Delete()
        {
            var writer = new StoredProcedureWriter <CustomerInfo>();

            this.Fill(writer.Delete(this));
            return(this);
        }
コード例 #5
0
        public async Task Data_DatabaseWriter_Update()
        {
            var testEntity   = new CustomerInfo();
            var oldFirstName = Defaults.String;
            var newFirstName = DateTime.UtcNow.Ticks.ToString();
            int entityId     = Defaults.Integer;
            var entityKey    = Defaults.Guid;

            // Create and capture original data
            await Data_DatabaseWriter_Insert();

            testEntity           = new EntityReader <CustomerInfo>().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 != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);

            // Do Update
            using (var writer = new StoredProcedureWriter <CustomerInfo>(testEntity, new CustomerSPConfig(testEntity)))
            {
                testEntity = await writer.SaveAsync();
            }

            // Pull from DB and retest
            testEntity = new EntityReader <CustomerInfo>().GetById(entityId);
            Assert.IsTrue(testEntity.IsNew == false);
            Assert.IsTrue(testEntity.Id == entityId);
            Assert.IsTrue(testEntity.Key == entityKey);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
        }
コード例 #6
0
        public void Entity_StoredProcedureEntity_Create()
        {
            var writer         = new StoredProcedureWriter <CustomerInfo>();
            var newCustomer    = new CustomerInfo();
            var resultCustomer = new CustomerInfo();
            var dbCustomer     = new CustomerInfo();

            // Create should update original object, and pass back a fresh-from-db object
            newCustomer.Fill(testEntities[Arithmetic.Random(1, 5)]);
            resultCustomer = writer.Create(newCustomer);

            Assert.IsTrue(newCustomer.Key != TypeExtension.DefaultGuid);
            Assert.IsTrue(resultCustomer.Id != TypeExtension.DefaultInteger);
            Assert.IsTrue(resultCustomer.Key != TypeExtension.DefaultGuid);

            // Object in db should match in-memory objects
            dbCustomer = new EntityReader <CustomerInfo>().GetById(resultCustomer.Id);
            Assert.IsTrue(!dbCustomer.IsNew);
            Assert.IsTrue(dbCustomer.Id != TypeExtension.DefaultInteger);
            Assert.IsTrue(dbCustomer.Key != TypeExtension.DefaultGuid);
            Assert.IsTrue(dbCustomer.Id == resultCustomer.Id);
            Assert.IsTrue(dbCustomer.Key == resultCustomer.Key && resultCustomer.Key == newCustomer.Key);

            StoredProcedureEntityTests.RecycleBin.Add(newCustomer.Key);
        }
コード例 #7
0
        public void Data_StoredProcWriter_Update()
        {
            var testEntity   = new CustomerInfo();
            var writer       = new StoredProcedureWriter <CustomerInfo>();
            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_StoredProcWriter_Insert();
            testEntity           = new EntityReader <CustomerInfo>().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
            writer.Save(testEntity);

            // Pull from DB and retest
            testEntity = new EntityReader <CustomerInfo>().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);
        }
コード例 #8
0
        public void Data_StoredProcWriter_Delete()
        {
            var writer     = new StoredProcedureWriter <CustomerInfo>();
            var testEntity = new CustomerInfo();
            var oldId      = TypeExtension.DefaultInteger;
            var oldKey     = TypeExtension.DefaultGuid;

            // Insert and baseline test
            this.Data_StoredProcWriter_Insert();
            testEntity = new EntityReader <CustomerInfo>().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
            writer.Delete(testEntity);

            // Pull from DB and retest
            testEntity = new EntityReader <CustomerInfo>().GetById(oldId);
            Assert.IsTrue(testEntity.IsNew);
            Assert.IsTrue(testEntity.Id != oldId);
            Assert.IsTrue(testEntity.Key != oldKey);
            Assert.IsTrue(testEntity.IsNew);
            Assert.IsTrue(testEntity.Key == TypeExtension.DefaultGuid);

            // Add to recycle bin for cleanup
            DatabaseWriterTests.RecycleBin.Add(testEntity.Key);
        }
コード例 #9
0
        public void Data_StoredProcWriter_Insert()
        {
            var writer       = new StoredProcedureWriter <CustomerInfo>();
            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);
            Assert.IsTrue(testEntity.IsNew);
            Assert.IsTrue(testEntity.Key == TypeExtension.DefaultGuid);

            // Do Insert and check passed entity and returned entity
            resultEntity = writer.Create(testEntity);
            Assert.IsTrue(testEntity.Key != TypeExtension.DefaultGuid);
            Assert.IsTrue(resultEntity.Id != TypeExtension.DefaultInteger);
            Assert.IsTrue(resultEntity.Key != TypeExtension.DefaultGuid);

            // Pull from DB and retest
            testEntity = new EntityReader <CustomerInfo>().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
            DatabaseWriterTests.RecycleBin.Add(testEntity.Key);
        }
コード例 #10
0
        public async Task Entity_StoredProcedureEntity_Delete()
        {
            var reader = new EntityReader <CustomerInfo>();

            await Entity_StoredProcedureEntity_Create();

            var lastKey = StoredProcedureEntityTests.RecycleBin.Last();

            var testEntity = reader.GetByKey(lastKey);
            var originalId = testEntity.Id;

            Assert.IsTrue(!testEntity.IsNew);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(testEntity.CreatedDate.Date == DateTime.UtcNow.Date);

            using (var writer = new StoredProcedureWriter <CustomerInfo>(testEntity, new CustomerSPConfig(testEntity)))
            {
                testEntity = await writer.DeleteAsync();
            }
            Assert.IsTrue(testEntity.IsNew);

            testEntity = reader.GetById(originalId);
            Assert.IsTrue(testEntity.IsNew);
            Assert.IsTrue(testEntity.Id == Defaults.Integer);
            Assert.IsTrue(testEntity.Key == Defaults.Guid);
        }
コード例 #11
0
        public async Task Entity_StoredProcedureEntity_Create()
        {
            var newCustomer  = new CustomerInfo();
            var resultEntity = new CustomerInfo();

            // Create should update original object, and pass back a fresh-from-db object
            newCustomer.Fill(testEntities[Arithmetic.Random(1, 5)]);
            using (var writer = new StoredProcedureWriter <CustomerInfo>(newCustomer, new CustomerSPConfig(newCustomer)))
            {
                resultEntity = await writer.CreateAsync();
            }

            Assert.IsTrue(newCustomer.Key != Defaults.Guid);
            Assert.IsTrue(resultEntity.Id != Defaults.Integer);
            Assert.IsTrue(resultEntity.Key != Defaults.Guid);

            // Object in db should match in-memory objects
            var testEntity = new EntityReader <CustomerInfo>().GetById(resultEntity.Id);

            Assert.IsTrue(!testEntity.IsNew);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(testEntity.Id == resultEntity.Id);
            Assert.IsTrue(testEntity.Key == resultEntity.Key && resultEntity.Key == newCustomer.Key);

            StoredProcedureEntityTests.RecycleBin.Add(newCustomer.Key);
        }
コード例 #12
0
        public async Task Entity_CustomerInfo_Create()
        {
            var testEntity   = new CustomerInfo();
            var resultEntity = new CustomerInfo();
            var reader       = new EntityReader <CustomerInfo>();

            // Create should update original object, and pass back a fresh-from-db object
            testEntity.Fill(testEntities[Arithmetic.Random(1, 5)]);
            using (var writer = new StoredProcedureWriter <CustomerInfo>(testEntity, new CustomerSPConfig(testEntity)))
            {
                resultEntity = await writer.SaveAsync();
            }
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(resultEntity.Id != Defaults.Integer);
            Assert.IsTrue(resultEntity.Key != Defaults.Guid);

            // Object in db should match in-memory objects
            testEntity = reader.Read(x => x.Id == resultEntity.Id).FirstOrDefaultSafe();
            Assert.IsTrue(!testEntity.IsNew);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(testEntity.Id == resultEntity.Id);
            Assert.IsTrue(testEntity.Key == resultEntity.Key);

            CustomerEntityTests.RecycleBin.Add(testEntity.Key);
        }
コード例 #13
0
        public async Task <IActionResult> Post([FromBody] CustomerModel model)
        {
            var customer = model.CastOrFill <CustomerInfo>();

            using (var writer = new StoredProcedureWriter <CustomerInfo>(customer, new CustomerSPConfig(customer)))
            {
                customer = await writer.SaveAsync();
            }
            return(Ok(customer.CastOrFill <CustomerModel>()));
        }
コード例 #14
0
        /// <summary>
        /// Save the entity to the database. This method will auto-generate activity tracking.
        /// </summary>
        public CustomerInfo Save()
        {
            var writer = new StoredProcedureWriter <CustomerInfo>();

            // Ensure data does not contain cross site scripting injection HTML/Js/SQL
            FirstName  = new HtmlUnsafeCleanser(FirstName).Cleanse();
            MiddleName = new HtmlUnsafeCleanser(MiddleName).Cleanse();
            LastName   = new HtmlUnsafeCleanser(LastName).Cleanse();
            this.Fill(writer.Save(this));
            return(this);
        }
コード例 #15
0
        public async Task <IActionResult> Delete(string key)
        {
            var reader   = new EntityReader <CustomerInfo>();
            var customer = reader.GetByIdOrKey(key);

            using (var writer = new StoredProcedureWriter <CustomerInfo>(customer, new CustomerSPConfig(customer)))
            {
                customer = await writer.DeleteAsync();
            }

            return(Ok(customer.CastOrFill <CustomerModel>()));
        }
コード例 #16
0
        public async Task <ActionResult> Edit(CustomerModel model)
        {
            var customer = model.CastOrFill <CustomerInfo>();

            using (var writer = new StoredProcedureWriter <CustomerInfo>(customer, new CustomerSPConfig(customer)))
            {
                customer = await writer.SaveAsync();
            }
            if (!customer.IsNew)
            {
                TempData[ResultMessage] = "Successfully saved";
            }
            else
            {
                TempData[ResultMessage] = "Failed to save";
            }

            return(View(CustomerController.SummaryView, customer.CastOrFill <CustomerModel>()));
        }
コード例 #17
0
        public async Task <ActionResult> Delete(CustomerModel model)
        {
            var reader   = new EntityReader <CustomerInfo>();
            var customer = reader.GetByKey(model.Key);

            using (var writer = new StoredProcedureWriter <CustomerInfo>(customer, new CustomerSPConfig(customer)))
            {
                customer = await writer.DeleteAsync();
            }
            if (customer.IsNew)
            {
                TempData[ResultMessage] = "Successfully deleted";
            }
            else
            {
                TempData[ResultMessage] = "Failed to delete";
            }

            return(View(CustomerSearchController.SearchView, customer.CastOrFill <CustomerSearchModel>()));
        }
コード例 #18
0
        public async Task Entity_CustomerInfo_Update()
        {
            var resultEntity = new CustomerInfo();
            var testEntity   = new CustomerInfo();
            var uniqueValue  = Guid.NewGuid().ToString().Replace("-", "");
            var lastKey      = Defaults.Guid;
            var originalId   = Defaults.Integer;
            var originalKey  = Defaults.Guid;
            var reader       = new EntityReader <CustomerInfo>();

            await Entity_CustomerInfo_Create();

            lastKey = CustomerEntityTests.RecycleBin.Last();

            testEntity  = reader.Read(x => x.Key == lastKey).FirstOrDefaultSafe();
            originalId  = testEntity.Id;
            originalKey = testEntity.Key;
            Assert.IsTrue(!testEntity.IsNew);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);

            testEntity.FirstName = uniqueValue;
            using (var writer = new StoredProcedureWriter <CustomerInfo>(testEntity, new CustomerSPConfig(testEntity)))
            {
                resultEntity = await writer.SaveAsync();
            }
            Assert.IsTrue(!resultEntity.IsNew);
            Assert.IsTrue(resultEntity.Id != Defaults.Integer);
            Assert.IsTrue(resultEntity.Key != Defaults.Guid);
            Assert.IsTrue(testEntity.Id == resultEntity.Id && resultEntity.Id == originalId);
            Assert.IsTrue(testEntity.Key == resultEntity.Key && resultEntity.Key == originalKey);

            testEntity = reader.Read(x => x.Id == originalId).FirstOrDefaultSafe();
            Assert.IsTrue(!testEntity.IsNew);
            Assert.IsTrue(testEntity.Id == resultEntity.Id && resultEntity.Id == originalId);
            Assert.IsTrue(testEntity.Key == resultEntity.Key && resultEntity.Key == originalKey);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
        }
コード例 #19
0
        public async Task Entity_CustomerInfo_Create_Key()
        {
            var testEntity   = new CustomerInfo();
            var resultEntity = new CustomerInfo();
            var oldId        = Defaults.Integer;
            var oldKey       = Defaults.Guid;
            var newId        = Defaults.Integer;
            var newKey       = Defaults.Guid;

            // Create and insert record
            testEntity.Fill(testEntities[Arithmetic.Random(1, 5)]);
            testEntity.Id  = Defaults.Integer;
            testEntity.Key = Guid.NewGuid();
            oldId          = testEntity.Id;
            oldKey         = testEntity.Key;
            Assert.IsTrue(testEntity.IsNew);
            Assert.IsTrue(testEntity.Id == Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);

            // Do Insert and check passed entity and returned entity
            using (var writer = new StoredProcedureWriter <CustomerInfo>(testEntity, new CustomerSPConfig(testEntity)))
            {
                resultEntity = await writer.CreateAsync();
            }
            Assert.IsTrue(testEntity.Key != Defaults.Guid);
            Assert.IsTrue(resultEntity.Id != Defaults.Integer);
            Assert.IsTrue(resultEntity.Key != Defaults.Guid);

            // Pull from DB and retest
            testEntity = new EntityReader <CustomerInfo>().GetById(resultEntity.Id);
            Assert.IsTrue(!testEntity.IsNew);
            Assert.IsTrue(testEntity.Id != oldId);
            Assert.IsTrue(testEntity.Key == oldKey);
            Assert.IsTrue(testEntity.Id != Defaults.Integer);
            Assert.IsTrue(testEntity.Key != Defaults.Guid);

            // Cleanup
            RecycleBin.Add(testEntity.Key);
        }
コード例 #20
0
        public void Entity_StoredProcedureEntity_Update()
        {
            var writer         = new StoredProcedureWriter <CustomerInfo>();
            var reader         = new EntityReader <CustomerInfo>();
            var resultCustomer = new CustomerInfo();
            var dbCustomer     = new CustomerInfo();
            var uniqueValue    = Guid.NewGuid().ToString().Replace("-", "");
            var lastKey        = TypeExtension.DefaultGuid;
            var originalId     = TypeExtension.DefaultInteger;
            var originalKey    = TypeExtension.DefaultGuid;

            Entity_StoredProcedureEntity_Create();
            lastKey = StoredProcedureEntityTests.RecycleBin.Last();

            dbCustomer  = reader.GetByKey(lastKey);
            originalId  = dbCustomer.Id;
            originalKey = dbCustomer.Key;
            Assert.IsTrue(!dbCustomer.IsNew);
            Assert.IsTrue(dbCustomer.Id != TypeExtension.DefaultInteger);
            Assert.IsTrue(dbCustomer.Key != TypeExtension.DefaultGuid);

            dbCustomer.FirstName = uniqueValue;
            resultCustomer       = writer.Update(dbCustomer);
            Assert.IsTrue(!resultCustomer.IsNew);
            Assert.IsTrue(resultCustomer.Id != TypeExtension.DefaultInteger);
            Assert.IsTrue(resultCustomer.Key != TypeExtension.DefaultGuid);
            Assert.IsTrue(dbCustomer.Id == resultCustomer.Id && resultCustomer.Id == originalId);
            Assert.IsTrue(dbCustomer.Key == resultCustomer.Key && resultCustomer.Key == originalKey);

            dbCustomer = dbCustomer = reader.GetById(originalId);
            Assert.IsTrue(!dbCustomer.IsNew);
            Assert.IsTrue(dbCustomer.Id == resultCustomer.Id && resultCustomer.Id == originalId);
            Assert.IsTrue(dbCustomer.Key == resultCustomer.Key && resultCustomer.Key == originalKey);
            Assert.IsTrue(dbCustomer.Id != TypeExtension.DefaultInteger);
            Assert.IsTrue(dbCustomer.Key != TypeExtension.DefaultGuid);
        }