import android.content.Context import androidx.test.core.app.ApplicationProvider import kotlinx.coroutines.test.runTest import org.junit.Assert.assertNotNull import org.junit.Assert.assertNull import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import ru.myitschool.work.core.Constants import ru.myitschool.work.data.AdminRepositoryImpl import ru.myitschool.work.data.local.CredentialsLocalDataSource import ru.myitschool.work.data.network.AdminNetworkDataSource import ru.myitschool.work.domain.admin.AdminRepository @RunWith(RobolectricTestRunner::class) class AdminRepositoryImplTest { private lateinit var context: Context private lateinit var repository: AdminRepository @Before fun setUp() { context = ApplicationProvider.getApplicationContext() CredentialsLocalDataSource.buildSource( context.getSharedPreferences( Constants.TOKEN_KEY, Context.MODE_PRIVATE ) ) repository = AdminRepositoryImpl( networkDataSource = AdminNetworkDataSource, localCredentialsLocalDataSource = CredentialsLocalDataSource.getInstance() ) } @Test fun `When user have admin permissions and blocked user exist process` () = runTest { CredentialsLocalDataSource.getInstance().updateToken("pivanov", "admin") assertNull(repository.blockUser("").exceptionOrNull()) } @Test fun `When user don not have admin permissions error` () = runTest { CredentialsLocalDataSource.getInstance().updateToken("", "") assertNotNull(repository.blockUser("").exceptionOrNull()) } }