From ea866377bc637356de7dba4fd02561466764b8b9 Mon Sep 17 00:00:00 2001 From: kasun Date: Wed, 20 May 2026 17:36:31 +0200 Subject: [PATCH] test: add unit tests for HomeboxSearchProvider and SearchResponse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HomeboxSearchProviderTest verifies that ConnectionNotFoundException is thrown when no matching connection exists in the repository. SearchResponseTest covers the getExtra helper — null extra map, missing key, and a present key. Co-Authored-By: Claude Sonnet 4.6 --- .../app/search/HomeboxSearchProviderTest.java | 35 +++++++++++++++++++ .../vaessl/app/search/SearchResponseTest.java | 33 +++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 backend/src/test/java/com/vaessl/app/search/HomeboxSearchProviderTest.java create mode 100644 backend/src/test/java/com/vaessl/app/search/SearchResponseTest.java diff --git a/backend/src/test/java/com/vaessl/app/search/HomeboxSearchProviderTest.java b/backend/src/test/java/com/vaessl/app/search/HomeboxSearchProviderTest.java new file mode 100644 index 0000000..cdd8dac --- /dev/null +++ b/backend/src/test/java/com/vaessl/app/search/HomeboxSearchProviderTest.java @@ -0,0 +1,35 @@ +package com.vaessl.app.search; + +import static com.vaessl.app.Mockdata.*; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.when; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import com.vaessl.app.connection.ConnectionRepository; +import com.vaessl.app.exception.ConnectionNotFoundException; + +@ExtendWith(MockitoExtension.class) +class HomeboxSearchProviderTest { + + @Mock + private ConnectionRepository mockRepo; + + @InjectMocks + private HomeboxSearchProvider provider; + + @Test + void shouldReturnConnectionNotFoundException() { + + when(mockRepo.findByAppUrlAndUsername(MOCK_URL, MOCK_USER)).thenReturn(null); + + SearchRequest request = new SearchRequest(MOCK_URL, MOCK_USER, "test query", "HOMEBOX"); + Pageable pageable = PageRequest.of(0, 10); + assertThrows(ConnectionNotFoundException.class, + () -> provider.getSearchResults(request, pageable)); + } +} diff --git a/backend/src/test/java/com/vaessl/app/search/SearchResponseTest.java b/backend/src/test/java/com/vaessl/app/search/SearchResponseTest.java new file mode 100644 index 0000000..265abcd --- /dev/null +++ b/backend/src/test/java/com/vaessl/app/search/SearchResponseTest.java @@ -0,0 +1,33 @@ +package com.vaessl.app.search; + +import static com.vaessl.app.Mockdata.*; +import static org.assertj.core.api.Assertions.assertThat; +import java.util.Map; +import org.junit.jupiter.api.Test; + +class SearchResponseTest { + + @Test + void shouldReturnNullWhenExtraDataIsNull() { + SearchResponse response = new SearchResponse(MOCK_TITLE, MOCK_DESCRIPTION, null); + + assertThat(response.getExtra(null)).isNull(); + } + + @Test + void shouldReturnNullWhenExtraDataKeyIsMissing() { + + SearchResponse response = new SearchResponse(MOCK_TITLE, MOCK_DESCRIPTION, Map.of("key", "value")); + + assertThat(response.getExtra("missing")).isNull(); + } + + @Test + void shouldReturnExtraDataValue() { + + SearchResponse response = new SearchResponse(MOCK_TITLE, MOCK_DESCRIPTION, Map.of("key", "value")); + + assertThat(response.getExtra("key")).contains("value"); + + } +}