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
sunny sengar 17sunny sengar 17 

Since there's only one test method, instead of passing params to this, can we make this a proper @testsetup method? Please anyone can help ?

@IsTest
public class UpdateSolutionEngineeringOpportunityTest extends BaseApexUT {
    public static Long randomNumber = Math.mod(Math.mod(System.currentTimeMillis(), 1000000), 989898989);
    private static final String AMEX_MERCHANT_ID = '0000000000';
    private static final String OPPORTUNITY_NAME = TestDataGeneratorUtil.getNameWithTimeStamp('Opportunity');
    private static final String OPPORTUNITY_TYPE_NEW_BUSINESS = 'New Business';
    private static final String OPPORTUNITY_STAGE_1 = '1. Discovery Scheduled';
    private static final List <SObjectField> accountSelectFields = new List <SObjectField> {
        Account.Id,
        Account.Name,
        Account.Amex_Integration_Type__c,
        Account.Amex_Integration_Detail__c
    };
    private static final List <SObjectField> opportunitySelectFields = new List <SObjectField> {
        Opportunity.Estimated_Annual_Amex_Volume_by_Tax_ID__c,
        Opportunity.AMEX_Rate__c,
        Opportunity.Pricing_Model__c,
        Opportunity.Name
    };
    private static Account accountMock;
    private static Opportunity opportunityMock;
    private static Opportunity opportunityInsertMock;
    private static Sales_Engineering_Activity__c solutionsEngineeringMock;
    private static User mockUser;

    private static void setupTestData(String opportunityStageToSet, String amexIntegrationType, String amexMerchantId, String amexDetail) {
        mockUser = createRunAsUser('mockAdmin@example.com', 'mockBizOps@example.com');
        System.runAs(mockUser) {
            accountMock = new TestDataGeneratorUtil.TestAccount()
                .withOnboardingCompleteDate(Date.today() + 1)
                .withAmexIntegrationDetail(amexDetail)
                .withAmexIntergrationInfo(amexIntegrationType)
                .buildAndSave();
            opportunityInsertMock = new Opportunity();
            opportunityMock = new TestDataGeneratorUtil.TestOpportunity(OPPORTUNITY_NAME, accountMock.Id)
                .withType(OPPORTUNITY_TYPE_NEW_BUSINESS)
                .withStageName(opportunityStageToSet)
                .withCloseDate(Date.today() + 1)
                .buildAndSave();

            Id solutionsEngineeringRecordTypeId = Schema.SObjectType.Sales_Engineering_Activity__c.getRecordTypeInfosByDeveloperName().get('Sales_Engineering_Activity_DDR').getRecordTypeId();
            solutionsEngineeringMock = new Sales_Engineering_Activity__c();
            solutionsEngineeringMock.RecordTypeId = solutionsEngineeringRecordTypeId;
            solutionsEngineeringMock.Opportunity_Name__c = opportunityMock.Id;
            solutionsEngineeringMock.Name = 'Test';
            solutionsEngineeringMock.SE_Activity_Type__c = 'Deal Desk Review';
            solutionsEngineeringMock.SE_Activity_Status__c = 'Activity Scheduled';
            solutionsEngineeringMock.Activity_Notes__c = 'test Sales_Engineering_Activity Activity_Notes';
            solutionsEngineeringMock.Sales_Engineer_Assigned__c = mockUser.Id;
            solutionsEngineeringMock.Status_of_the_Deal__c = 'Discovery (has not seen Toast)';
            solutionsEngineeringMock.Stage__c = '3: Deal Desk Review';
            insert solutionsEngineeringMock;
            System.assertEquals('Deal Desk Review', solutionsEngineeringMock.SE_Activity_Type__c, 'Solution Engineering type does not match');
        }
    }
    public static User createRunAsUser(String EmailID, String UserName) {
        /**  Grab profile */
        UserRole role = [SELECT Id FROM UserRole WHERE Name = 'Sales Engineer'];
        Profile adminProfile = [SELECT Id FROM Profile WHERE Name = 'System Administrator'];
        User adminUser = new User(Alias = 'mockUser',
            Email = randomNumber + emailId,
            EmailEncodingKey = 'UTF-8',
            LastName = 'mockADMIN',
            LanguageLocaleKey = 'en_US',
            LocaleSidKey = 'en_US',
            ProfileId = adminProfile.Id,
            TimeZoneSidKey = 'America/New_York',
            UserName = randomNumber + userName,
            UserRoleId = role.Id);
        insert adminUser;
        return adminUser;
    }
    @IsTest
    private static void solutionEngineerAssignment() {
        Test.startTest();
        setupTestData(OPPORTUNITY_STAGE_1, null, AMEX_MERCHANT_ID, null);
        User usr = createRunAsUser('mockAdmin12@example.com', 'mockBizOps123@example.com');
        System.runAs(usr) {
            solutionsEngineeringMock.Sales_Engineer_Assigned__c = usr.Id;
            update solutionsEngineeringMock;
        }
        System.assertEquals('mockADMIN', usr.LastName, 'User Last name does not Match');
        Test.stopTest();
    }
}