-
Notifications
You must be signed in to change notification settings - Fork 26
/
ResourceReaderTest.java
73 lines (60 loc) · 3.09 KB
/
ResourceReaderTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.theoryinpractise.halbuilder;
import com.theoryinpractise.halbuilder.spi.Link;
import com.theoryinpractise.halbuilder.spi.ReadableResource;
import com.theoryinpractise.halbuilder.spi.ResourceException;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import static org.fest.assertions.Assertions.assertThat;
public class ResourceReaderTest {
private ResourceFactory resourceFactory = new ResourceFactory();
@DataProvider
public Object[][] provideResources() {
return new Object[][]{
{resourceFactory.readResource(new InputStreamReader(ResourceReaderTest.class.getResourceAsStream("example.xml")))},
{resourceFactory.readResource(new InputStreamReader(ResourceReaderTest.class.getResourceAsStream("example.json")))},
};
}
@DataProvider
public Object[][] provideSubResources() {
return new Object[][]{
{resourceFactory.readResource(new InputStreamReader(ResourceReaderTest.class.getResourceAsStream("exampleWithSubresource.xml")))},
{resourceFactory.readResource(new InputStreamReader(ResourceReaderTest.class.getResourceAsStream("exampleWithSubresource.json")))},
};
}
@Test(dataProvider = "provideResources")
public void testReader(ReadableResource resource) {
assertThat(resource.getResourceLink().getHref()).isEqualTo("https://example.com/api/customer/123456");
assertThat(resource.getNamespaces()).hasSize(2);
assertThat(resource.getProperties().get("name")).isEqualTo("Example Resource");
assertThat(resource.getCanonicalLinks()).hasSize(3);
assertThat(resource.getResources()).hasSize(0);
}
@Test(dataProvider = "provideResources")
public void testLinkAttributes(ReadableResource resource) {
Link parent = resource.getLinkByRel("ns:parent").get();
assertThat(parent.getHref()).isEqualTo("https://example.com/api/customer/1234");
assertThat(parent.getRel()).isEqualTo("ns:parent");
assertThat(parent.getName().get()).isEqualTo("bob");
assertThat(parent.getTitle().get()).isEqualTo("The Parent");
assertThat(parent.getHreflang().get()).isEqualTo("en");
}
@Test(dataProvider = "provideSubResources")
public void testSubReader(ReadableResource resource) {
assertThat(resource.getResourceLink().getHref()).isEqualTo("https://example.com/api/customer/123456");
assertThat(resource.getNamespaces()).hasSize(2);
assertThat(resource.getCanonicalLinks()).hasSize(3);
assertThat(resource.getResources()).hasSize(1);
assertThat(resource.getResources().iterator().next().getProperties().get("name")).isEqualTo("Example User");
}
@Test(expectedExceptions = ResourceException.class)
public void testUnknownFormat() {
resourceFactory.readResource(new StringReader("!!!"));
}
@Test(expectedExceptions = ResourceException.class)
public void testNullReader() {
resourceFactory.readResource((Reader) null);
}
}