diff --git a/app/src/test/java/com/d4rk/androidtutorials/java/startup/StartupInitializerTest.java b/app/src/test/java/com/d4rk/androidtutorials/java/startup/StartupInitializerTest.java new file mode 100644 index 00000000..afacd50f --- /dev/null +++ b/app/src/test/java/com/d4rk/androidtutorials/java/startup/StartupInitializerTest.java @@ -0,0 +1,37 @@ +package com.d4rk.androidtutorials.java.startup; + +import android.content.Context; + +import androidx.work.ExistingWorkPolicy; +import androidx.work.OneTimeWorkRequest; +import androidx.work.WorkManager; + +import org.junit.Test; +import org.mockito.MockedStatic; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.verify; + +public class StartupInitializerTest { + + @Test + public void schedule_enqueuesWorkWithKeepPolicy() { + Context context = mock(Context.class); + WorkManager workManager = mock(WorkManager.class); + + try (MockedStatic mockedWorkManager = mockStatic(WorkManager.class)) { + mockedWorkManager.when(() -> WorkManager.getInstance(context)).thenReturn(workManager); + + StartupInitializer.schedule(context); + + verify(workManager).enqueueUniqueWork( + eq("startup_init"), + eq(ExistingWorkPolicy.KEEP), + any(OneTimeWorkRequest.class) + ); + } + } +} diff --git a/app/src/test/java/com/d4rk/androidtutorials/java/startup/StartupWorkerTest.java b/app/src/test/java/com/d4rk/androidtutorials/java/startup/StartupWorkerTest.java new file mode 100644 index 00000000..506d0e5a --- /dev/null +++ b/app/src/test/java/com/d4rk/androidtutorials/java/startup/StartupWorkerTest.java @@ -0,0 +1,39 @@ +package com.d4rk.androidtutorials.java.startup; + +import android.content.Context; +import android.webkit.CookieManager; + +import androidx.work.ListenableWorker; +import androidx.work.WorkerParameters; + +import com.d4rk.androidtutorials.java.ads.AdUtils; + +import org.junit.Test; +import org.mockito.MockedStatic; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.when; + +public class StartupWorkerTest { + + @Test + public void doWork_initializesAdsAndCookiesAndReturnsSuccess() { + Context context = mock(Context.class); + when(context.getApplicationContext()).thenReturn(context); + WorkerParameters parameters = mock(WorkerParameters.class); + StartupWorker worker = new StartupWorker(context, parameters); + + try (MockedStatic mockedAdUtils = mockStatic(AdUtils.class); + MockedStatic mockedCookieManager = mockStatic(CookieManager.class)) { + mockedCookieManager.when(CookieManager::getInstance).thenReturn(mock(CookieManager.class)); + + ListenableWorker.Result result = worker.doWork(); + + mockedAdUtils.verify(() -> AdUtils.initialize(context)); + mockedCookieManager.verify(CookieManager::getInstance); + assertEquals(ListenableWorker.Result.success(), result); + } + } +}