package com.softwaremill.common.util;
import org.apache.http.NameValuePair;
import org.testng.annotations.Test;
import static com.googlecode.catchexception.CatchException.catchException;
import static com.googlecode.catchexception.CatchException.caughtException;
import static org.assertj.core.api.Assertions.assertThat;
public class NameValuePairBuilderTest {
@Test
public void shouldNotAllowDuplicateNames() {
// Given
NameValuePairBuilder builder = new NameValuePairBuilder();
builder.addPair("unique", "value");
// When
catchException(builder).addPair("unique", "newValue");
// Then
assertThat(caughtException()).isExactlyInstanceOf(RuntimeException.class);
assertThat(caughtException()).hasMessage(NameValuePairBuilder.NOT_UNIQUE_KEY_ERROR + "unique");
}
@Test
public void shouldCreatePairsArray() {
// Given
NameValuePairBuilder builder = new NameValuePairBuilder();
// When
builder
.addPair("name1", "value1")
.addPair("name2", "value2");
NameValuePair[] nameValuePairs = builder.build();
// Then
assertThat(nameValuePairs).hasSize(2);
assertThat(nameValuePairs).extracting("name").contains("name1", "name2");
int indexOfName1 = 0;
int indexOfName2 = 1;
if (nameValuePairs[0].getName().equals("name2")) {
indexOfName1 = 1;
indexOfName2 = 0;
}
assertThat(nameValuePairs[indexOfName1].getName()).isEqualTo("name1");
assertThat(nameValuePairs[indexOfName1].getValue()).isEqualTo("value1");
assertThat(nameValuePairs[indexOfName2].getName()).isEqualTo("name2");
assertThat(nameValuePairs[indexOfName2].getValue()).isEqualTo("value2");
}
}