package com.github.agiledon.sisyphus.junit;
import com.github.agiledon.sisyphus.domain.json.User;
import com.github.agiledon.sisyphus.exception.NotSupportedException;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import java.util.List;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsNot.not;
public class DataProviderTest {
@Rule
public DataProvider dataProvider = new DataProvider();
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
@DataResource(resourceName = "user.json", targetClass = User.class)
public void should_compose_User_data_with_json_format() {
User user = dataProvider.provideData();
assertThat(user, not(nullValue()));
assertThat(user.getName().getFirst(), is("Joe"));
}
@Test
@DataResource(resourceName = "userWithTemplate.json",
templateName = "template/user.template",
targetClass = User.class)
public void should_compose_user_data_by_parsing_template_file() {
User user = dataProvider.provideData();
assertThat(user, not(nullValue()));
assertThat(user.getName().getFirst(), is("Joe"));
assertThat(user.getName().getLast(), is("Sixpack"));
}
@Test
@DataResource(resourceName = "userWithMultiSections.json",
templateName = "template/user.template",
targetClass = User.class)
public void should_compose_user_data_list_by_parsing_template_file() {
List<User> users = dataProvider.provideDataList();
assertThat(users, not(nullValue()));
assertThat(users.get(0).getName().getFirst(), is("Joe"));
assertThat(users.get(0).getName().getLast(), is("Sixpack"));
assertThat(users.get(2).getName().getFirst(), is("Yi"));
assertThat(users.get(2).getName().getLast(), is("Zhang"));
}
@Test
@DataResource(resourceName = "userWithMultiSections.json",
targetClass = User.class)
public void should_throw_NotSupportException_if_missing_template_file_when_parse_to_list() {
expectedException.expect(NotSupportedException.class);
expectedException.expectMessage("Must provide template file name");
dataProvider.provideDataList();
}
}