If you are testing active assignment rules you need to add it as an DMLOptions during testing else your assignment rule(s) will not get called and your assertion(s) may fail.
If you have one active Case Assignment Rule you can use dmlOpts.assignmentRuleHeader.useDefaultRule = true else you need to query for AssignmentRules. To query AssignmentRules you will need to have without sharing set as your class level access, else you will not get access to AssignmentRules.
If you have one method to insertCases you can make sure your assignmentRules run every time you execute a test class.
public Id insertCase(Case bpCase){ fflib_ISObjectUnitOfWork uow = Rest_App.UnitOfWork.newInstance(); if (Test.isRunningTest()){ Database.DMLOptions dmlOpts = new Database.DMLOptions(); dmlOpts.assignmentRuleHeader.useDefaultRule = true; bpCase.SetOptions(dmlOpts); } uow.registerNew(bpCase); uow.commitWork(); return bpCase.Id; }
Here is the actual test class:
@isTest(SeeAllData=true) static void testClientRequest(){ RestRequest req = new RestRequest(); RestResponse res = new RestResponse(); Map<String, String> mapOfIds = App_Global_Test.setupCommunityUserReturnIds(); test.startTest(); System.runAs(new User(Id=mapOfIds.get('UserId'))){ req.requestBody = Blob.valueOf('{"contactId":"'+mapOfIds.get('ContactId')+'", "type":"Client Request", "description":"Please help me with my account", "subject":"Client Request", "reason":"Client Request", "origin":"App"}'); req.requestURI = '/v1/support/case'; req.httpMethod = 'POST'; RestContext.request = req; RestContext.response = res; App_Rest_Dispatcher.doPost(); System.assert(res.responseBody!=null); System.assertEquals(res.statusCode, 200); } test.stopTest(); List<Case> supportCase = [Select Id, Subject, Description, Type, Owner.Name from Case where ContactId=:mapOfIds.get('ContactId')]; System.assertEquals(supportCase.size(), 1); System.assertEquals(supportCase.get(0).Subject, 'Client Request'); System.assertEquals(supportCase.get(0).Type, 'Client Request'); System.assertEquals(supportCase.get(0).Owner.Name, 'Client Services Queue'); }