package net.eusashead.bjugquerydsl.hateoas;
import java.lang.reflect.Method;
import java.sql.Date;
import java.util.Collection;
import net.eusashead.bjugquerydsl.data.entity.Customer;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.springframework.web.util.UriTemplate;
@RunWith(JUnit4.class)
public class EmbeddedResourceTest {
@Test
public void testCreation() throws Exception {
// Create test objects
Customer customer = new Customer(1, "email", "first", new Date(123456789l), "last");
Method accessor = customer.getClass().getMethod("getBaskets");
UriTemplate uriTemplate = new UriTemplate("/basket/{basketId}");
String name = "baskets";
// Create EmbeddedResource
EmbeddedResource er = new EmbeddedResource(name, uriTemplate, accessor);
// Test
Assert.assertEquals(name, er.getName());
Assert.assertEquals(accessor, er.getAccessor());
Assert.assertEquals(uriTemplate, er.getUriTemplate());
Assert.assertEquals(Collection.class, er.getType());
Assert.assertEquals(customer.getBaskets(), er.getValue(customer));
}
@Test(expected=IllegalArgumentException.class)
public void testNullName() throws SecurityException, NoSuchMethodException {
new EmbeddedResource(null, new UriTemplate("/basket/{basketId}"), Customer.class.getMethod("getBaskets"));
}
@Test(expected=IllegalArgumentException.class)
public void testEmptyName() throws SecurityException, NoSuchMethodException {
new EmbeddedResource("", new UriTemplate("/basket/{basketId}"), Customer.class.getMethod("getBaskets"));
}
@Test(expected=IllegalArgumentException.class)
public void testNullAccessor() {
new EmbeddedResource("name", new UriTemplate("/basket/{basketId}"), null);
}
@Test(expected=IllegalArgumentException.class)
public void testSimpleProperty() throws SecurityException, NoSuchMethodException {
new EmbeddedResource("customerId", new UriTemplate("/basket/{basketId}"), Customer.class.getMethod("getCustomerId"));
}
}