@isTest
private class QuotesPDFControllerTest {
    
    @TestSetup
    static void setup(){
        TestDataUtility.CreatePIPolicyConfigurations(new string[]{'Quotes__c','Contact'});
    }
    
    static testMethod void testMethod1() {

    	List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE'];
        List<RecordType> rectOpp = [select Id from RecordType where IsActive = true and SobjectType = 'Opportunity' and Name = 'SSBD'];
        Id pricebookId = Test.getStandardPricebookId();
        
        Pricebook2 pricebook = new Pricebook2(
            Name = 'IE',
            ProductSegment__c = 'IE',
            TradeType__c = 'Taxation',
            SalesChannel__c = 'direct',
            MachineParts__c = 'Machine',
            CurrencyIsoCode = 'CNY'
        );
        insert pricebook;
        
        Product2 product1 = new Product2();
        product1.Name = 'DESCRIPTION';
        product1.IsActive = true;
        product1.ProductCode = 'DESCRIPTION';
        product1.Product_ECCode__c = 'test01';
        product1.ProductStatus__c = '1';
        product1.NMPAStatus_one__c = 'Z1';
        product1.MaterialStatus_one_Start__c = Date.today().addDays(-22);
        product1.MaterialStatus_one_End__c = Date.today().addDays(22);

        insert product1;

        Product2 product2 = new Product2();
        product2.Name = 'Payment Info';
        product2.IsActive = true;
        product2.ProductCode = 'Payment Info';
        product2.Product_ECCode__c = 'Test01；Test02';
        product2.ProductStatus__c = '1';
        product2.NMPAStatus_one__c = 'Z1';
        product2.MaterialStatus_one_Start__c = Date.today().addDays(-22);
        product2.MaterialStatus_one_End__c = Date.today().addDays(22);
        product2.Description = 'Test01；Test02';

        insert product2;

        Product2 product3 = new Product2();
        product3.Name = 'Service Quote Subtotal';
        product3.IsActive = true;
        product3.ProductCode = 'Service Quote Subtotal';
        product3.Product_ECCode__c = 'Test01；Test02;test03';
        product3.ProductStatus__c = '1';
        product3.NMPAStatus_one__c = 'Z1';
        product3.MaterialStatus_one_Start__c = Date.today().addDays(-22);
        product3.MaterialStatus_one_End__c = Date.today().addDays(22);

        insert product3;

        SWO__c swo = new SWO__c();
        swo.Name = 'Test';
        swo.QUANTITY__c = 22;
        // swo.ITEM__c = product1.Id;
        swo.ESTIMATED_LABOUR_HOURS__c = 22;
        swo.LABOUR_RATE__c = 22;
        insert swo;

        Quotes__c quotes = new Quotes__c();
        quotes.SWO__c = swo.Id;
        quotes.QuotesType__c = '零件报价单';
        quotes.DATE__c = Date.today();
        quotes.LEAD_TIME__c = '1 week';
        quotes.STATUS__c = 'Qualifying';
        quotes.LOCATION__c = 'China - Service';
        quotes.TERMS__c = '1% 10 Net 30';
        quotes.EXPIRES__c = Date.today();
        quotes.EXP_CLOSE__c = Date.today();
        quotes.ORDER_TYPE__c = 'LS Core Clinical';

        insert quotes;
        //DESCRIPTION__c,PART_NUMBERNew__c,
        Quotes_item__c quotesItem =  new Quotes_item__c();
        quotesItem.QUOTE__c =  quotes.Id;
        quotesItem.QuotesItemProduct__c = product1.Id;
        quotesItem.DESCRIPTION__c = 'Test01；Test02';
        quotesItem.QUANTITY__c = 22;
        quotesItem.AMOUNT__c = 22;
        quotesItem.RATE__c = 222;
        insert quotesItem;

        Quotes_item__c quotesItem1 =  new Quotes_item__c();
        quotesItem1.QUOTE__c =  quotes.Id;
        quotesItem1.QuotesItemProduct__c = product2.Id;
        quotesItem1.DESCRIPTION__c = 'Test01；Test02';
        quotesItem1.QUANTITY__c = 22;
        quotesItem1.AMOUNT__c = 22;
        quotesItem1.RATE__c = 222;
        insert quotesItem1;

        Quotes_item__c quotesItem2 =  new Quotes_item__c();
        quotesItem2.QUOTE__c =  quotes.Id;
        quotesItem2.QuotesItemProduct__c = product3.Id;
        quotesItem1.DESCRIPTION__c = 'Test01；Test02';
        quotesItem2.QUANTITY__c = 22;
        quotesItem2.AMOUNT__c = 22;
        quotesItem2.RATE__c = 222;
        insert quotesItem2;

        PageReference page = new PageReference('/apex/QuotesPDF?id='+quotes.Id);
        System.Test.setCurrentPage(page);
        QuotesPDFController controller = new QuotesPDFController();
        controller.init();
    }
    static testMethod void testMethod2() {

    	List<RecordType> rectIE = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = 'Customer IE'];
        List<RecordType> rectOpp = [select Id from RecordType where IsActive = true and SobjectType = 'Opportunity' and Name = 'SSBD'];
        Id pricebookId = Test.getStandardPricebookId();
        
