Monday, 24 July 2017

Generate Test data with @testsetup for Quotes and QuoteLineItems with Pricebooks in Salesforce test classes

Below is the testsetup method

 @testsetup
    static void testdata(){
        Account a=new Account();
        a.name='test acc';
        insert a;
        Opportunity opp=new Opportunity();
        opp.name='test opp';
        opp.AccountId=a.id;
        opp.StageName='Prospect';
        opp.CloseDate=System.today()+28;
        insert opp;
        Quote q=new Quote();
        q.name='test';
        q.OpportunityId=opp.Id;
        q.Pricebook2Id=Test.getStandardPricebookId();
        insert q;
        Product2 p=new Product2();
        p.name='test';
        insert p;
        PricebookEntry pbe=new PricebookEntry();
        pbe.Pricebook2Id=Test.getStandardPricebookId();
        pbe.UnitPrice =5.0;
        pbe.product2Id=p.Id;
        pbe.IsActive=true;
        insert pbe;
        QuoteLineItem qli=new QuoteLineItem();
        qli.PricebookEntryId=pbe.Id;
        qli.Product2Id=p.Id;
        qli.QuoteId=q.Id;
        qli.Quantity=5.0;
        qli.UnitPrice=2.0;      
        insert qli;
    }


//Create test user in test class
@isTest
public class DeleteManualAccountShareBatch_Test {
    @isTest
    static void test1(){
        Profile p = [SELECT Id FROM Profile WHERE Name='Standard User' LIMIT 1];
        User u = new User(Alias = 'standt', Email='standarduser@testorg.com',
                          EmailEncodingKey='UTF-8', LastName='Testing2', LanguageLocaleKey='en_US',
                          LocaleSidKey='en_US', ProfileId = p.Id,
                          TimeZoneSidKey='America/Los_Angeles', UserName='tstcx@testorg.com');
        insert u;
        Account acc=new Account();
        acc.name='test';
        acc.Group_Type__c='Small';
        insert acc;
        accountshare ashare=new accountshare();
        ashare.AccountId=acc.Id;
        ashare.RowCause='Manual';
        ashare.UserOrGroupId=u.Id;
        ashare.AccountAccessLevel='Read';
        ashare.OpportunityAccessLevel='Read';
        insert ashare;      
        DeleteManualAccountShareBatch batchable=new DeleteManualAccountShareBatch();
        Database.executeBatch(batchable);
        batchable.execute(null);
        System.assertEquals(1, [SELECT Id FROM Account].size());
    }
}

No comments:

Post a Comment