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); }
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); }
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); }
/// <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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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>())); }
/// <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); }
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>())); }
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>())); }
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>())); }
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); }
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); }
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); }