001package edu.pdx.cs.joy.airlineweb; 002 003import edu.pdx.cs.joy.ParserException; 004import edu.pdx.cs.joy.web.HttpRequestHelper; 005import org.junit.jupiter.api.Test; 006 007import java.io.IOException; 008import java.io.StringWriter; 009import java.util.Map; 010 011import static org.hamcrest.MatcherAssert.assertThat; 012import static org.hamcrest.Matchers.equalTo; 013import static org.mockito.ArgumentMatchers.eq; 014import static org.mockito.Mockito.mock; 015import static org.mockito.Mockito.when; 016 017/** 018 * A unit test for the REST client that demonstrates using mocks and 019 * dependency injection 020 */ 021public class AirlineRestClientTest { 022 023 @Test 024 void getAllDictionaryEntriesPerformsHttpGetWithNoParameters() throws ParserException, IOException { 025 Map<String, String> dictionary = Map.of("One", "1", "Two", "2"); 026 027 HttpRequestHelper http = mock(HttpRequestHelper.class); 028 when(http.get(eq(Map.of()))).thenReturn(dictionaryAsText(dictionary)); 029 030 AirlineRestClient client = new AirlineRestClient(http); 031 032 assertThat(client.getAllDictionaryEntries(), equalTo(dictionary)); 033 } 034 035 private HttpRequestHelper.Response dictionaryAsText(Map<String, String> dictionary) { 036 StringWriter writer = new StringWriter(); 037 new TextDumper(writer).dump(dictionary); 038 039 return new HttpRequestHelper.Response(writer.toString()); 040 } 041}