@ -16,58 +16,23 @@
package com.google.samples.apps.nowinandroid.sync.workers
import android.util.Log
import androidx.test.platform.app.InstrumentationRegistry
import androidx.work.Configuration
import androidx.work.WorkInfo
import androidx.work.WorkManager
import androidx.work.testing.SynchronousExecutor
import androidx.work.testing.WorkManagerTestInitHelper
import org.junit.Before
import org.junit.Rule
import androidx.work.NetworkType
import androidx.work.OutOfQuotaPolicy
import org.junit.Test
import kotlin.test.assertEquals
// @HiltAndroidTest
class SyncWorkerTest {
@get : Rule ( order = 0 )
val hiltRule = HiltAndroidRule ( this )
private val context get ( ) = InstrumentationRegistry . getInstrumentation ( ) . context
@Before
fun setup ( ) {
val config = Configuration . Builder ( )
. setMinimumLoggingLevel ( Log . DEBUG )
. setExecutor ( SynchronousExecutor ( ) )
. build ( )
// Initialize WorkManager for instrumentation tests.
WorkManagerTestInitHelper . initializeTestWorkManager ( context , config )
}
@Test
fun testSyncWork ( ) {
// Create request
fun startUpSyncWork _buildsExpectedRequest ( ) {
val request = SyncWorker . startUpSyncWork ( )
val workManager = WorkManager . getInstance ( context )
val testDriver = WorkManagerTestInitHelper . getTestDriver ( context ) !!
// Enqueue and wait for result.
workManager . enqueue ( request ) . result . get ( )
// Get WorkInfo and outputData
val preRunWorkInfo = workManager . getWorkInfoById ( request . id ) . get ( )
// Assert
assertEquals ( WorkInfo . State . ENQUEUED , preRunWorkInfo ?. state )
// Tells the testing framework that the constraints have been met
testDriver . setAllConstraintsMet ( request . id )
val postRequirementWorkInfo = workManager . getWorkInfoById ( request . id ) . get ( )
assertEquals ( WorkInfo . State . RUNNING , postRequirementWorkInfo ?. state )
assertEquals ( DelegatingWorker :: class . qualifiedName , request . workSpec . workerClassName )
assertEquals ( SyncWorker :: class . delegatedData ( ) , request . workSpec . input )
assertEquals ( NetworkType . CONNECTED , request . workSpec . constraints . requiredNetworkType )
assertEquals ( true , request . workSpec . expedited )
assertEquals (
OutOfQuotaPolicy . RUN _AS _NON _EXPEDITED _WORK _REQUEST ,
request . workSpec . outOfQuotaPolicy ,
)
}
}