@isTest
private class LexConsumableAccountSOQLTest {
  @testSetup
  static void testInfo() {
    User userTest;
    Account accountItem;
    User thisUser = [SELECT Id FROM User WHERE Id = :UserInfo.getUserId()];
    System.runAs(thisUser) {
      List<RecordType> rectCo = [
        SELECT Id
        FROM RecordType
        WHERE IsActive = TRUE AND SobjectType = 'Account' AND Name = '販売店'
      ];
      if (rectCo.size() == 0) {
        return;
      }
      Profile prof = [
        SELECT Id
        FROM Profile
        WHERE Name = '901_经销商社区普通权限_2重验证(ET)'
      ];
      accountItem = new Account(
        Name = 'Testaccount002',
        Dealer_discount__c = 20,
        RecordTypeId = rectCo[0].Id,
        Product_Limit_Date__c = 'Test01|5|55,Test02|2|4',
        AgentCode_Ext__c = '9999900'
      );
      insert accountItem;
      Contact core = new Contact(
        email = 'jplumber@salesforce.com',
        firstname = 'Joe',
        lastname = 'Plumber',
        accountId = accountItem.id
      );
      insert core;
      userTest = 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',
        UserPro_Type__c = 'ENG',
        Work_Location__c = '北京'
      );
      insert userTest;
    }

    System.runAs(userTest) {
      Product2 prod01 = new Product2(
        Name = 'Test01',
        ProductCode = 'Test01',
        Asset_Model_No__c = 'Test01',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = '12124',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        Manual_Entry__c = false
      );
      Product2 prod02 = new Product2(
        Name = 'Test02',
        ProductCode = 'Test02',
        Asset_Model_No__c = 'Test02',
        SFDA_Status__c = '有効',
        Dealer_special_Object__c = true,
        SFDA_Approbation_No__c = '12124',
        Packing_list_manual__c = 1,
        SFDA_Expiration_Date__c = Date.today(),
        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 createId = new Consumable_order__c();
      createId.Name = 'testMing1';
      createId.Order_status__c = '批准';
      createId.Deliver_date__c = Date.today();
      createId.RecordTypeid = System.Label.RT_ConOrder_Delivery;
      createId.Order_type__c = '订单';
      createId.Order_ProType__c = 'ENG';
      createId.Dealer_Info__c = accountItem.Id;
      createId.Delivery_detail_count__c = 5;
      createId.orderPattern__c = 'hospitalorder';
      insert createId;

      List<Consumable_Orderdetails__c> coListTest = new List<Consumable_Orderdetails__c>();
      Consumable_Orderdetails__c conOrderDetail1 = new Consumable_Orderdetails__c();
      conOrderDetail1.Name = 'testConOrderDetail1';
      conOrderDetail1.Consumable_Arrivecount__c = 5;
      conOrderDetail1.Unitprice_To_agency__c = 0;
      conOrderDetail1.Delivery_List_RMB__c = 99;
      conOrderDetail1.Shipment_Count__c = 100;
      conOrderDetail1.Consumable_product__c = pro1.id;
      conOrderDetail1.Consumable_order__c = createId.Id;
      coListTest.add(conOrderDetail1);

      Consumable_Orderdetails__c conOrderDetail2 = new Consumable_Orderdetails__c();
      conOrderDetail2.Name = 'testConOrderDetail2';
      conOrderDetail1.Unitprice_To_agency__c = 0;
      conOrderDetail1.Delivery_List_RMB__c = 99;
      conOrderDetail2.Shipment_Count__c = 99;
      conOrderDetail2.Consumable_product__c = pro2.id;
      conOrderDetail2.Consumable_order__c = createId.Id;
      coListTest.add(conOrderDetail2);
      insert coListTest;
    }
  }
  @isTest
  static void testGetAccountBySales() {
    System.Test.startTest();
    DateTime thisDatetime = DateTime.newInstance(2023, 1, 1, 0, 0, 0);
    DateTime nextDatetime = DateTime.newInstance(2023, 6, 6, 0, 0, 0);
    AggregateResult[] arList = new List<AggregateResult>();
    arList = LexConsumableAccountSOQL.getAccountBySales(
      thisDatetime,
      nextDatetime
    );
    System.Test.stopTest();
  }
  @isTest
  static void testGetAccountTotalSales() {
    System.Test.startTest();
    DateTime thisDatetime = DateTime.newInstance(2023, 1, 1, 0, 0, 0);
    DateTime nextDatetime = DateTime.newInstance(2023, 6, 6, 0, 0, 0);
    AggregateResult[] saleAmountList = new List<AggregateResult>();
    saleAmountList = LexConsumableAccountSOQL.getAccountTotalSales(
      thisDatetime,
      nextDatetime
    );
    System.Test.stopTest();
  }
}
