View Javadoc

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          // get without expansion
99          Player player = client.resource(builder.build()).path("player").path("2").get(Player.class);
100         Assert.assertNotNull(player.getRecord());
101         // now expand it
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         // get without expansion
110         Player player = client.resource(builder.build()).path("player").path("1").get(Player.class);
111         Assert.assertNull(player.getRecord());
112         // now expand it
113         player = client.resource(builder.param("expand", "record").build()).path("player").path("1").get(Player.class);
114         Assert.assertNull(player.getRecord());
115     }
116 
117 }