package com.forter.contracts;
import static org.fest.assertions.api.Assertions.assertThat;
import com.forter.contracts.mocks.MockOptionalIntegerInput;
import com.fasterxml.jackson.core.TreeNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Optional;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.io.IOException;
/**
* Tests for {@link com.forter.contracts.ContractConverter}
*/
public class ContractConverterOptionalTest {
private ObjectMapper objectMapper;
private ContractFactory<MockOptionalIntegerInput> contractFactory;
private ContractConverter contractConverter;
@BeforeClass
public void setUpAllTests() {
objectMapper = new ObjectMapper();
contractFactory = new ContractFactory<>(MockOptionalIntegerInput.class);
}
@BeforeMethod
public void setUp() throws Exception {
contractConverter = ContractConverter.instance();
}
@Test
public void testConvertInteger() throws IOException {
TreeNode node = objectMapper.readTree("{\"optionalInteger\":123}");
MockOptionalIntegerInput input =
contractConverter.convertObjectNodeToContract((ObjectNode) node, contractFactory);
assertThat(input.optionalInteger).isEqualTo(Optional.of(123));
}
@Test
public void testConvertIntegerString() throws IOException {
TreeNode node = objectMapper.readTree("{\"optionalInteger\":\"123\"}");
MockOptionalIntegerInput input =
contractConverter.convertObjectNodeToContract((ObjectNode) node, contractFactory);
assertThat(input.optionalInteger).isEqualTo(Optional.of(123));
}
@Test
public void testConvertNullString() throws IOException {
TreeNode node = objectMapper.readTree("{\"optionalInteger\":\"null\"}");
MockOptionalIntegerInput input =
contractConverter.convertObjectNodeToContract((ObjectNode) node, contractFactory);
assertThat(input.optionalInteger).isEqualTo(Optional.<Integer>absent());
}
@Test
public void testConvertEmptyString() throws IOException {
TreeNode node = objectMapper.readTree("{\"optionalInteger\":\"\"}");
MockOptionalIntegerInput input =
contractConverter.convertObjectNodeToContract((ObjectNode) node, contractFactory);
assertThat(input.optionalInteger).isEqualTo(Optional.<Integer>absent());
}
@Test
public void testConvertNull() throws IOException {
TreeNode node = objectMapper.readTree("{\"optionalInteger\":null}");
MockOptionalIntegerInput input =
contractConverter.convertObjectNodeToContract((ObjectNode) node, contractFactory);
assertThat(input.optionalInteger).isEqualTo(Optional.<Integer>absent());
}
}