package net.thucydides.core.matchers;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static org.fest.assertions.Assertions.assertThat;
public class WhenMatchingBeanUniqueness {
public class Person {
private final String firstName;
private final String lastName;
Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
Person billoddie;
Person billkidd;
@Before
public void create_test_data() {
billoddie = new Person("Bill", "Oddie");
billkidd = new Person("Bill", "Kidd");
}
@Test
public void should_detect_unique_field_values() {
List<Person> people = Arrays.asList(billkidd,billoddie);
BeanCollectionMatcher matcher = new BeanUniquenessMatcher("lastName");
assertThat(matcher.matches(people)).isTrue();
}
@Test
public void should_detect_duplicated_field_values() {
List<Person> people = Arrays.asList(billoddie,billoddie);
BeanCollectionMatcher matcher = new BeanUniquenessMatcher("lastName");
assertThat(matcher.matches(people)).isFalse();
}
@Test(expected = IllegalArgumentException.class)
public void should_check_for_valid_field_name() {
List<Person> people = Arrays.asList(billkidd,billoddie);
BeanCollectionMatcher matcher = new BeanUniquenessMatcher("doesNotExist");
assertThat(matcher.matches(people)).isTrue();
}
}