package pl.edu.icm.saos.api.services.links;
import org.junit.Before;
import org.junit.Test;
import org.springframework.hateoas.Link;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import static org.hamcrest.Matchers.*;
import static pl.edu.icm.saos.api.ApiConstants.*;
import static org.junit.Assert.*;
public class LinksBuilderTest {
private LinksBuilder linksBuilder = new LinksBuilder();
@Before
public void setUp(){
ServletRequestAttributes requestAttributes = new ServletRequestAttributes(new MockHttpServletRequest());
RequestContextHolder.setRequestAttributes(requestAttributes);
}
@Test
public void itShouldReturnUrlToGivenJudgment(){
//given
int someJudgmentId = 333;
//when
String actualUrl = linksBuilder.urlToJudgment(someJudgmentId);
//then
assertTrue(actualUrl.endsWith("/api/judgments/"+someJudgmentId));
}
@Test
public void itShouldReturnUrlToGivenDivision(){
//given
int someDivisionId = 123;
//when
String actualUrl = linksBuilder.urlToCcDivision(someDivisionId);
//then
assertTrue(actualUrl.endsWith("/api/ccDivisions/"+someDivisionId));
}
@Test
public void itShouldReturnUrlToGivenCourt(){
//given
int someCourtId = 321321;
//when
String actualUrl = linksBuilder.urlToCommonCourt(someCourtId);
//then
assertTrue(actualUrl.endsWith("/api/commonCourts/"+someCourtId));
}
@Test
public void itShouldReturnLinkToGivenJudgment(){
//given
int someJudgmentId = 454;
//when
Link link = linksBuilder.linkToJudgment(someJudgmentId);
//then
assertThat(link.getHref(), endsWith("/api/judgments/"+someJudgmentId));
assertThat(link.getRel(), is(SELF));
}
@Test
public void itShouldReturnLinkToGivenDivision(){
//given
int someDivisionId = 689;
//when
Link link = linksBuilder.linkToCcDivision(someDivisionId);
//then
assertThat(link.getHref(), endsWith("/api/ccDivisions/"+someDivisionId));
assertThat(link.getRel(), is(SELF));
}
@Test
public void itShouldReturnLinkToGivenCourt(){
//given
int someCourtId = 909;
//when
Link link = linksBuilder.linkToCommonCourt(someCourtId);
//then
assertThat(link.getHref(), endsWith("/api/commonCourts/"+someCourtId));
assertThat(link.getRel(), is(SELF));
}
@Test
public void itShouldReturnLinkToGivenCourtWithGivenRel(){
//given
int someCourtId = 234;
String someRelName = "someCourtRelName";
//when
Link link = linksBuilder.linkToCommonCourt(someCourtId, someRelName);
//then
assertThat(link.getHref(), endsWith("/api/commonCourts/"+someCourtId));
assertThat(link.getRel(), is(someRelName));
}
}