Skip to content

Commit 361ec8f

Browse files
smyrickdariuszkuc
authored andcommitted
feat: do not append duplicate input suffix (#157)
* feat: do not append duplicate suffix If a class was named SearchInput, we would map that to SearchInputInput. If devs are specifically naming it an input we should not duplicate the string * test: move test function
1 parent 429d5e9 commit 361ec8f

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/main/kotlin/com/expedia/graphql/generator/extensions/kClassExtensions.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import kotlin.reflect.full.isSubclassOf
1717
import kotlin.reflect.full.primaryConstructor
1818
import kotlin.reflect.full.superclasses
1919

20+
private const val INPUT_SUFFIX = "Input"
21+
2022
internal fun KClass<*>.getValidProperties(hooks: SchemaGeneratorHooks): List<KProperty<*>> =
2123
this.declaredMemberProperties
2224
.filter { hooks.isValidProperty(it) }
@@ -53,7 +55,7 @@ internal fun KClass<*>.getSimpleName(isInputClass: Boolean = false): String {
5355
val name = this.simpleName ?: throw CouldNotGetNameOfKClassException(this)
5456

5557
return when {
56-
isInputClass -> "${name}Input"
58+
isInputClass -> if (name.endsWith(INPUT_SUFFIX)) name else "$name$INPUT_SUFFIX"
5759
else -> name
5860
}
5961
}

src/test/kotlin/com/expedia/graphql/generator/extensions/KClassExtensionsTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ open class KClassExtensionsTest {
3232

3333
internal class MyInternalClass
3434

35+
class MyClassInput
36+
3537
protected class MyProtectedClass
3638

3739
class MyPublicClass
@@ -180,6 +182,7 @@ open class KClassExtensionsTest {
180182
@Test
181183
fun `test input class name`() {
182184
assertEquals("MyTestClassInput", MyTestClass::class.getSimpleName(true))
185+
assertEquals("MyClassInput", MyClassInput::class.getSimpleName(true))
183186
}
184187

185188
@Test

0 commit comments

Comments
 (0)