Skip to content

Commit f15a858

Browse files
committed
fix: [ANDROAPP-6535] filter in RelationshipsRepository by relationship type
Signed-off-by: andresmr <[email protected]>
1 parent e669698 commit f15a858

File tree

6 files changed

+83
-65
lines changed

6 files changed

+83
-65
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ kotlin = '2.0.20'
88
hilt = '2.47'
99
jacoco = '0.8.10'
1010
designSystem = "0.4.1-SNAPSHOT"
11-
dhis2sdk = "1.11.1-20241213.081754-8"
11+
dhis2sdk = "1.11.1-20241218.080719-10"
1212
ruleEngine = "3.0.0"
1313
expressionParser = "1.1.0"
1414
appcompat = "1.6.1"

tracker/src/main/kotlin/org/dhis2/tracker/relationships/data/EventRelationshipsRepository.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,17 @@ class EventRelationshipsRepository(
7070
.blockingGet()
7171

7272
val relationships = d2.relationshipModule().relationships()
73-
.getByItem(
73+
.byItem(
7474
RelationshipItem.builder()
7575
.event(
7676
RelationshipItemEvent.builder().event(eventUid).build(),
7777
).relationshipItemType(constraintType)
7878
.build(),
79-
).filter {
80-
it.relationshipType() == relationshipSection.uid
81-
}.mapNotNull { relationship ->
79+
).byRelationshipType().eq(relationshipSection.uid)
80+
.byDeleted().isFalse
81+
.withItems()
82+
.blockingGet()
83+
.mapNotNull { relationship ->
8284
mapToRelationshipModel(
8385
relationship = relationship,
8486
relationshipType = relationshipType,

tracker/src/main/kotlin/org/dhis2/tracker/relationships/data/TrackerRelationshipsRepository.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class TrackerRelationshipsRepository(
7979
.blockingGet()
8080

8181
val relationships = d2.relationshipModule().relationships()
82-
.getByItem(
82+
.byItem(
8383
RelationshipItem.builder()
8484
.trackedEntityInstance(
8585
RelationshipItemTrackedEntityInstance.builder()
@@ -88,9 +88,11 @@ class TrackerRelationshipsRepository(
8888
).relationshipItemType(constraintType)
8989
.build(),
9090
)
91-
.filter {
92-
it.relationshipType() == relationshipSection.uid
93-
}.mapNotNull { relationship ->
91+
.byRelationshipType().eq(relationshipSection.uid)
92+
.byDeleted().isFalse
93+
.withItems()
94+
.blockingGet()
95+
.mapNotNull { relationship ->
9496
mapToRelationshipModel(
9597
relationship = relationship,
9698
relationshipType = relationshipType,

tracker/src/test/kotlin/org/dhis2/tracker/relationships/RelationshipFakeModels.kt

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,28 @@ import org.dhis2.tracker.relationships.model.RelationshipDirection
55
import org.dhis2.tracker.relationships.model.RelationshipModel
66
import org.dhis2.tracker.relationships.model.RelationshipOwnerType
77
import org.dhis2.tracker.relationships.model.RelationshipSection
8+
import org.hisp.dhis.android.core.common.ObjectWithUid
89
import org.hisp.dhis.android.core.relationship.Relationship
10+
import org.hisp.dhis.android.core.relationship.RelationshipConstraint
11+
import org.hisp.dhis.android.core.relationship.RelationshipType
912
import org.mockito.kotlin.mock
1013
import java.util.Date
1114

1215
val relationshipSection1 = RelationshipSection(
13-
uid = "uid1",
14-
title = "Relationship title 1",
16+
uid = "relationshipTypeUid1",
17+
title = "RelationshipType1 FROM",
1518
relationships = emptyList(),
1619
side = RelationshipConstraintSide.FROM,
17-
entityToAdd = null,
20+
entityToAdd = "trackedEntityType2",
1821
)
1922

2023
val relationshipSection2 =
2124
RelationshipSection(
22-
uid = "uid2",
23-
title = "Relationship title 2",
25+
uid = "relationshipTypeUid2",
26+
title = "RelationshipType2 FROM",
2427
relationships = emptyList(),
2528
side = RelationshipConstraintSide.FROM,
26-
entityToAdd = null,
29+
entityToAdd = "trackedEntityType2",
2730
)
2831

2932
val relationshipModel1 = RelationshipModel(
@@ -72,4 +75,45 @@ val relationshipSection2 =
7275
toGeometry = null,
7376
direction = RelationshipDirection.FROM,
7477
relationship = Relationship.builder().uid("uid2").build()
75-
)
78+
)
79+
80+
val relationshipTypeTeiToTei = RelationshipType.builder()
81+
.uid("relationshipTypeUid1")
82+
.fromToName("RelationshipType1 FROM")
83+
.toFromName("RelationshipType1 TO")
84+
.displayName("Tei to Tei relationship")
85+
.fromConstraint(
86+
RelationshipConstraint.builder()
87+
.trackedEntityType(
88+
ObjectWithUid.create("trackedEntityType1")
89+
).build()
90+
)
91+
.toConstraint(
92+
RelationshipConstraint.builder()
93+
.trackedEntityType(
94+
ObjectWithUid.create("trackedEntityType2")
95+
)
96+
.build()
97+
)
98+
.build()
99+
100+
val relationshipTypeEventToTei = RelationshipType.builder()
101+
.uid("relationshipTypeUid2")
102+
.fromToName("RelationshipType2 FROM")
103+
.toFromName("RelationshipType2 TO")
104+
.displayName("Event to Tei relationship")
105+
.fromConstraint(
106+
RelationshipConstraint.builder()
107+
.programStage(
108+
ObjectWithUid.create("programStageUid")
109+
)
110+
.build()
111+
)
112+
.toConstraint(
113+
RelationshipConstraint.builder()
114+
.trackedEntityType(
115+
ObjectWithUid.create("trackedEntityType2")
116+
)
117+
.build()
118+
)
119+
.build()

tracker/src/test/kotlin/org/dhis2/tracker/relationships/data/TrackerRelationshipsRepositoryTest.kt

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ import org.dhis2.commons.resources.ResourceManager
55
import org.dhis2.tracker.data.ProfilePictureProvider
66
import org.dhis2.tracker.relationships.relationshipSection1
77
import org.dhis2.tracker.relationships.relationshipSection2
8+
import org.dhis2.tracker.relationships.relationshipTypeEventToTei
9+
import org.dhis2.tracker.relationships.relationshipTypeTeiToTei
810
import org.hisp.dhis.android.core.D2
9-
import org.hisp.dhis.android.core.common.ObjectWithUid
1011
import org.hisp.dhis.android.core.enrollment.Enrollment
11-
import org.hisp.dhis.android.core.relationship.RelationshipConstraint
1212
import org.hisp.dhis.android.core.relationship.RelationshipConstraintType
13-
import org.hisp.dhis.android.core.relationship.RelationshipType
1413
import org.hisp.dhis.android.core.relationship.RelationshipTypeWithEntitySide
1514
import org.hisp.dhis.android.core.trackedentity.TrackedEntityInstance
1615
import org.junit.Assert.assertEquals
@@ -34,7 +33,7 @@ class TrackerRelationshipsRepositoryTest {
3433

3534
private val teiUid = "teiUid"
3635
private val enrollmentUid = "enrollmentUid"
37-
private val trackedEntityType = "trackedEntityType"
36+
private val trackedEntityType = "trackedEntityType1"
3837

3938
@Before
4039
fun setup() {
@@ -85,49 +84,21 @@ class TrackerRelationshipsRepositoryTest {
8584

8685

8786
//Then a relationshipSectionList is returned
88-
assertEquals(relationshipTypes, expectedResult)
89-
}
90-
91-
92-
93-
private val relationshipTypeTeiToTei = RelationshipType.builder()
94-
.uid("relationshipTypeUid1")
95-
.fromToName("RelationshipType1 FROM")
96-
.toFromName("RelationshipType1 TO")
97-
.displayName("Tei to Tei relationship")
98-
.fromConstraint(
99-
RelationshipConstraint.builder()
100-
.trackedEntityType(
101-
ObjectWithUid.create(trackedEntityType)
102-
).build()
87+
val expectedResult = listOf(
88+
relationshipSection1,
89+
relationshipSection2,
10390
)
104-
.toConstraint(
105-
RelationshipConstraint.builder()
106-
.trackedEntityType(
107-
ObjectWithUid.create("trackedEntityTypeUid2")
108-
)
109-
.build()
110-
)
111-
.build()
91+
assertEquals(expectedResult, relationshipTypes)
92+
}
11293

11394
private val relationshipWithEntitySideList = listOf(
11495
RelationshipTypeWithEntitySide(
11596
relationshipType = relationshipTypeTeiToTei,
11697
entitySide = RelationshipConstraintType.FROM
11798
),
11899
RelationshipTypeWithEntitySide(
119-
relationshipType = RelationshipType.builder()
120-
.uid("relationshipTypeUid2")
121-
.fromToName("RelationshipType2 FROM")
122-
.toFromName("RelationshipType2 TO")
123-
.displayName("relationshipType2")
124-
.build(),
100+
relationshipType = relationshipTypeEventToTei,
125101
entitySide = RelationshipConstraintType.FROM
126102
)
127103
)
128-
129-
private val expectedResult = listOf(
130-
relationshipSection1,
131-
relationshipSection2,
132-
)
133104
}

tracker/src/test/kotlin/org/dhis2/tracker/relationships/domain/GetRelationshipsByTypeTest.kt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class GetRelationshipsByTypeTest {
3636

3737
@Test
3838
fun `invoke should return relationship sections grouped by type`() = runTest {
39+
3940
//Given a list of relationship types and relationships
4041
whenever(relationshipsRepository.getRelationshipTypes()) doReturn getRelationshipSectionsMock()
4142
whenever(
@@ -52,22 +53,20 @@ class GetRelationshipsByTypeTest {
5253

5354
// When calling the use case to get the relationships grouped by type
5455
val result = getRelationshipsByType()
55-
assertEquals(expectedResult, result)
56-
5756

5857
// Then a list of RelationshipSections with their relationships should be returned
58+
val expectedResult = listOf(
59+
relationshipSection1.copy(
60+
relationships = listOf(relationshipModel1),
61+
),
62+
relationshipSection2.copy(
63+
relationships = listOf(relationshipModel2),
64+
)
65+
)
66+
assertEquals(expectedResult, result)
5967

6068
}
6169

62-
private val expectedResult = listOf(
63-
relationshipSection1.copy(
64-
relationships = listOf(relationshipModel1),
65-
),
66-
relationshipSection2.copy(
67-
relationships = listOf(relationshipModel2),
68-
)
69-
)
70-
7170
private fun getRelationshipSectionsMock(): List<RelationshipSection> {
7271
return listOf(
7372
relationshipSection1,

0 commit comments

Comments
 (0)