@istest
public class LexArriveGoodsMainControllerTest {
  @IsTest
  static void lexArriveGoodsMainControllerTest1() {
    User myUser_test = new User();
    Account myAccount1;
    Contact core;
    User currentUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    NoteStay__c n = new NoteStay__c(Name = 'NoteStay', IsStay__c = true);
    insert n;
    System.runAs(currentUser) {
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      myAccount1 = new Account(
        name = 'testaccount001',
        RecordTypeId = rectCo[0].Id,
        AgentCode_Ext__c = '9999900'
      );
      insert myAccount1;
      core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountid = myAccount1.id
      );
      insert core;
      myUser_test = new User(
        ContactId = core.id,
        Alias = 'newUser',
        Email = 'newuser@testorg.com',
        EmailEncodingKey = 'UTF-8',
        LastName = 'testUser',
        LanguageLocaleKey = 'zh_CN',
        LocaleSidKey = 'zh_CN',
        ProfileId = prof.Id,
        TimeZoneSidKey = 'Asia/Shanghai',
        UserName = 'testUser@testorg.com',
        Work_Location__c = '北京'
      );
      insert myUser_test;
    }
    System.runAs(myUser_test) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Manual_Entry__c = false
      );
      insert new List<Product2>{ prod01, prod02 };
      Product2__c pro1 = new Product2__c(
        Name = 'Pro001',
        OT_CODE_Text__c = 'Test001',
        Product2__c = prod01.Id
      );
      Product2__c pro2 = new Product2__c(
        Name = 'Pro002',
        OT_CODE_Text__c = 'Test002',
        Product2__c = prod02.Id
      );
      insert new List<Product2__c>{ pro1, pro2 };
      //订单
      Consumable_order__c Order1 = new Consumable_order__c(
        Name = 'OCM_01_001',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      Consumable_order__c Order2 = new Consumable_order__c(
        Name = 'OCM_01_002',
        RecordTypeId = System.Label.RT_ConOrder_Delivery,
        Order_type__c = '订单',
        Dealer_info__c = myAccount1.Id,
        Order_ProType__c = 'ET'
      );
      insert new List<Consumable_order__c>{ Order1, Order2 };

      //明细1
      Consumable_orderdetails__c createDetail = new Consumable_orderdetails__c();
      createDetail.name = 'Too001';
      createDetail.Consumable_Product__c = pro1.id;
      createDetail.Dealer_Custom_Price__c = 999.00;
      createDetail.Consumable_count__c = 3;
      createDetail.Consumable_order__c = Order1.id;
      createDetail.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail;
      Consumable_orderdetails__c createDetail1 = new Consumable_orderdetails__c();
      createDetail1.name = 'Too002';
      createDetail1.Consumable_Product__c = pro2.id;
      createDetail1.Consumable_order__c = Order2.id;
      createDetail1.Dealer_Custom_Price__c = 999.00;
      createDetail1.Consumable_count__c = 4;
      createDetail1.RecordTypeid = System.Label.RT_ConOrderDetail1_Order;
      insert createDetail1;

      //订单明细
      Consumable_order_details2__c Orderdet1 = new Consumable_order_details2__c(
        Name = 'OCM_01_001001',
        Consumable_order_minor__c = Order1.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet2 = new Consumable_order_details2__c(
        Name = 'OCM_01_001002',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet3 = new Consumable_order_details2__c(
        Name = 'OCM_01_001003',
        Consumable_order_minor__c = Order1.Id,
        //Arrive_date__c = Date.today(),
        Consumable_Product__c = pro1.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      Consumable_order_details2__c Orderdet4 = new Consumable_order_details2__c(
        Name = 'OCM_01_001004',
        Consumable_order_minor__c = Order2.Id,
        Arrive_date__c = Date.today(),
        Consumable_Product__c = pro2.id,
        RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery
      );
      insert new List<Consumable_order_details2__c>{
        Orderdet1,
        Orderdet2,
        Orderdet3,
        Orderdet4
      };

      LexArriveGoodsMainController.init();
      LexArriveGoodsMainController.searchConsumableorderdetails(
        'Too001',
        null,
        myAccount1.Id,
        '北京',
        'ET'
      );
    }
  }
}
