diff --git a/app/src/test/java/com/d4rk/androidtutorials/java/notifications/receivers/AppUsageNotificationReceiverTest.java b/app/src/test/java/com/d4rk/androidtutorials/java/notifications/receivers/AppUsageNotificationReceiverTest.java new file mode 100644 index 00000000..69775c11 --- /dev/null +++ b/app/src/test/java/com/d4rk/androidtutorials/java/notifications/receivers/AppUsageNotificationReceiverTest.java @@ -0,0 +1,42 @@ +package com.d4rk.androidtutorials.java.notifications.receivers; + +import android.content.Context; +import android.content.Intent; + +import androidx.work.OneTimeWorkRequest; +import androidx.work.WorkManager; + +import com.d4rk.androidtutorials.java.notifications.workers.AppUsageNotificationWorker; + +import org.junit.Test; +import org.mockito.ArgumentCaptor; +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.verify; + +public class AppUsageNotificationReceiverTest { + + @Test + public void onReceive_enqueuesOneTimeWorkRequestForAppUsageNotificationWorker() { + Context context = mock(Context.class); + Intent intent = mock(Intent.class); + WorkManager workManager = mock(WorkManager.class); + + try (MockedStatic mockedWorkManager = mockStatic(WorkManager.class)) { + mockedWorkManager.when(() -> WorkManager.getInstance(context)).thenReturn(workManager); + + AppUsageNotificationReceiver receiver = new AppUsageNotificationReceiver(); + receiver.onReceive(context, intent); + + ArgumentCaptor requestCaptor = ArgumentCaptor.forClass(OneTimeWorkRequest.class); + verify(workManager).enqueue(requestCaptor.capture()); + + OneTimeWorkRequest request = requestCaptor.getValue(); + assertEquals(AppUsageNotificationWorker.class.getName(), + request.getWorkSpec().workerClassName); + } + } +}