Skip to content

Commit d3180df

Browse files
Corrects collecting annotated field models (#2513)
1 parent 98b926d commit d3180df

File tree

4 files changed

+13
-12
lines changed

4 files changed

+13
-12
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree/CgSpringUnitTestClassConstructor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ class CgSpringUnitTestClassConstructor(context: CgContext) : CgAbstractSpringTes
2727
private lateinit var mockitoCloseableVariable: CgValue
2828
private lateinit var spyClearVariables: List<CgValue>
2929

30-
private val injectingMocksFieldsManager = CgInjectingMocksFieldsManager(context)
3130
private val mocksFieldsManager = CgMockedFieldsManager(context)
3231
private val spiesFieldsManager = CgSpiedFieldsManager(context)
32+
private val injectingMocksFieldsManager =
33+
CgInjectingMocksFieldsManager(context, mocksFieldsManager, spiesFieldsManager)
3334

3435
override fun constructClassFields(testClassModel: SimpleTestClassModel): List<CgFieldDeclaration> {
3536
val fields = mutableListOf<CgFieldDeclaration>()

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree/fieldmanager/CgAbstractClassFieldManager.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@ abstract class CgAbstractClassFieldManager(context: CgContext) :
1818
CgClassFieldManager,
1919
CgContextOwner by context {
2020

21-
protected val annotatedModelGroups: MutableMap<ClassId, MutableSet<UtModelWrapper>> = mutableMapOf()
21+
val annotatedModels: MutableSet<UtModelWrapper> = mutableSetOf()
2222
protected val modelGroupsProvider = ModelGroupsProvider(context)
2323

24-
fun getManagedModels(): Set<UtModelWrapper> = annotatedModelGroups[annotationType] ?: emptySet()
25-
2624
fun findCgValueByModel(model: UtModel, setOfModels: Set<UtModelWrapper>?): CgValue? {
2725
val key = setOfModels?.find { it == model.wrap() } ?: return null
2826
return valueByUtModelWrapper[key]
@@ -60,7 +58,7 @@ abstract class CgAbstractClassFieldManager(context: CgContext) :
6058

6159
modelWrappers.forEach { modelWrapper ->
6260
valueByUtModelWrapper[modelWrapper] = createdVariable
63-
annotatedModelGroups.getOrPut(annotationType) { mutableSetOf() } += modelWrapper
61+
annotatedModels += modelWrapper
6462
}
6563
}
6664

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree/fieldmanager/CgInjectingMocksFieldsManager.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ import org.utbot.framework.plugin.api.UtModel
1313
import org.utbot.framework.plugin.api.UtModelWithCompositeOrigin
1414
import org.utbot.framework.plugin.api.isMockModel
1515

16-
class CgInjectingMocksFieldsManager(val context: CgContext) : CgAbstractClassFieldManager(context) {
16+
class CgInjectingMocksFieldsManager(
17+
val context: CgContext,
18+
private val mocksFieldsManager: CgMockedFieldsManager,
19+
private val spiesFieldsManager: CgSpiedFieldsManager,
20+
) : CgAbstractClassFieldManager(context) {
1721
init {
1822
relevantFieldManagers += this
1923
}
@@ -37,10 +41,10 @@ class CgInjectingMocksFieldsManager(val context: CgContext) : CgAbstractClassFie
3741
val variableForField = variableConstructor.getOrCreateVariable(fieldModel)
3842

3943
// is variable mocked by @Mock annotation
40-
val isMocked = findCgValueByModel(fieldModel, annotatedModelGroups[mockClassId]) != null
44+
val isMocked = findCgValueByModel(fieldModel, mocksFieldsManager.annotatedModels) != null
4145

4246
// is variable spied by @Spy annotation
43-
val isSpied = findCgValueByModel(fieldModel, annotatedModelGroups[spyClassId]) != null
47+
val isSpied = findCgValueByModel(fieldModel, spiesFieldsManager.annotatedModels) != null
4448

4549
// If field model is a mock model and is mocked by @Mock annotation in classFields or is spied by @Spy annotation,
4650
// it is set in the connected with instance under test automatically via @InjectMocks.

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree/fieldmanager/ClassFieldManagerFacade.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ class ClassFieldManagerFacade(context: CgContext) : CgContextOwner by context {
1111

1212
fun constructVariableForField(model: UtModel): CgValue? {
1313
relevantFieldManagers.forEach { manager ->
14-
val managedModels = manager.getManagedModels()
15-
16-
val alreadyCreatedVariable = manager.findCgValueByModel(model, managedModels)
14+
val alreadyCreatedVariable = manager.findCgValueByModel(model, manager.annotatedModels)
1715
if (alreadyCreatedVariable != null) {
1816
manager.useVariableForModel(model, alreadyCreatedVariable)
1917
return alreadyCreatedVariable
@@ -27,7 +25,7 @@ class ClassFieldManagerFacade(context: CgContext) : CgContextOwner by context {
2725
val trustedModels = mutableListOf(UtSpringContextModel.wrap())
2826

2927
relevantFieldManagers.forEach { manager ->
30-
trustedModels += manager.getManagedModels()
28+
trustedModels += manager.annotatedModels
3129
}
3230

3331
return trustedModels

0 commit comments

Comments
 (0)