1 package it.com.atlassian.plugins.rest.sample.expansion;
2
3 import com.atlassian.plugins.rest.sample.expansion.UriBuilder;
4 import com.atlassian.plugins.rest.sample.expansion.entity.Game;
5 import com.atlassian.plugins.rest.sample.expansion.entity.Player;
6 import com.sun.jersey.api.client.Client;
7 import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
8 import junit.framework.Assert;
9 import org.junit.Before;
10 import org.junit.Test;
11
12 import static org.hamcrest.Matchers.is;
13 import static org.hamcrest.Matchers.notNullValue;
14 import static org.junit.Assert.assertEquals;
15 import static org.junit.Assert.assertNull;
16 import static org.junit.Assert.assertThat;
17
18
19
20 public class ExpansionTest {
21 public static final int POINTS_SCORED = 513;
22 private UriBuilder builder;
23 private Client client;
24
25 @Before
26 public void setUp() {
27 client = Client.create();
28 client.addFilter(new HTTPBasicAuthFilter("admin", "admin"));
29 builder = UriBuilder.create().path("rest").path("ex").path("1");
30 }
31
32 @Test
33 public void testGetGameWithNonExpandedPlayers() {
34 final Game game = client.resource(builder.build()).path("game").get(Game.class);
35 assertEquals("Rugby", game.getName());
36 assertNull(game.getPlayers().getPlayers());
37 assertEquals(5, game.getPlayers().getMaxResults());
38 assertEquals(10, game.getPlayers().getSize());
39 assertNull(game.getPlayers().getStartIndex());
40 }
41
42 @Test
43 public void testGetGameWithExpandedPlayers() {
44 final Game game = client.resource(builder.build()).path("game").queryParam("expand", "players").get(Game.class);
45 assertEquals("Rugby", game.getName());
46 assertEquals(5, game.getPlayers().getPlayers().size());
47 assertEquals(5, game.getPlayers().getMaxResults());
48 assertEquals(10, game.getPlayers().getSize());
49 assertEquals(0, game.getPlayers().getStartIndex().intValue());
50
51 assertEquals(0, game.getPlayers().getPlayers().get(0).getId());
52 assertEquals(4, game.getPlayers().getPlayers().get(4).getId());
53 }
54
55 @Test
56 public void testGetGameWithExpandedPlayersAndOffset() {
57 final Game game = client.resource(builder.build()).path("game").queryParam("expand", "players[3:]").get(Game.class);
58 assertEquals("Rugby", game.getName());
59 assertEquals(5, game.getPlayers().getPlayers().size());
60 assertEquals(5, game.getPlayers().getMaxResults());
61 assertEquals(10, game.getPlayers().getSize());
62 assertEquals(3, game.getPlayers().getStartIndex().intValue());
63
64 assertEquals(3, game.getPlayers().getPlayers().get(0).getId());
65 assertEquals(7, game.getPlayers().getPlayers().get(4).getId());
66 }
67
68 @Test
69 public void testGetGameWithExpandedPlayersAndOffsetOutOfBounds() {
70 final Game game = client.resource(builder.build()).path("game").queryParam("expand", "players[12:]").get(Game.class);
71 assertEquals("Rugby", game.getName());
72 assertNull(game.getPlayers().getPlayers());
73 assertEquals(5, game.getPlayers().getMaxResults());
74 assertEquals(10, game.getPlayers().getSize());
75 assertNull(game.getPlayers().getStartIndex());
76 }
77
78 @Test
79 public void testGetPlayerNames() {
80 final Player player1 = client.resource(builder.build()).path("player").path("0").get(Player.class);
81 final Player player2 = client.resource(builder.build()).path("player").path("1").get(Player.class);
82 assertEquals("Adam Ashley-Cooper", player1.getFullName());
83 assertEquals("Matt Giteau", player2.getFullName());
84 }
85
86 @Test
87 public void testGetPlayerWithExpandedMultipleSubItemsSamePrefix() {
88 final Player player = client.resource(builder.param("expand", "record.subRecord1,record.subRecord2").build()).path("player").path("2").get(Player.class);
89 assertThat(player.getRecord().getSubRecord1(), notNullValue());
90 assertThat(player.getRecord().getSubRecord2(), notNullValue());
91
92 assertThat(player.getRecord().getSubRecord1().getPointsScored(), is(POINTS_SCORED / 2));
93 assertThat(player.getRecord().getSubRecord2().getPointsScored(), is(POINTS_SCORED / 2));
94 }
95
96 @Test
97 public void testPlayerWithRecordCanBeExpanded() {
98
99 Player player = client.resource(builder.build()).path("player").path("2").get(Player.class);
100 Assert.assertNotNull(player.getRecord());
101
102 player = client.resource(builder.param("expand", "record").build()).path("player").path("2").get(Player.class);
103 Assert.assertNotNull(player.getRecord());
104 Assert.assertEquals((Integer) POINTS_SCORED, player.getRecord().getPointsScored());
105 }
106
107 @Test
108 public void testPlayerWithNoRecordCanNotBeExpanded() {
109
110 Player player = client.resource(builder.build()).path("player").path("1").get(Player.class);
111 Assert.assertNull(player.getRecord());
112
113 player = client.resource(builder.param("expand", "record").build()).path("player").path("1").get(Player.class);
114 Assert.assertNull(player.getRecord());
115 }
116
117 }