Last active
August 29, 2015 14:18
-
-
Save PlatinumItguru/f6beeccff91180b5bc9a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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