function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Laetitia Damen 9Laetitia Damen 9 

Test Query Class

Hi There! 

I'm looking to create a class test for my query order. It didn't work well.
I've missed something there for sure but I'm pretty new in testing. 
Thanks in advance for your help!
Here is the class then the test class :
 
public with sharing class FA_QR_Order {
    public FA_QR_Order() {

    }
    public AggregateResult getSum () {
        AggregateResult sum = [
            SELECT SUM(TotalAmount) total
            FROM Order];

        return sum;

    }

    public list<Order> getOrders() {
        list<Order> listOrders =  [
            SELECT Id, TotalAmount, AccountId, Status
            FROM Order
        ];

        return listOrders;


    }
}
 
static void TestQueryOrder(){

        Order orderTest = new Order(); 
        orderTest.Status='Ordered';
        orderTest.Name = 'NameTest';
        orderTest.EffectiveDate = System.today();
        orderTest.ShipmentCost__c= 56789;

        insert orderTest;

        list<Order> listOrdersTest = new list<Order>();
        listOrdersTest.add(orderTest);
        
        Test.startTest();
        FA_QR_Order OrderQr = NEW FA_QR_Order();
        listOrdersTest = OrderQr.getOrders(orderTest);
        Order orderTest2= [ SELECT Id, TotalAmount, AccountId, Status FROM Order];

        Test.stopTest();

        System.assertEquals ( listOrdersTest.get(orderTest2));
        
    } 
}

 
Sai PraveenSai Praveen (Salesforce Developers) 
Hi Laetitia,

Can you try the below test class. It gives you 100% coverage.
 
@istest
public class FA_QR_OrderTest {
    @istest
static void TestQueryOrder(){

Account a = new Account();
    a.Name = 'Test Account';
    insert a;

    // Insert Product
    Product2 p = new Product2();
    p.Name = ' Test Product ';
    p.Description='Test Product Entry 1';
    p.productCode = 'ABC';
    p.isActive = true;
    insert p;
    

    Id pricebookId = Test.getStandardPricebookId();
    
    // Insert PricebookEntry

    PricebookEntry standardPrice = new PricebookEntry();
    standardPrice.Pricebook2Id = pricebookId;
    standardPrice.Product2Id = p.Id;
    standardPrice.UnitPrice = 1;
    standardPrice.IsActive = true;
    standardPrice.UseStandardPrice = false;
    insert standardPrice ;
    
    // Insert Order
    
    Order o = new Order();
    o.Name = 'Test Order ';
    o.Status = 'Draft';
    o.EffectiveDate = system.today();
    o.EndDate = system.today() + 4;
    o.AccountId = a.id;
    o.Pricebook2Id =  pricebookId ;
    
    insert o;
    
    // Insert Order Item

    OrderItem i = new OrderItem();
    i.OrderId = o.id;
    i.Quantity = 24;
    i.UnitPrice = 240;
    i.Product2id = p.id;
    i.PricebookEntryId=standardPrice.id;
    insert i;

        list<Order> listOrdersTest = new list<Order>();
        listOrdersTest.add(o);
        
        Test.startTest();
        FA_QR_Order OrderQr = NEW FA_QR_Order();
        listOrdersTest = OrderQr.getOrders();
     AggregateResult sumofamount=OrderQr.getSum();
       List< Order> orderTest2= [ SELECT Id, TotalAmount, AccountId, Status FROM Order];

        Test.stopTest();

        System.assertEquals (listOrdersTest.size(),orderTest2.size() );
        
    } 
}

If this solution helps, Please mark it as best answer.

Thanks,