Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New ClassNameFormatter that handles formatting a valid class name #851

Merged
merged 1 commit into from Mar 14, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 13 additions & 0 deletions misk/src/main/kotlin/misk/web/formatter/ClassNameFormatter.kt
@@ -0,0 +1,13 @@
package misk.web.formatter

import javax.inject.Inject
import kotlin.reflect.KClass

class ClassNameFormatter @Inject constructor() {
fun <T : Any> format(kclass: KClass<T>): String {
return when (kclass.qualifiedName) {
null -> kclass.toString().split("class ").last()
else -> kclass.qualifiedName.toString()
}
}
}
53 changes: 53 additions & 0 deletions misk/src/test/kotlin/misk/web/formatter/ClassNameFormatterTest.kt
@@ -0,0 +1,53 @@
package misk.web.formatter

import com.google.common.base.CharMatcher
import misk.testing.MiskTest
import misk.web.NetworkChain
import misk.web.NetworkInterceptor
import misk.web.Response
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
import kotlin.test.assertNotNull
import kotlin.test.assertNull
import kotlin.test.assertTrue

@MiskTest(startService = false)
class ClassNameFormatterTest {
fun isValid(className: String) {
assertTrue(className.isNotBlank())
assertNotNull(className)
assertTrue(
CharMatcher.inRange('A', 'Z').or(CharMatcher.inRange('a', 'z')).matchesAnyOf(className))
}

@Test fun validQualifiedName() {
val formatted = ClassNameFormatter().format(ValidQualifiedNameClass::class)
isValid(formatted)
assertEquals(formatted, ValidQualifiedNameClass::class.qualifiedName.toString())
}

@Test fun missingQualifiedName() {
val noQualifiedNameClass = NoQualifiedNameFactory().create()
assertNull(noQualifiedNameClass::class.qualifiedName)

val formatted = ClassNameFormatter().format(noQualifiedNameClass::class)
isValid(formatted)
assertEquals(formatted, noQualifiedNameClass::class.toString().split("class ").last())
}
}

class ValidQualifiedNameClass {}

class NoQualifiedNameFactory {
fun create(): NetworkInterceptor {
return NoQualifiedNameClass
}

private companion object {
val NoQualifiedNameClass = object : NetworkInterceptor {
override fun intercept(chain: NetworkChain): Response<*> {
return Response("False")
}
}
}
}