From 58dd02edf40f6e312ce6ba093cf1d09d79a73c64 Mon Sep 17 00:00:00 2001 From: Mihai-Cristian Condrea Date: Mon, 15 Sep 2025 20:27:15 +0300 Subject: [PATCH] Add About screen unit tests --- .../about/GetCurrentYearUseCaseTest.java | 25 ++++++++++++ .../about/GetVersionStringUseCaseTest.java | 25 ++++++++++++ .../ui/screens/about/AboutViewModelTest.java | 40 +++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 app/src/test/java/com/d4rk/androidtutorials/java/domain/about/GetCurrentYearUseCaseTest.java create mode 100644 app/src/test/java/com/d4rk/androidtutorials/java/domain/about/GetVersionStringUseCaseTest.java create mode 100644 app/src/test/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutViewModelTest.java diff --git a/app/src/test/java/com/d4rk/androidtutorials/java/domain/about/GetCurrentYearUseCaseTest.java b/app/src/test/java/com/d4rk/androidtutorials/java/domain/about/GetCurrentYearUseCaseTest.java new file mode 100644 index 00000000..46521893 --- /dev/null +++ b/app/src/test/java/com/d4rk/androidtutorials/java/domain/about/GetCurrentYearUseCaseTest.java @@ -0,0 +1,25 @@ +package com.d4rk.androidtutorials.java.domain.about; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.d4rk.androidtutorials.java.data.repository.AboutRepository; + +import org.junit.Test; + +public class GetCurrentYearUseCaseTest { + + @Test + public void invokeReturnsRepositoryCurrentYear() { + AboutRepository repository = mock(AboutRepository.class); + when(repository.getCurrentYear()).thenReturn("2030"); + GetCurrentYearUseCase useCase = new GetCurrentYearUseCase(repository); + + String result = useCase.invoke(); + + assertEquals("2030", result); + verify(repository).getCurrentYear(); + } +} diff --git a/app/src/test/java/com/d4rk/androidtutorials/java/domain/about/GetVersionStringUseCaseTest.java b/app/src/test/java/com/d4rk/androidtutorials/java/domain/about/GetVersionStringUseCaseTest.java new file mode 100644 index 00000000..050adc9d --- /dev/null +++ b/app/src/test/java/com/d4rk/androidtutorials/java/domain/about/GetVersionStringUseCaseTest.java @@ -0,0 +1,25 @@ +package com.d4rk.androidtutorials.java.domain.about; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.d4rk.androidtutorials.java.data.repository.AboutRepository; + +import org.junit.Test; + +public class GetVersionStringUseCaseTest { + + @Test + public void invokeReturnsRepositoryVersionString() { + AboutRepository repository = mock(AboutRepository.class); + when(repository.getVersionString()).thenReturn("v9.9.9"); + GetVersionStringUseCase useCase = new GetVersionStringUseCase(repository); + + String result = useCase.invoke(); + + assertEquals("v9.9.9", result); + verify(repository).getVersionString(); + } +} diff --git a/app/src/test/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutViewModelTest.java b/app/src/test/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutViewModelTest.java new file mode 100644 index 00000000..8b4931b3 --- /dev/null +++ b/app/src/test/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutViewModelTest.java @@ -0,0 +1,40 @@ +package com.d4rk.androidtutorials.java.ui.screens.about; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.d4rk.androidtutorials.java.domain.about.GetCurrentYearUseCase; +import com.d4rk.androidtutorials.java.domain.about.GetVersionStringUseCase; + +import org.junit.Test; + +public class AboutViewModelTest { + + @Test + public void getVersionStringDelegatesToUseCase() { + GetVersionStringUseCase versionUseCase = mock(GetVersionStringUseCase.class); + GetCurrentYearUseCase currentYearUseCase = mock(GetCurrentYearUseCase.class); + when(versionUseCase.invoke()).thenReturn("v1.2.3 (45)"); + AboutViewModel viewModel = new AboutViewModel(versionUseCase, currentYearUseCase); + + String result = viewModel.getVersionString(); + + assertEquals("v1.2.3 (45)", result); + verify(versionUseCase).invoke(); + } + + @Test + public void getCurrentYearDelegatesToUseCase() { + GetVersionStringUseCase versionUseCase = mock(GetVersionStringUseCase.class); + GetCurrentYearUseCase currentYearUseCase = mock(GetCurrentYearUseCase.class); + when(currentYearUseCase.invoke()).thenReturn("2024"); + AboutViewModel viewModel = new AboutViewModel(versionUseCase, currentYearUseCase); + + String result = viewModel.getCurrentYear(); + + assertEquals("2024", result); + verify(currentYearUseCase).invoke(); + } +}