package com.ecwid.consul.v1;
import com.ecwid.consul.Utils;
import org.junit.Test;
import java.util.List;
import static com.ecwid.consul.v1.QueryParams.Builder;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.junit.Assert.*;
public class QueryParamsTest {
@Test
public void queryParamsBuilder_ShouldReturnAllDefaults_WhenNoValuesAdded() {
// Given
final ConsistencyMode EXPECTED_MODE = ConsistencyMode.DEFAULT;
final long EXPECTED_INDEX = -1;
final long EXPECTED_WAIT_TIME = -1;
final String EXPECTED_NEAR = null;
// When
QueryParams actual = Builder.builder().build();
// Then
assertNull(actual.getDatacenter());
assertEquals(actual.getConsistencyMode(), EXPECTED_MODE);
assertEquals(actual.getWaitTime(), EXPECTED_WAIT_TIME);
assertEquals(actual.getIndex(), EXPECTED_INDEX);
assertEquals(actual.getNear(), EXPECTED_NEAR);
}
@Test
public void queryParamsBuilder_ShouldReturnQueryParams_WithCorrectValuesApplied() {
// Given
final String EXPECTED_DATACENTER = "testDC";
final ConsistencyMode EXPECTED_MODE = ConsistencyMode.CONSISTENT;
final long EXPECTED_INDEX = 100;
final long EXPECTED_WAIT_TIME = 10000;
final String EXPECTED_NEAR = "_agent";
// When
QueryParams actual = Builder.builder()
.setDatacenter(EXPECTED_DATACENTER)
.setConsistencyMode(EXPECTED_MODE)
.setWaitTime(EXPECTED_WAIT_TIME)
.setIndex(EXPECTED_INDEX)
.setNear(EXPECTED_NEAR)
.build();
// Then
assertEquals(actual.getDatacenter(), EXPECTED_DATACENTER);
assertEquals(actual.getConsistencyMode(), EXPECTED_MODE);
assertEquals(actual.getIndex(), EXPECTED_INDEX);
assertEquals(actual.getWaitTime(), EXPECTED_WAIT_TIME);
assertEquals(actual.getNear(), EXPECTED_NEAR);
}
@Test
public void queryParamsToUrlParameters_ShouldContainSetQueryParams_WithCorrectValuesApplied() {
// Given
final String EXPECTED_DATACENTER = "testDC";
final ConsistencyMode EXPECTED_MODE = ConsistencyMode.CONSISTENT;
final long EXPECTED_WAIT = 1000L;
final long EXPECTED_INDEX = 2000L;
final String EXPECTED_NEAR = "_agent";
// When
List<String> urlParameters = Builder.builder()
.setDatacenter(EXPECTED_DATACENTER)
.setConsistencyMode(EXPECTED_MODE)
.setWaitTime(EXPECTED_WAIT)
.setIndex(EXPECTED_INDEX)
.setNear(EXPECTED_NEAR)
.build()
.toUrlParameters();
// Then
assertThat(urlParameters, hasItem("dc=" + EXPECTED_DATACENTER));
assertThat(urlParameters, hasItem(EXPECTED_MODE.name().toLowerCase()));
assertThat(urlParameters, hasItem("wait=" + Utils.toSecondsString(EXPECTED_WAIT)));
assertThat(urlParameters, hasItem("index=" + EXPECTED_INDEX));
assertThat(urlParameters, hasItem("near=" + EXPECTED_NEAR));
}
}