You need to sign in to do that
Don't have an account?
Sahil Yadav
Test Class Coverage Rest Class
Hello Folks , I will be working on writting the test classes but facing an issue exactly could able to figure those
Any Help will highly be appreciated needs to complete on an urent basis ...
Thank You
Rest API Class :- @RestResource(urlMapping='/subscriptionUpdate/*') global with sharing class subscriptionUpdate { @HttpPost global static void doPost() { Map<String, Object> requestBody= (Map<String, Object>)JSON.deserializeUntyped(RestContext.request.requestBody.toString()); Map<String, Object> requestBody1 = new Map<String, Object>(); for(String s: requestBody.keySet()){ requestBody1.put(s.toLowerCase(),requestBody.get(s)); } system.debug('requestBody' +requestBody); system.debug('requestBody1===' +requestBody1); String oppId = String.valueOf(requestBody1.get('opportunityid')); String buyerId = String.valueOf(requestBody1.get('buyerid')); String subStatus = String.valueOf(requestBody1.get('subscriptionstatus')); String subsId = String.valueOf(requestBody1.get('subscriptionid')); if(oppId != null && oppId != ''){ Opportunity opp = [SELECT ID, Name, Buy_ID__c, Subscription_Status__c FROM Opportunity WHERE Id = :oppId LIMIT 1]; opp.Subscription_Status__c = subStatus; update opp; } if(buyerId != null && buyerId != ''){ Account acc = [SELECT ID,Name,API_Buyer_Id__c FROM Account WHERE API_Buyer_Id__c =:buyerId LIMIT 1]; Id rtId = Schema.SObjectType.Opportunity.getRecordTypeInfosByName().get('Buyer Development Opportunity').getRecordTypeId(); Opportunity opp =new Opportunity(); opp.name = acc.Name; opp.AccountId = acc.Id; opp.StageName = 'Closed Won'; opp.Subscription_Status__c = subStatus; opp.CloseDate = System.today(); opp.RecordTypeId = rtId; opp.Subscription_ID__c = subsId; insert opp; Product2 prd = new Product2(); if(subsId == '1'){ prd = [SELECT ID,Name FROM Product2 WHERE Name = 'Vehicle Score' LIMIT 1]; Opportunity opp1 = [Select id, name , Subscription_Name__c from Opportunity where id =: opp.Id ]; opp1.Subscription_Name__c = prd.Name; update opp1; Integration_logs__c ilog = new Integration_logs__c(); ilog.Request_Body__c = RestContext.request.requestBody.toString(); ilog.Response_Body__c = 'Opportunity Subscription Name is been Updated !!'; ilog.Status__c = 'Success'; insert ilog; } else if(subsId == '2'){ prd = [SELECT ID,Name FROM Product2 WHERE Name = 'Custom Bid' LIMIT 1]; Opportunity opp1 = [Select id, name , Subscription_Name__c from Opportunity where id =: opp.Id ]; opp1.Subscription_Name__c = prd.Name; update opp1; Integration_logs__c ilog = new Integration_logs__c(); ilog.Request_Body__c = RestContext.request.requestBody.toString(); ilog.Response_Body__c = 'Opportunity Subscription Name is been Updated !!'; ilog.Status__c = 'Success'; insert ilog; } } } }
Test Class :- @isTest public class subscriptionUpdateTest { @isTest static void testPostMethod(){ Test.startTest(); Account acc = new Account(); acc.Name = 'Test Account'; acc.API_Buyer_Id__c = '123456'; insert acc; Opportunity TestOpp = new Opportunity(); date mydate = date.parse('12/27/2022'); TestOpp.name = 'TestOpp1'; TestOpp.StageName = '0. Qualifying'; TestOpp.CloseDate = mydate; TestOpp.AccountId = acc.Id; insert TestOpp; Id pricebookId = Test.getStandardPricebookId(); Product2 prod = new Product2( Name = 'Custom Bid', ProductCode = 'Custom Bid', isActive = true ); insert prod; PricebookEntry pbEntry = new PricebookEntry( Pricebook2Id = pricebookId, Product2Id = prod.Id, UnitPrice = 1, IsActive = true ); insert pbEntry; Opportunity opp = [SELECT ID,Buy_ID__c,AccountId,Account.API_Buyer_Id__c FROM Opportunity WHERE id = :TestOpp.Id]; RestRequest req = new RestRequest(); RestResponse res = new RestResponse(); req.requestURI = '/services/apexrest/subscriptionUpdate/'; String JSONMsg = '{"buyerId" : "'+opp.Account.API_Buyer_Id__c+'","Subscription Status":"Subscribed","subscription Id":"2"}'; req.requestBody = Blob.valueof(JSONMsg); req.httpMethod = 'POST'; RestContext.request = req; RestContext.response= res; subscriptionUpdate.doPost(); Test.stopTest(); } } Issue :- Methods defined as TestMethod do not support Web service callouts
Payload Coming from External System to Salesforce as a Post request :- { "OpportunityID": null, "buyerId":"3456", "SubscriptionStatus":"ReSubscribed", "SubscriptionID": "1" }
Any Help will highly be appreciated needs to complete on an urent basis ...
Thank You
Recommend reviewing these related posts
https://salesforce.stackexchange.com/questions/31808/method-defined-as-testmethod-do-not-support-web-service-callouts-test-skipped
https://salesforce.stackexchange.com/questions/225856/unit-test-error-methods-defined-as-testmethod-do-not-support-web-service-callou
https://salesforcescool.blogspot.com/2021/08/methods-defined-as-testmethod-do-not.html
Thanks