@isTest
private class AgencyCampaignControllerTest
{
	static Account keiyaku1;
    static Account keiyaku2;
    static Account keiyaku3;
    static Account keiyaku4;
    static Account sellerA;
    static Product2__c pro1;
    static Product2__c pro2;
    static Product2__c pro3;
	static final String RC_HANBAOITEN = '販売店';
	static final String RC_KEIYAKU = '契約';
	static void initAcData() {
        Product2 prod01 = new Product2(Name='Test01');
        prod01.ProductCode='Test01';
        prod01.Asset_Model_No__c = 'Test01';
        prod01.SFDA_Status__c = '有効';
        prod01.Dealer_special_Object__c = true;
        prod01.Family = 'GI';
        prod01.Category2__c = '耗材';
        prod01.Category3__c = '其他';
        prod01.Category4__c = '其他';
        prod01.Category5__c = '其他';
        Product2 prod02 = new Product2(Name='Test02');
        prod02.ProductCode='Test02';
        prod02.Asset_Model_No__c = 'Test02';
        prod02.SFDA_Status__c = '有効';
        prod02.Dealer_special_Object__c = true;
        prod02.Family = 'GI';
        prod02.Category2__c = '本体';
        prod02.Category3__c = '其他';
        prod02.Category4__c = '其他';
        prod02.Category5__c = '其他';
        Product2 prod03 = new Product2(Name='Test03');
        prod03.ProductCode='Test03';
        prod03.Asset_Model_No__c = 'Test03';
        prod03.SFDA_Status__c = '有効';
        prod03.Dealer_special_Object__c = true;
        prod03.Family = 'SP';
        prod03.Category2__c = '附属品';
        prod03.Category3__c = '其他';
        prod03.Category4__c = '其他';
        prod03.Category5__c = '其他';
        insert new Product2[]{prod01,prod02,prod03};
        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);
        insert new Product2__c[] {pro1, pro2,pro3};
        //販売店
        RecordType recHanbaiten = [select id from RecordType where IsActive = true and SobjectType= 'Account' and Name=:RC_HANBAOITEN limit 1];
        sellerA = new Account(Name = '販売店');
        sellerA.RecordTypeId = recHanbaiten.id;
        sellerA.Delete_Flag__c = false;
        sellerA.Contract_Department_Class__c = 'ET';
        sellerA.Contract_Decide_Start_Date__c= Date.today();
        sellerA.Contract_Decide_End_Date__c= Date.today().addDays(1);
        insert sellerA;
        //契約
        RecordType recKeiyaku = [select id from RecordType where IsActive = true and SobjectType= 'Account' and Name=:RC_KEIYAKU limit 1];
        keiyaku1 = new Account(Name = '*');
        keiyaku1.RecordTypeId = recKeiyaku.id;
        keiyaku1.Agent_Ref__c = sellerA.id;
        keiyaku1.ParentId = sellerA.id;
        keiyaku1.Delete_Flag__c = false;
        keiyaku1.Contract_Department_Class__c = 'ET';
        keiyaku1.Contract_Decide_Start_Date__c = Date.today().addDays(-1);
        keiyaku1.Contract_Decide_End_Date__c = Date.today().addDays(1);
        insert keiyaku1;
        keiyaku2 = new Account(Name = '*');
        keiyaku2.RecordTypeId = recKeiyaku.id;
        keiyaku2.Agent_Ref__c = sellerA.id;
        keiyaku2.ParentId = sellerA.id;
        keiyaku2.Delete_Flag__c = false;
        keiyaku2.Contract_Department_Class__c = 'ET';
        keiyaku2.Contract_Decide_Start_Date__c = Date.today().addDays(-1);
        keiyaku2.Contract_Decide_End_Date__c = Date.today().addDays(1);
        insert keiyaku2;
        keiyaku3 = new Account(Name = '*');
        keiyaku3.RecordTypeId = recKeiyaku.id;
        keiyaku3.Agent_Ref__c = sellerA.id;
        keiyaku3.ParentId = sellerA.id;
        keiyaku3.Delete_Flag__c = false;
        keiyaku3.Contract_Department_Class__c = 'ET';
        keiyaku3.Contract_Decide_Start_Date__c = Date.today().addDays(-1);
        keiyaku3.Contract_Decide_End_Date__c = Date.today().addDays(1);
        insert keiyaku3;
        keiyaku4 = new Account(Name = '*');
        keiyaku4.RecordTypeId = recKeiyaku.id;
        keiyaku4.Agent_Ref__c = sellerA.id;
        keiyaku4.ParentId = sellerA.id;
        keiyaku4.Delete_Flag__c = false;
        keiyaku4.Contract_Department_Class__c = 'ET';
        keiyaku4.Contract_Decide_Start_Date__c = Date.today().addDays(-1);
        keiyaku4.Contract_Decide_End_Date__c = Date.today().addDays(1);
        insert keiyaku4;
        //keiyaku = [select Id from Account where Id = :keiyaku.Id];
        


    }

	@isTest
	static void init_test()
	{
		initAcData();
		PageReference page = new PageReference('/apex/AgencyCampaign');
        System.Test.setCurrentPage(page);
        AgencyCampaignController conTest = new AgencyCampaignController();
        conTest.init();
  
        System.assertEquals(3, conTest.productInfoListview.size());
        conTest.keyword = 'Test01';
        conTest.searchHospital();
        System.assertEquals(1, conTest.productInfoListview.size());
        conTest.category1 = 'GI';
	    conTest.category2 = '耗材';
	    conTest.category3 = '其他';
	    conTest.category4 = '其他';
	    conTest.category5 = '其他';
	    conTest.searchHospital();
	    System.assertEquals(1, conTest.productInfoListview.size());

        conTest.dpc.Agent_Ref__c = null;
        conTest.productInfoListview[0].check=true;
        conTest.productInfoListview[0].dealerPro.Special_Campaign_Price__c = 200;
        conTest.productInfoListview[0].dealerPro.Campaign_StartDate__c = null;
        conTest.productInfoListview[0].dealerPro.Campaign_EndDate__c = Date.today().addDays(1);
        conTest.save();

         Account acc = [select Id from Account limit 1];
        conTest.dpc.Agent_Ref__c = acc.id;
        conTest.accContact=null;
        conTest.productInfoListview[0].check=true;
        conTest.productInfoListview[0].dealerPro.Special_Campaign_Price__c = 200;
        conTest.productInfoListview[0].dealerPro.Campaign_StartDate__c = null;
        conTest.productInfoListview[0].dealerPro.Campaign_EndDate__c = Date.today().addDays(1);
        conTest.save();

        conTest.keyword = 'Test01';
        conTest.searchHospital();
        conTest.productInfoListview[0].check=true;
        conTest.productInfoListview[0].pro.Id = null;
	    conTest.productInfoListview[0].dealerPro.Special_Campaign_Price__c = 200;
	    conTest.productInfoListview[0].dealerPro.Campaign_StartDate__c = Date.today().addDays(-1);
	    conTest.productInfoListview[0].dealerPro.Campaign_EndDate__c = Date.today().addDays(1);
	    conTest.save();
        conTest.dpc.Agent_Ref__c = sellerA.id;
        //conTest.showParentManagementCode();
        conTest.refreshPageSize();
		//System.assertEquals(1, dPList.size());
	}

	@isTest
	static void selectfill()
	{
		initAcData();
        //促销
        Consumable_Promotion__c cpn = new Consumable_Promotion__c();
        cpn.CurrencyIsoCode = 'CNY';
        insert cpn;

        Dealer_Product__c dp1 = new Dealer_Product__c();
        dp1.Dealer_Product2__c = pro1.Id;
        dp1.Dealer_Contact__c = keiyaku1.Id;
        dp1.Special_Discount__c =60;
        dp1.Special_Campaign_Price__c = 200;
        dp1.Campaign_StartDate__c = Date.today().addDays(-1);
        dp1.Campaign_EndDate__c = Date.today().addDays(1);
        dp1.Promotion_No__c = cpn.id;

        Dealer_Product__c dp2 = new Dealer_Product__c();
        dp2.Dealer_Product2__c = pro2.Id;
        dp2.Dealer_Contact__c = keiyaku2.Id;
        dp2.Special_Campaign_Price__c = 200;
        dp2.Campaign_StartDate__c = Date.today().addDays(-1);
        dp2.Campaign_EndDate__c = Date.today().addDays(1);
        dp2.Promotion_No__c = cpn.id;

        Dealer_Product__c dp3 = new Dealer_Product__c();
        dp3.Dealer_Product2__c = pro3.Id;
        dp3.Dealer_Contact__c = keiyaku3.Id;
        dp3.Special_Campaign_Price__c = 200;
        dp3.Campaign_StartDate__c = Date.today().addDays(-1);
        dp3.Campaign_EndDate__c = Date.today().addDays(1);
        dp3.Promotion_No__c = cpn.id;

        Dealer_Product__c dp4 = new Dealer_Product__c();
        dp4.Dealer_Product2__c = pro3.Id;
        dp4.Dealer_Contact__c = keiyaku1.Id;
        dp4.Special_Campaign_Price__c = 200;
        dp4.Campaign_StartDate__c = Date.today().addDays(1);
        dp4.Campaign_EndDate__c = Date.today().addDays(-1);
        dp4.Promotion_No__c = cpn.id;

        dp4 = new Dealer_Product__c();
        dp4.Dealer_Product2__c = pro2.Id;
        dp4.Dealer_Contact__c = keiyaku2.Id;
        dp4.Special_Campaign_Price__c = 200;
        dp4.Campaign_StartDate__c = Date.today().addDays(1);
        dp4.Campaign_EndDate__c = null;
        dp4.Promotion_No__c = cpn.id;

        insert new Dealer_Product__c[] {dp1, dp2,dp3,dp4};

		PageReference page = new PageReference('/apex/AgencyCampaign?id='+cpn.id);
        System.Test.setCurrentPage(page);
        AgencyCampaignController conTest = new AgencyCampaignController();
        
        conTest.init();
        System.assertEquals(5, conTest.lineInfoList.size());
        conTest.lineNo = 2;
        conTest.pagesize = 2;
        System.assertEquals(3, conTest.productInfoListview.size());
        conTest.keyword = 'Test01';
        conTest.searchHospital();
        //System.assertEquals(1, conTest.productInfoListview.size());
        conTest.category1 = 'GI';
	    conTest.category2 = '耗材';
	    conTest.category3 = '其他';
	    conTest.category4 = '其他';
	    conTest.category5 = '其他';
	    conTest.showcategory2();
        conTest.searchHospital();
        System.assertEquals(1, conTest.productInfoListview.size());
        conTest.showcategory3();
        conTest.searchHospital();
        System.assertEquals(1, conTest.productInfoListview.size());
        conTest.showcategory4();
        conTest.searchHospital();
        System.assertEquals(1, conTest.productInfoListview.size());
        conTest.showcategory5();
        conTest.searchHospital();
        System.assertEquals(1, conTest.productInfoListview.size());
        conTest.category1 = '';
        conTest.category2 = '';
        conTest.category3 = '';
        conTest.category4 = '';
        conTest.category5 = '';
        conTest.keyword = 'Test';
        conTest.searchHospital();
        //conTest.setCon.next();
        conTest.refreshPageSize();
        //conTest.showParentManagementCode();

        conTest.accContact = keiyaku3.id;
        //conTest.makepagerecords();
        System.assertEquals(2, conTest.productInfoListview.size());
        conTest.productInfoListview.sort();

        conTest.accContact=null;
        conTest.productInfoListview[0].check=true;
        conTest.productInfoListview[0].dealerPro.Special_Campaign_Price__c = 200;
        conTest.productInfoListview[0].dealerPro.Campaign_StartDate__c = null;
        conTest.productInfoListview[0].dealerPro.Campaign_EndDate__c = Date.today().addDays(1);
        conTest.save();

        conTest.accContact='齐齐哈尔辛承医疗器械有限公司';
        conTest.productInfoListview[0].check=true;
        conTest.productInfoListview[0].dealerPro.Special_Campaign_Price__c = 200;
        conTest.productInfoListview[0].dealerPro.Campaign_StartDate__c = null;
        conTest.productInfoListview[0].dealerPro.Campaign_EndDate__c = Date.today().addDays(1);
        conTest.save();

        conTest.productInfoListview[0].check=true;
        conTest.productInfoListview[0].dealerPro.Special_Campaign_Price__c = 200;
        conTest.productInfoListview[0].dealerPro.Campaign_StartDate__c = Date.today().addDays(-1);
        conTest.productInfoListview[0].dealerPro.Campaign_EndDate__c = null;
        conTest.save();

        conTest.productInfoListview[0].check=true;
        conTest.productInfoListview[0].dealerPro.Special_Campaign_Price__c = 200;
        conTest.productInfoListview[0].dealerPro.Campaign_StartDate__c = Date.today().addDays(3);
        conTest.productInfoListview[0].dealerPro.Campaign_EndDate__c = Date.today().addDays(1);
        conTest.save();

        conTest.accContact='8037712';
        conTest.productInfoListview[0].check=true;
        conTest.productInfoListview[0].dealerPro.Special_Campaign_Price__c = 200;
        conTest.productInfoListview[0].dealerPro.Campaign_StartDate__c = Date.today().addDays(-1);
        conTest.productInfoListview[0].dealerPro.Campaign_EndDate__c = Date.today().addDays(1);
        conTest.save();

        conTest.accContact = keiyaku4.id;
        conTest.dpc.Agent_Ref__c = sellerA.id;
        //conTest.makecontact();
        conTest.keyword = 'Test01';
        conTest.searchHospital();
        conTest.productInfoListview[0].check=true;
        conTest.productInfoListview[0].pro.Id = null;
        conTest.productInfoListview[0].dealerPro.Special_Campaign_Price__c = 200;
        conTest.productInfoListview[0].dealerPro.Campaign_StartDate__c = Date.today().addDays(-1);
        conTest.productInfoListview[0].dealerPro.Campaign_EndDate__c = Date.today().addDays(1);
        conTest.save();
	}

    @isTest
    static void updown()
    {
        initAcData();
        PageReference page = new PageReference('/apex/AgencyCampaign');
        System.Test.setCurrentPage(page);
        AgencyCampaignController conTest = new AgencyCampaignController();
        conTest.pagesize = 2;
        conTest.init();
        //conTest.product2s();
       // System.assertEquals(3, conTest.productInfoListview.size());
        //conTest.setCon.next();
        conTest.refreshPageSize();
        //conTest.showParentManagementCode();
        conTest.searchHospital();
        conTest.moveToNext();
        conTest.moveToLast();
        conTest.moveToPrevious();
        conTest.pagesize = 1;
        conTest.moveToLast();
        //System.assertEquals(2, conTest.productInfoListview.size());
    }
}