@isTest
private class SpecialPriceControllerTest {
    static Account myAccount2;          //经销商
    static Account contract;            //经销商合同
    static Product2__c pro1;            //产品检索1
    static Product2__c pro2;            //产品检索2
    static Product2__c pro3;            //产品检索3
    static Product2__c pro4;            //产品检索4
    static Product2__c pro5;            //产品检索5
    static Dealer_Product__c dp1;       //经销商产品1
    static Dealer_Product__c dp2;       //经销商产品2

    static void initData(){
        List<RecordType> rectCo = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '販売店'];
        if (rectCo.size() == 0) {
            return;
        }
        myAccount2 = new Account(Name='Testaccount002',Dealer_discount__c =20,RecordTypeId = rectCo[0].Id,Product_Limit_Date__c = 'Test01|2|4,Test02|3|5');
        insert myAccount2;

        List<RecordType> rectCo1 = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and Name = '契約'];
        if (rectCo1.size() == 0) {
            return;
        }
        contract = new Account(Name ='contractName',ParentId = myAccount2.id,Agent_Ref__c =myAccount2.id, Contract_Department_Class__c = 'ET',ET_SP_Dealer__c = true,Contract_Decide_Start_Date__c=Date.today().addDays(-2),
        Contract_Decide_End_Date__c = Date.today().addDays(2),Dealer_discount__c = 0.8,RecordTypeId = rectCo1[0].Id);
        insert contract;
        Product2 prod01 = new Product2(Name='Test01',
                            ProductCode='Test01',
                            Asset_Model_No__c = 'Test01',
                            SFDA_Status__c = '有効',
                            Product_Status__c = '正常销售',
                            SFDA_Approbated_Status__c = '有效',
                            Category3__c = 'CDS',
                            Category4__c = 'OER',
                            Category5__c = '其它',
                            Dealer_special_Object__c = true,
                            SFDA_Approbation_No__c = 'Test001',
                            Packing_list_manual__c = 1,
                            SFDA_Expiration_Date__c= Date.today(),
                            Intra_Trade_List_RMB_1__c = 1000,
                            Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
                            Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
                            Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
                            ENG_DeaerProFlag__c = true 
                            );

        Product2 prod02 = new Product2(Name='Test02',
                            ProductCode='Test02',
                            Asset_Model_No__c = 'Test02',
                            SFDA_Status__c = '有効',
                            Product_Status__c = '正常销售',
                            SFDA_Approbated_Status__c = '有效',
                            Category3__c = 'ENT',
                            Category4__c = 'Celon',
                            Category5__c = 'Celon',
                            Dealer_special_Object__c = true,
                            SFDA_Approbation_No__c = 'Test002',
                            Packing_list_manual__c = 1,
                            SFDA_Expiration_Date__c= Date.today(),
                            Intra_Trade_List_RMB_1__c = 1000,
                            Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
                            Intra_Trade_List_RMB_Date2__c = Date.today().addDays(-1),
                            Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
                            ENG_DeaerProFlag__c = true 

                            );

        Product2 prod03 = new Product2(Name='Test03',
                            ProductCode='Test03',
                            Asset_Model_No__c = 'Test03',
                            SFDA_Status__c = '有効',
                            Dealer_special_Object__c = true,
                            Product_Status__c = '正常销售',
                            SFDA_Approbated_Status__c = '有效',
                            Category3__c = 'US',
                            Category4__c = 'ALOKA',
                            Category5__c = '体外超声',
                            Intra_Trade_List_RMB_1__c = 1000,
                            Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
                            Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
                            ENG_DeaerProFlag__c = true 
                            );

        Product2 prod04 = new Product2(Name='Test04',
            ProductCode='Test04',Asset_Model_No__c = 'Test04',
                            SFDA_Status__c = '有効',
                            Dealer_special_Object__c = true,
                            Product_Status__c = '正常销售',
                            SFDA_Approbated_Status__c = '有效',
                            Category3__c = 'OCS',
                            Category4__c = '附属品',
                            Category5__c = 'OCS',
                            Intra_Trade_List_RMB_1__c = 1000,
                            Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
                            Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
                            ENG_DeaerProFlag__c = true 
                            );
        Product2 prod05 = new Product2(Name='Test05',
                            ProductCode='Test05',
                            Asset_Model_No__c = 'Test05',
                            SFDA_Status__c = '有効',
                            Dealer_special_Object__c = true,
                            Product_Status__c = '正常销售',
                            SFDA_Approbated_Status__c = '有效',
                            Category3__c = '光源',
                            Category4__c = 'CLV',
                            Category5__c = 'S45',
                            Intra_Trade_List_RMB_1__c = 1000,
                            Intra_Trade_List_RMB_Date1__c = Date.today().addDays(-1),
                            Intra_Trade_List_RMB_End_Date1__c = Date.today().addDays(1),
                            ENG_DeaerProFlag__c = true 
                            );
        insert new Product2[] {prod01,prod02,prod03, prod04, prod05};
        pro1 = new Product2__c(Name='Pro001',OT_CODE_Text__c='Test001',Product2__c = prod01.Id);
        pro2 = new Product2__c(Name='Pro002',OT_CODE_Text__c='Test002',Product2__c = prod02.Id);
        pro3 = new Product2__c(Name='Pro003',OT_CODE_Text__c='Test003',Product2__c = prod03.Id);
        pro4 = new Product2__c(Name='Pro004',OT_CODE_Text__c='Test004',Product2__c = prod04.Id);
        pro5 = new Product2__c(Name='Pro005',OT_CODE_Text__c='Test005',Product2__c = prod05.Id);
        insert new Product2__c[] {pro1,pro2,pro3,pro4, pro5};

        dp1 = new Dealer_Product__c();
        dp1.Dealer_Product2__c = pro1.Id;
        dp1.Dealer_Contact__c = contract.Id;
        dp1.Special_Discount__c =60;

        dp2 = new Dealer_Product__c();
        dp2.Dealer_Product2__c = pro2.Id;
        dp2.Dealer_Contact__c = contract.Id;
        dp2.Special_Campaign_Price__c = 200;
        insert new Dealer_Product__c[] {dp1,dp2};

    }

    @isTest
    static void init_test()
    {
        initData();

        PageReference page = new PageReference('/apex/SpecialPrice?userid='+contract.id);
        System.Test.setCurrentPage(page);
        SpecialPriceController conTest = new SpecialPriceController();
        conTest.init();
        conTest.keyword = 'Test';
        conTest.searchProduct();
        // conTest.category1 = 'GI';
        // conTest.category2 = '耗材';
        // conTest.category3 = '其他';
        // conTest.category4 = '其他';
        // conTest.category5 = '其他';
        conTest.SpecialDiscount='50';
        conTest.geCategory();
        conTest.showcategory2();
        conTest.showcategory3();
        conTest.showcategory4();
        conTest.showcategory5();
        conTest.searchProduct();
        // conTest.productInfoListview.sort();
        conTest.productInfoListview[0].check = true;
        conTest.productInfoListview[0].dealerPro.Special_discount__c=120;    
        conTest.searchProduct();
        conTest.save();
        conTest.productInfoListview[0].check = true;
        conTest.productInfoListview[0].dealerPro.Special_discount__c=80; 
        conTest.refreshPageSize();   
        conTest.save();
        conTest.productInfoListview[0].check = true;
        conTest.productInfoListview[0].dealerPro.Special_discount__c=0;    
        conTest.save();
        conTest.productInfoListview[0].check = false;
        conTest.productInfoListview[0].dealerPro.Special_discount__c=null;    
        conTest.save();
        conTest.refreshPageSize();

         //创建一个特价产品申请
        DiscountProductApplication__c dpc = new DiscountProductApplication__c();
        Id ProductTypeId = [select Id from RecordType where IsActive = true and DeveloperName = 'ProductDiscount'].Id;
        dpc.RecordTypeId = ProductTypeId;
        dpc.Dealer_Contact__c = contract.Id;
        dpc.ApplicationStatus__c = '草案中';
        dpc.RecordTypeId = ProductTypeId;
        insert dpc;
        DiscountProductApplicationDetail__c dpadc1 = new DiscountProductApplicationDetail__c();
        dpadc1.DiscountProductApplication__c = dpc.Id;                        
        dpadc1.ProductDiscount__c = 12345;
        dpadc1.Product2__c = pro1.Id;
        DiscountProductApplicationDetail__c dpadc2 = new DiscountProductApplicationDetail__c();
        dpadc2.DiscountProductApplication__c = dpc.Id;                        
        dpadc2.ProductDiscount__c = 8888;
        dpadc2.Product2__c = pro2.Id;
        insert new DiscountProductApplicationDetail__c[] {dpadc1,dpadc2};

        page = new PageReference('/apex/SpecialPrice?id='+dpc.Id+'&userid='+contract.id);
        System.Test.setCurrentPage(page);
        conTest = new SpecialPriceController();
        conTest.init();
    }


    @isTest
    static void selectfill()
    {
        initData();
        PageReference page = new PageReference('/apex/SpecialPrice?userid='+contract.id);
        System.Test.setCurrentPage(page);
        SpecialPriceController conTest = new SpecialPriceController();
        conTest.init();
        conTest.keyword = 'Test01';
        conTest.searchProduct();
        conTest.pagecount=10;
        conTest.currentpage=1;
        conTest.moveToNext();
        conTest.currentpage=2;
        conTest.moveToPrevious();
        conTest.moveToLast();
        conTest.category1 = 'GI';
        conTest.category2 = '耗材';
        conTest.category3 = '其他';
        conTest.category4 = '其他';
        conTest.category5 = '其他';
        conTest.showcategory2();
        conTest.refreshPageSize();
        conTest.searchAllProduct();
    }
}