Skip to content

Instantly share code, notes, and snippets.

@PlatinumItguru
Last active August 29, 2015 14:18
Show Gist options
  • Save PlatinumItguru/f6beeccff91180b5bc9a to your computer and use it in GitHub Desktop.
Save PlatinumItguru/f6beeccff91180b5bc9a to your computer and use it in GitHub Desktop.
@isTest
private class TestDeleteRestrictInvoice {
// Invoice generator, with or without a Line Item
static Invoice__c createNewInvoice(Boolean withLineItem) {
// Create test Invoice and insert it into the database
Invoice__c invoice = new Invoice__c();
insert invoice;
// The following is needed if you are following the tutorial
// Since you can't have an Invoice withou a merchandise
Merchandise__c test_merchandise = new Merchandise__c(
Name='Tablet',
Price__c = 20,
Quantity__c = 3
);
// Must insert it, so we can use it's Id on line 26 ( --> Merchandise__c = test_merchandise.Id ).
insert test_merchandise;
// Create test Line Item and insert it into the database, if withLineItem == true
if (withLineItem) {
Line_Item__c item = new Line_Item__c(
name = '1',
Quantity__c = 1,
Invoice__c = invoice.Id,
Merchandise__c = test_merchandise.Id
);
insert item;
}
return invoice;
}
// Single row Invoice with no Line Items => delete
static testMethod void verifyInvoiceNoLineItemsDelete(){
// Create test Invoice and insert it
Invoice__c invoice = createNewInvoice(false);
// Delete the Invoice, capture the result
Database.DeleteResult result = Database.delete(invoice, false);
// Assert success, because target Invoice doesn't have Line Items
System.assert(result.isSuccess());
}
// Single row Invoice with Line Items => delete restrict
static testMethod void verifyInvoiceLineItemsRestrict(){
// Create test Invoice and Line Item and insert them
Invoice__c invoice = createNewInvoice(true);
// Delete the Invoice, capture the result
Database.DeleteResult result = Database.delete(invoice, false);
// Assert failure-not success, because target Invoice has tracks
System.assert(!result.isSuccess());
}
// Bulk delete of Invoice, one without Line Items, another with
static testMethod void verifyBulkInvoiceDeleteRestrict(){
// Create two test Invoices, one with and without a Line Item
Invoice__c[] invoices = new List<Invoice__c>();
invoices.add(createNewInvoice(false));
invoices.add(createNewInvoice(true));
// Delete the Invoices, opt_allOrNone = false, capture the results.
Database.DeleteResult[] results = Database.delete(invoices, false);
// Assert success for first Invoice
System.assert(results[0].isSuccess());
// Assert not success for second Invoice
System.assert(!results[1].isSuccess());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment