unloggedio / unlogged-sdk

Unlogged SDK for recording code execution
https://unlogged.io
Apache License 2.0
152 stars 16 forks source link

Mocks saved for "org.modelmapper.ModelMapper" are ignored #74

Open TheAmg opened 1 week ago

TheAmg commented 1 week ago

Describe the bug

On Saving mocks for a "ModelMapper.map()" and running it in a replay test case, the mock is ignored.

Screenshot 2024-06-20 at 2 48 28 PM

Reproduction steps

  1. Run testcases from unlogged-spring-maven-demo Or
  2. Save a candidate for the method getUserModelMiniDto from ModelMapperOpsController from unlogged-spring-maven-demo
  3. Run replay cases ...

Expected behavior

For mocks defined to third party classes to be picked

Additional context

Original saved candidate in json ->

{
        "lineNumbers" : [ 34, 35 ],
        "testAssertions" : {
          "subAssertions" : [ {
            "subAssertions" : [ ],
            "expression" : "SELF",
            "expectedValue" : "1",
            "id" : "e2237ff1-f9f6-4282-87c8-187b1dcc06d9",
            "assertionType" : "EQUAL",
            "key" : "/id"
          }, {
            "subAssertions" : [ ],
            "expression" : "SELF",
            "expectedValue" : "\"user1\"",
            "id" : "8e8b7601-14ff-48f5-80ab-de6a381337bb",
            "assertionType" : "EQUAL",
            "key" : "/username"
          } ],
          "expression" : "SELF",
          "expectedValue" : "true",
          "id" : "b7132539-aae6-4e9d-8956-db45725b6224",
          "assertionType" : "ALLOF",
          "key" : "/"
        },
        "candidateId" : "a7731c8a-acc3-4912-a98f-2ddaa25c3dd6",
        "name" : "ModelMapperOpsController.getUserModelMiniDto - call from ModelMapper mocked",
        "description" : null,
        "methodArguments" : [ ],
        "returnValue" : "{\"id\":1,\"username\":\"user1\"}",
        "returnValueClassname" : "org.unlogged.demo.models.mapper.dto.UserModelMiniDto",
        "metadata" : {
          "recordedBy" : "testerfresher",
          "hostMachineName" : "testerfresher",
          "timestamp" : 3205149619967,
          "candidateStatus" : "NA"
        },
        "sessionIdentifier" : 1253697106,
        "probSerializedValue" : "eyJpZCI6MSwidXNlcm5hbWUiOiJ1c2VyMSJ9",
        "mockIds" : [ "ad02c78e-b4cc-4545-9c02-c54fad16c403" ],
        "exception" : false,
        "method" : {
          "name" : "getUserModelMiniDto",
          "signature" : "()Lorg/unlogged/demo/models/mapper/dto/UserModelMiniDto;",
          "className" : "org.unlogged.demo.controller.ModelMapperOpsController",
          "methodHash" : 0
        }
      }

Mock file ->

{
  "classname" : "org.modelmapper.ModelMapper",
  "storedCandidateMap" : { },
  "declaredMockMap" : {
    "org.modelmapper.ModelMapper#map#(Ljava/lang/Object;Ljava/lang/Class<D>;)D" : [ {
      "id" : "ad02c78e-b4cc-4545-9c02-c54fad16c403",
      "name" : "mock response for call to mapper.map(userModel, UserModelMiniDto.class)",
      "fieldTypeName" : "org.modelmapper.ModelMapper",
      "sourceClassName" : "org.unlogged.demo.controller.ModelMapperOpsController",
      "fieldName" : "mapper",
      "methodName" : "map",
      "whenParameter" : [ {
        "name" : null,
        "type" : "EQUAL",
        "value" : "{\"id\":1,\"username\":\"user1\",\"address\":null,\"contactInformation\":null}"
      }, {
        "name" : null,
        "type" : "EQUAL",
        "value" : "\"org.unlogged.demo.models.mapper.dto.UserModelMiniDto\""
      } ],
      "thenParameter" : [ {
        "returnParameter" : {
          "declaredMocks" : [ ],
          "value" : "{\"id\":1,\"username\":\"user1\"}",
          "returnValueType" : "REAL",
          "className" : "D"
        },
        "methodExitType" : "NORMAL"
      } ],
      "methodHashKey" : "org.modelmapper.ModelMapper#map#(Ljava/lang/Object;Ljava/lang/Class<D>;)D"
    } ]
  }
}
TheAmg commented 1 week ago

This happens with sdk 0.6.2