Skip to content

Commit

Permalink
CND-195-import api and unit test (#309)
Browse files Browse the repository at this point in the history
* cnd-195-import api and unit test

* fix code smells
  • Loading branch information
snehaasjournal authored Feb 18, 2025
1 parent 8c33595 commit 4fc452b
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import gov.cdc.nbs.deduplication.algorithm.model.MatchingConfigRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
Expand All @@ -17,7 +18,7 @@ public class AlgorithmController {

private static final Logger log = LoggerFactory.getLogger(AlgorithmController.class);

public AlgorithmController(final AlgorithmService algorithmService) {
public AlgorithmController(AlgorithmService algorithmService) {
this.algorithmService = algorithmService;
}

Expand All @@ -41,4 +42,10 @@ public Map<String, List<Pass>> getMatchingConfiguration() {
public void updateAlgorithm(@RequestBody MatchingConfigRequest request) {
algorithmService.updateDibbsConfigurations(request);
}

@PostMapping("/import-configuration")
public ResponseEntity<String> importConfiguration(@RequestBody MatchingConfigRequest configRequest) {
algorithmService.saveMatchingConfiguration(configRequest);
return ResponseEntity.ok("Configuration imported successfully.");
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
package gov.cdc.nbs.deduplication.algorithm;

import com.fasterxml.jackson.databind.ObjectMapper;
import gov.cdc.nbs.deduplication.algorithm.dto.Pass;
import gov.cdc.nbs.deduplication.algorithm.model.MatchingConfigRequest;
import org.junit.jupiter.api.BeforeEach;
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.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;

import java.util.List;
import java.util.Map;
Expand All @@ -23,6 +30,16 @@ class AlgorithmControllerTest {
@InjectMocks
private AlgorithmController algorithmController;

private ObjectMapper objectMapper;

private MockMvc mockMvc;

@BeforeEach
void setUp() {
objectMapper = new ObjectMapper();
mockMvc = MockMvcBuilders.standaloneSetup(algorithmController).build();
}

@Test
void testConfigureMatching() {
Map<String, Boolean> blockingCriteria = Map.of(
Expand Down Expand Up @@ -109,4 +126,28 @@ void testUpdateAlgorithm() {

verify(algorithmService, times(1)).updateDibbsConfigurations(request);
}
}

@Test
void testImportConfiguration() throws Exception {
// Prepare mock data
MatchingConfigRequest mockConfigRequest = new MatchingConfigRequest(
"Test Label",
"Test Description",
true,
true,
List.of()
);

doNothing().when(algorithmService).saveMatchingConfiguration(mockConfigRequest);

String jsonRequest = objectMapper.writeValueAsString(mockConfigRequest);

mockMvc.perform(MockMvcRequestBuilders.post("/api/deduplication/import-configuration")
.contentType(MediaType.APPLICATION_JSON)
.content(jsonRequest))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("Configuration imported successfully."));

verify(algorithmService).saveMatchingConfiguration(mockConfigRequest);
}
}

0 comments on commit 4fc452b

Please sign in to comment.