Skip to content

Commit b2011bc

Browse files
authored
Merge pull request #11 from linked-planet/feature/add-tests
add tests and fine-tuning
2 parents d1abc53 + ed1799c commit b2011bc

File tree

9 files changed

+205
-100
lines changed

9 files changed

+205
-100
lines changed

kotlin-insight-client/kotlin-insight-client-api/src/main/kotlin/com/linkedplanet/kotlininsightclient/api/model/InsightObjectExtensions.kt

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@
2121

2222
package com.linkedplanet.kotlininsightclient.api.model
2323

24+
import java.time.LocalDate
2425
import java.time.ZonedDateTime
2526

2627
fun InsightObject.getAttribute(id: InsightAttributeId): InsightAttribute? =
2728
this.attributes.singleOrNull { it.attributeId == id }
2829

29-
inline fun <reified T : InsightAttribute> InsightObject.getAttributeValue(id: InsightAttributeId): T? =
30+
inline fun <reified T : InsightAttribute> InsightObject.getAttributeAs(id: InsightAttributeId): T? =
3031
getAttribute(id) as? T
3132

32-
inline fun <reified T : InsightAttribute> InsightObject.getAttributeValueByName(name: String): T? =
33+
inline fun <reified T : InsightAttribute> InsightObject.getAttributeByNameAs(name: String): T? =
3334
getAttributeByName(name) as? T
3435

3536
fun InsightObject.getAttributeIdByName(name: String) = getAttributeByName(name)?.attributeId
@@ -46,9 +47,18 @@ fun InsightObject.isValueAttribute(id: InsightAttributeId): Boolean =
4647
fun InsightObject.exists(id: InsightAttributeId): Boolean =
4748
getAttribute(id) != null
4849

50+
fun InsightObject.setUrlValues(attributeId: InsightAttributeId, values: List<String>) {
51+
this.attributes = attributes
52+
.filter { it.attributeId != attributeId } +
53+
InsightAttribute.Url(attributeId, values, null)
54+
}
55+
56+
fun InsightObject.getUrlValues(id: InsightAttributeId): List<String> =
57+
getAttributeAs<InsightAttribute.Url>(id)?.values ?: emptyList()
58+
4959
// region ObjectAttributeValue.Select
5060
fun InsightObject.getSelectValues(id: InsightAttributeId): List<String> =
51-
getAttributeValue<InsightAttribute.Select>(id)?.values ?: emptyList()
61+
getAttributeAs<InsightAttribute.Select>(id)?.values ?: emptyList()
5262

