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