Unit testing custom parse class

Hello,

I want to unit test my custom parse classes. I am very very veryyyy suprised that there is not ONE SINGLE WORD about unit testing Custom Parse classes in the documentation.

Here is my Custom user class

@ParseClassName("User")
data class User(var userName: String, var password: String, var eMail: String) : ParseObject() {

@Inject constructor(): this("","","")

fun checkNameExists() = getQuery().whereEqualTo("name", userName).findInBackground() != null

fun checkEmailExists() = getQuery().whereEqualTo("email", eMail).findInBackground() != null

And here my test

class UserUnitTest {
val testUserCorrect = ParseObject.create(User::class.java)
val testUserWrong: User = ParseObject.create(User::class.java)

@Before
fun beforeEach() {}

@Test
fun Check_if_email_already_exists() {
    testUserCorrect.eMail = "[email protected]"
    testUserWrong.eMail = "[email protected]"

    val correct = testUserCorrect.checkEmailExists()
    val wrong = testUserWrong.checkEmailExists()

    assert(true) { correct }
    assert(false) { wrong }

}

Error Stack

java.lang.ClassCastException: com.parse.ParseObject cannot be cast to com.example.app.data.model.User

at com.example.app.UserUnitTest.<init>(UserUnitTest.kt:24)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:250)
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:260)
at org.junit.runners.BlockJUnit4ClassRunner$2.runReflectiveCall(BlockJUnit4ClassRunner.java:309)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
1 Like