5363
fun InsightObject.setSelectValues(attributeId: InsightAttributeId, values: List<String>) {
5464
this.attributes = attributes
@@ -94,8 +104,12 @@ fun InsightObject.setValue(id: InsightAttributeId, value: Double?) {
94104
setValue(id, InsightAttribute.DoubleNumber(id, value, null))
95105
}
96106

97-
fun InsightObject.setValue(id: InsightAttributeId, value: ZonedDateTime?, displayValue: String) {
98-
setValue(id, InsightAttribute.DateTime(id, value, displayValue, null))
107+
fun InsightObject.setValue(id: InsightAttributeId, value: LocalDate?) {
108+
setValue(id, InsightAttribute.Date(id, value, null, null))
109+
}
110+
111+
fun InsightObject.setValue(id: InsightAttributeId, value: ZonedDateTime?) {
112+
setValue(id, InsightAttribute.DateTime(id, value, null, null))
99113
}
100114
// endregion setters
101115

@@ -111,24 +125,22 @@ fun <T> InsightObject.getValueByName(name: String, transform: (InsightAttribute)
111125

112126
fun InsightObject.getStringValue(id: InsightAttributeId): String? =
113127
this.getValue(id) { it.toString() }
114-
115128
fun InsightObject.getIntValue(id: InsightAttributeId): Int? =
116-
getStringValue(id)?.toInt()
117-
129+
getAttributeAs<InsightAttribute.Integer>(id)?.value
118130
fun InsightObject.getDoubleValue(id: InsightAttributeId): Double? =
119-
getStringValue(id)?.toDouble()
120-
131+
getAttributeAs<InsightAttribute.DoubleNumber>(id)?.value
121132
fun InsightObject.getBooleanValue(id: InsightAttributeId): Boolean? =
122-
getStringValue(id)?.toBoolean()
123-
133+
getAttributeAs<InsightAttribute.Bool>(id)?.value
134+
fun InsightObject.getDateValue(id: InsightAttributeId): LocalDate? =
135+
getAttributeAs<InsightAttribute.Date>(id)?.value
124136
fun InsightObject.getDateTimeValue(id: InsightAttributeId): ZonedDateTime? =
125-
getStringValue(id)?.let { ZonedDateTime.parse(it) }
137+
getAttributeAs<InsightAttribute.DateTime>(id)?.value
126138
//endregion getters
127139

128140

129141
//region ObjectAttributeValue.User
130142
fun InsightObject.getUserList(id: InsightAttributeId): List<InsightUser> =
131-
getAttributeValue<InsightAttribute.User>(id)?.users ?: emptyList()
143+
getAttributeAs<InsightAttribute.User>(id)?.users ?: emptyList()
132144
// endregion user
133145

134146

@@ -164,7 +176,7 @@ fun InsightObject.getMultiReferenceValue(id: InsightAttributeId): List<InsightRe
164176
?: emptyList()
165177

166178
fun InsightObject.removeReference(attributeId: InsightAttributeId, referencedObjectId: InsightObjectId) {
167-
val existingList = getAttributeValue<InsightAttribute.Reference>(attributeId)?.referencedObjects ?: emptyList()
179+
val existingList = getAttributeAs<InsightAttribute.Reference>(attributeId)?.referencedObjects ?: emptyList()
168180
val referenceAttributeList = existingList.filter { it.id != referencedObjectId }
169181
this.attributes = attributes
170182
.filter { it.attributeId != attributeId } +
@@ -178,7 +190,7 @@ fun InsightObject.clearReferenceValue(attributeId: InsightAttributeId) {
178190
}
179191

180192
fun InsightObject.addReference(attributeId: InsightAttributeId, referencedObjectId: InsightObjectId) {
181-
val existingList = getAttributeValue<InsightAttribute.Reference>(attributeId)?.referencedObjects ?: emptyList()
193+
val existingList = getAttributeAs<InsightAttribute.Reference>(attributeId)?.referencedObjects ?: emptyList()
182194
val referenceAttributeList = existingList + ReferencedObject(referencedObjectId, "", "", null)
183195
this.attributes = attributes
184196
.filter { it.attributeId != attributeId } +

kotlin-insight-client/kotlin-insight-client-api/src/main/kotlin/com/linkedplanet/kotlininsightclient/api/model/Model.kt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -164,11 +164,12 @@ sealed class InsightAttribute(
164164
is Reference -> referencedObjects.joinToString(",") { it.objectKey }
165165
is User -> users.joinToString(",") { it.key }
166166

167-
is Group -> "" // TODO
168-
is Project -> ""
169-
is Status -> ""
170-
is Version -> ""
171-
is Confluence -> ""
167+
// TODO support additional attribute types
168+
is Group -> "Group attributeId=$attributeId"
169+
is Project -> "Project attributeId=$attributeId"
170+
is Status -> "Status attributeId=$attributeId"
171+
is Version -> "Version attributeId=$attributeId"
172+
is Confluence -> "Confluence attributeId=$attributeId"
172173
is Unknown -> ""
173174
}
174175

@@ -201,6 +202,12 @@ sealed class InsightAttribute(
201202
infix fun InsightAttributeId.toUrlValues(values: List<String>) =
202203
Url(this, values = values, schema = null)
203204

205+
infix fun InsightAttributeId.toUser(user: InsightUser?) =
206+
User(this, listOfNotNull(user), schema = null)
207+
208+
infix fun InsightAttributeId.toUsers(users: List<InsightUser>) =
209+
User(this, users, schema = null)
210+
204211
infix fun InsightAttributeId.toReference(referencedObjectId: InsightObjectId?) =
205212
Reference(
206213
this,

kotlin-insight-client/kotlin-insight-client-http/src/main/kotlin/com/linkedplanet/kotlininsightclient/http/HttpInsightObjectOperator.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -311,11 +311,11 @@ class HttpInsightObjectOperator(private val context: HttpInsightClientContext) :
311311
}
312312
InsightAttribute.User(attributeId, users, schema)
313313
}
314-
InsightObjectAttributeType.CONFLUENCE -> TODO()
315-
InsightObjectAttributeType.GROUP -> TODO()
316-
InsightObjectAttributeType.VERSION -> TODO()
317-
InsightObjectAttributeType.PROJECT -> TODO()
318-
InsightObjectAttributeType.STATUS -> TODO()
314+
InsightObjectAttributeType.CONFLUENCE -> InsightAttribute.Confluence(attributeId, schema)
315+
InsightObjectAttributeType.GROUP -> InsightAttribute.Group(attributeId, schema)
316+
InsightObjectAttributeType.VERSION -> InsightAttribute.Version(attributeId, schema)
317+
InsightObjectAttributeType.PROJECT -> InsightAttribute.Project(attributeId, schema)
318+
InsightObjectAttributeType.STATUS -> InsightAttribute.Status(attributeId, schema)
319319
else -> internalError("Unsupported objectTypeAttributeBean.type (${attributeType})").bind()
320320
}
321321
}

kotlin-insight-client/kotlin-insight-client-http/src/main/kotlin/com/linkedplanet/kotlininsightclient/http/model/HttpEditModel.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,16 @@ internal fun InsightObject.getEditAttributes(): List<ObjectEditItemAttribute> =
5353
is InsightAttribute.Select -> attr.values
5454

5555
is InsightAttribute.Reference -> attr.referencedObjects.map { it.id.raw }
56-
is InsightAttribute.User -> attr.users.map { it.key } //TODO: needs a test
56+
is InsightAttribute.User -> attr.users.map { it.key }
5757

58-
is InsightAttribute.Group -> TODO()
59-
is InsightAttribute.Project -> TODO()
60-
is InsightAttribute.Status -> TODO()
61-
is InsightAttribute.Version -> TODO()
62-
is InsightAttribute.Confluence -> TODO()
63-
is InsightAttribute.Unknown -> TODO()
58+
// TODO support additional attribute types
59+
is InsightAttribute.Group -> emptyList()
60+
is InsightAttribute.Project -> emptyList()
61+
is InsightAttribute.Status -> emptyList()
62+
is InsightAttribute.Version -> emptyList()
63+
is InsightAttribute.Confluence -> emptyList()
64+
65+
is InsightAttribute.Unknown -> emptyList()
6466
}
6567

6668
ObjectEditItemAttribute(

kotlin-insight-client/kotlin-insight-client-sdk/src/main/kotlin/com/linkedplanet/kotlininsightclient/sdk/SdkInsightObjectOperator.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,13 @@ object SdkInsightObjectOperator : InsightObjectOperator {
225225
objectAttributeBeanFactory.createUserAttributeValueByKey(ota, *userKeys.toTypedArray())
226226
}
227227

228-
is InsightAttribute.Group -> TODO()
229-
is InsightAttribute.Project -> TODO()
230-
is InsightAttribute.Status -> TODO()
231-
is InsightAttribute.Version -> TODO()
232-
is InsightAttribute.Confluence -> TODO()
233-
is InsightAttribute.Unknown -> TODO()
228+
// TODO support additional attribute types
229+
is InsightAttribute.Group -> objectAttributeBeanFactory.createObjectAttributeBeanForObject(bean, ota)
230+
is InsightAttribute.Project -> objectAttributeBeanFactory.createObjectAttributeBeanForObject(bean, ota)
231+
is InsightAttribute.Status -> objectAttributeBeanFactory.createObjectAttributeBeanForObject(bean, ota)
232+
is InsightAttribute.Version -> objectAttributeBeanFactory.createObjectAttributeBeanForObject(bean, ota)
233+
is InsightAttribute.Confluence -> objectAttributeBeanFactory.createObjectAttributeBeanForObject(bean, ota)
234+
is InsightAttribute.Unknown -> objectAttributeBeanFactory.createObjectAttributeBeanForObject(bean, ota)
234235
}
235236
}
236237
bean.setObjectAttributeBeans(attributeBeans)
@@ -368,11 +369,11 @@ object SdkInsightObjectOperator : InsightObjectOperator {
368369
}
369370
InsightAttribute.User(attributeId, users, schema)
370371
}
371-
Type.CONFLUENCE -> TODO()
372-
Type.GROUP -> TODO()
373-
Type.VERSION -> TODO()
374-
Type.PROJECT -> TODO()
375-
Type.STATUS -> TODO()
372+
Type.CONFLUENCE -> InsightAttribute.Confluence(attributeId, schema)
373+
Type.GROUP -> InsightAttribute.Group(attributeId, schema)
374+
Type.VERSION -> InsightAttribute.Version(attributeId, schema)
375+
Type.PROJECT -> InsightAttribute.Project(attributeId, schema)
376+
Type.STATUS -> InsightAttribute.Status(attributeId, schema)
376377
else -> internalError("Unsupported objectTypeAttributeBean.type (${objectTypeAttributeBean.type})").bind()
377378
}
378379
}

0 commit comments

Comments
 (0)