/core/src/test/java/com/pc/dailymile/domain/UserTest.java

http://dailymile-client.googlecode.com/ · Java · 151 lines · 136 code · 10 blank · 5 comment · 0 complexity · b45d66d190a64b58b92d14cd09853784 MD5 · raw file

  1. package com.pc.dailymile.domain;
  2. import static org.junit.Assert.assertEquals;
  3. import java.util.Set;
  4. import org.junit.Test;
  5. import com.pc.dailymile.utils.DailyMileUtil;
  6. public class UserTest {
  7. private static final String SAMPLE_STREAM =
  8. "{\n"
  9. + " \"entries\": [\n"
  10. + " {\n"
  11. + " \"id\": 232323232,\n"
  12. + " \"message\": \"great run\",\n"
  13. + " \"workout\": {\n"
  14. + " \"activity_type\": \"Running\",\n"
  15. + " \"distance\": {\n"
  16. + " \"value\": 5.5,\n"
  17. + " \"units\": \"miles\"\n"
  18. + " },\n"
  19. + " \"duration\": 23252332432,\n"
  20. + " \"felt\": \"great\",\n"
  21. + " \"calories\": 421\n"
  22. + " },\n"
  23. + " \"user\": {\n"
  24. + " \"display_name\": \"Ben W.\",\n"
  25. + " \"url\": \"http//www.dailymile.com/people/ben\",\n"
  26. + " \"photo_url\": \"http://media.dailymile.com/pictures/2.jpg\"\n"
  27. + " },\n"
  28. + " \"url\": \"http://www.dailymile.com/entries/23131323\",\n"
  29. + " \"at\": \"2010-07-21T02:20:24Z\"\n"
  30. + " },\n"
  31. + " {\n"
  32. + " \"id\": 232323233,\n"
  33. + " \"message\": \"hi, i'm just a note\",\n"
  34. + " \"user\": {\n"
  35. + " \"display_name\": \"Ben W.\",\n"
  36. + " \"url\": \"http//www.dailymile.com/people/ben\",\n"
  37. + " \"photo_url\": \"http://media.dailymile.com/pictures/2.jpg\"\n"
  38. + " },\n"
  39. + " \"url\": \"http://www.dailymile.com/entries/23131322\",\n"
  40. + " \"at\": \"2010-07-23T02:20:24Z\",\n"
  41. + " \"comments\": [\n"
  42. + " {\n"
  43. + " \"body\": \"wow, awesome note\",\n"
  44. + " \"created_at\": \"2010-07-23T20:57:08Z\",\n"
  45. + " \"user\": {\n"
  46. + " \"display_name\": \"Ben W.\",\n"
  47. + " \"url\": \"http//www.dailymile.com/people/ben\",\n"
  48. + " \"photo_url\": \"http://media.dailymile.com/pictures/2.jpg\"\n"
  49. + " }\n"
  50. + " }\n"
  51. + " ],\n"
  52. + " \"likes\": [\n"
  53. + " {\n"
  54. + " \"created_at\": \"2010-07-23T20:57:08Z\",\n"
  55. + " \"user\": {\n"
  56. + " \"display_name\": \"Ben W.\",\n"
  57. + " \"url\": \"http//www.dailymile.com/people/ben\",\n"
  58. + " \"photo_url\": \"http://media.dailymile.com/pictures/2.jpg\"\n"
  59. + " }\n"
  60. + " }\n"
  61. + " ]\n"
  62. + " },\n"
  63. + " { \n"
  64. + " \"id\": 232323234,\n"
  65. + " \"message\": \"beautiful photo i took along my run\",\n"
  66. + " \"media\": [\n"
  67. + " {\n"
  68. + " \"content\": {\n"
  69. + " \"type\": \"image\",\n"
  70. + " \"url\": \"http://s3.amazonaws.com/someimg.jpg\",\n"
  71. + " \"width\": 150,\n"
  72. + " \"height\": 150\n"
  73. + " },\n"
  74. + " \"preview\": {\n"
  75. + " \"type\": \"image\",\n"
  76. + " \"url\": \"http://s3.amazonaws.com/preview.jpg\",\n"
  77. + " \"height\": 75,\n"
  78. + " \"width\": 75\n"
  79. + " }\n"
  80. + " }\n"
  81. + " ],\n"
  82. + " \"user\": {\n"
  83. + " \"display_name\": \"Ben W.\",\n"
  84. + " \"url\": \"http//www.dailymile.com/people/ben\",\n"
  85. + " \"photo_url\": \"http://media.dailymile.com/pictures/2.jpg\"\n"
  86. + " },\n"
  87. + " \"url\": \"http://www.dailymile.com/entries/23131322\",\n"
  88. + " \"at\": \"2010-07-22T02:20:24Z\"\n"
  89. + " }, \n"
  90. + " { \n"
  91. + " \"id\": 232323234,\n"
  92. + " \"message\": \"awesome video i took today, really cool footage\",\n"
  93. + " \"media\": [\n"
  94. + " {\n"
  95. + " \"content\": {\n"
  96. + " \"type\": \"video\",\n"
  97. + " \"url\": \"http://s3.amazonaws.com/video.mp4\"\n"
  98. + " },\n"
  99. + " \"preview\": {\n"
  100. + " \"type\": \"image\",\n"
  101. + " \"url\": \"http://s3.amazonaws.com/video_thumbnail.jpg\",\n"
  102. + " \"height\": 120,\n"
  103. + " \"width\": 90\n"
  104. + " }\n"
  105. + " }\n"
  106. + " ],\n"
  107. + " \"user\": {\n"
  108. + " \"display_name\": \"Ben W.\",\n"
  109. + " \"url\": \"http//www.dailymile.com/people/ben\",\n"
  110. + " \"photo_url\": \"http://media.dailymile.com/pictures/2.jpg\"\n"
  111. + " },\n"
  112. + " \"url\": \"http://www.dailymile.com/entries/23131322\",\n"
  113. + " \"at\": \"2010-07-20T02:20:24Z\"\n"
  114. + " }\n"
  115. + " ]\n"
  116. + "}";
  117. @Test
  118. public void testMarshallStreamJSON() {
  119. UserStream stream = DailyMileUtil.getGson().fromJson(SAMPLE_STREAM, UserStream.class);
  120. Set<Entry> entries = stream.getEntries();
  121. assertEquals(4, entries.size());
  122. User u = new User();
  123. u.setName("Ben W.");
  124. u.setUrl("http//www.dailymile.com/people/ben");
  125. u.setImageUrl("http://media.dailymile.com/pictures/2.jpg");
  126. assertEquals(u, entries.toArray(new Entry[entries.size()])[0].getUser());
  127. }
  128. /**
  129. * For whatever reason the stream entries come back in some bizarre,
  130. * non-intuitive order. This test ensures that the entries get sorted in
  131. * time descending order after being retrieved from the service.
  132. */
  133. @Test
  134. public void testStreamSorting() {
  135. UserStream stream = DailyMileUtil.getGson().fromJson(SAMPLE_STREAM, UserStream.class);
  136. Set<Entry> entries = stream.getEntries();
  137. assertEquals(4, entries.size());
  138. Entry first = (Entry) entries.toArray()[0];
  139. assertEquals(Long.valueOf("232323233"), first.getId());
  140. }
  141. }