        Pricebook2 pricebook = new Pricebook2(
            Name = 'IE',
            ProductSegment__c = 'IE',
            TradeType__c = 'Taxation',
            SalesChannel__c = 'direct',
            MachineParts__c = 'Machine',
            CurrencyIsoCode = 'CNY'
        );
        insert pricebook;
        
        Product2 product1 = new Product2();
        product1.Name = 'DESCRIPTION';
        product1.IsActive = true;
        product1.ProductCode = 'DESCRIPTION';
        product1.ProductStatus__c = '1';
        product1.NMPAStatus_one__c = 'Z1';
        product1.MaterialStatus_one_Start__c = Date.today().addDays(-22);
        product1.MaterialStatus_one_End__c = Date.today().addDays(22);

        insert product1;

        Product2 product2 = new Product2();
        product2.Name = 'Payment Info';
        product2.IsActive = true;
        product2.ProductCode = 'Payment Info';
        product2.ProductStatus__c = '1';
        product2.NMPAStatus_one__c = 'Z1';
        product2.MaterialStatus_one_Start__c = Date.today().addDays(-22);
        product2.MaterialStatus_one_End__c = Date.today().addDays(22);
        product2.Description = 'Test01；Test02';

        insert product2;

        Product2 product3 = new Product2();
        product3.Name = 'Service Quote Subtotal';
        product3.IsActive = true;
        product3.ProductCode = 'Service Quote Subtotal';
        product3.ProductStatus__c = '1';
        product3.NMPAStatus_one__c = 'Z1';
        product3.MaterialStatus_one_Start__c = Date.today().addDays(-22);
        product3.MaterialStatus_one_End__c = Date.today().addDays(22);

        insert product3;

        SWO__c swo = new SWO__c();
        swo.Name = 'Test';
        swo.QUANTITY__c = 22;
        // swo.ITEM__c = product1.Id;
        swo.ESTIMATED_LABOUR_HOURS__c = 22;
        swo.LABOUR_RATE__c = 22;
        insert swo;

        Quotes__c quotes = new Quotes__c();
        quotes.SWO__c = swo.Id;
        quotes.QuotesType__c = '零件报价单';
        quotes.DATE__c = Date.today();
        quotes.LEAD_TIME__c = '1 week';
        quotes.STATUS__c = 'Qualifying';
        quotes.LOCATION__c = 'China - Service';
        quotes.TERMS__c = '1% 10 Net 30';
        quotes.EXPIRES__c = Date.today();
        quotes.EXP_CLOSE__c = Date.today();
        quotes.ORDER_TYPE__c = 'LS Core Clinical';

        insert quotes;

        Quotes_item__c quotesItem =  new Quotes_item__c();
        quotesItem.QUOTE__c =  quotes.Id;
        quotesItem.QuotesItemProduct__c = product1.Id;
        quotesItem.QUANTITY__c = 22;
        quotesItem.AMOUNT__c = 22;
        quotesItem.RATE__c = 222;
        insert quotesItem;

        Quotes_item__c quotesItem1 =  new Quotes_item__c();
        quotesItem1.QUOTE__c =  quotes.Id;
        quotesItem1.QuotesItemProduct__c = product2.Id;
        quotesItem1.DESCRIPTION__c = 'Test01；Test02';
        quotesItem1.QUANTITY__c = 22;
        quotesItem1.AMOUNT__c = 22;
        quotesItem1.RATE__c = 222;
        insert quotesItem1;

        Quotes_item__c quotesItem2 =  new Quotes_item__c();
        quotesItem2.QUOTE__c =  quotes.Id;
        quotesItem2.QuotesItemProduct__c = product3.Id;
        quotesItem2.QUANTITY__c = 22;
        quotesItem2.AMOUNT__c = 22;
        quotesItem2.RATE__c = 222;
        insert quotesItem2;

        for(Integer i = 0 ; i<50 ; i++){
        	quotesItem2.id = null;
        	insert quotesItem2;
        }

        PageReference page = new PageReference('/apex/QuotesPDF?id='+quotes.Id);
        System.Test.setCurrentPage(page);
        QuotesPDFController controller = new QuotesPDFController();
        controller.init();
    }
}