1 /**
2 * Copyright (c) 2013-2023, jcabi.com
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met: 1) Redistributions of source code must retain the above
8 * copyright notice, this list of conditions and the following
9 * disclaimer. 2) Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution. 3) Neither the name of the jcabi.com nor
13 * the names of its contributors may be used to endorse or promote
14 * products derived from this software without specific prior written
15 * permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
19 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21 * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28 * OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30 package com.jcabi.github;
31
32 import javax.json.Json;
33 import org.hamcrest.MatcherAssert;
34 import org.hamcrest.Matchers;
35 import org.junit.Test;
36 import org.mockito.Mockito;
37
38 /**
39 * Test case for {@link Milestone}.
40 * @author Paul Polischuk (ppol@ua.fm)
41 * @version $Id: 095c76af5d07288674b6b9a1f62689fa8b4415ab $
42 * @checkstyle MultipleStringLiterals (500 lines)
43 */
44 public class MilestoneTest {
45 /**
46 * Milestone.Smart can fetch title property from Milestone.
47 * @throws Exception If some problem inside
48 */
49 @Test
50 public final void fetchesTitle() throws Exception {
51 final Milestone milestone = Mockito.mock(Milestone.class);
52 Mockito.doReturn(
53 Json.createObjectBuilder()
54 .add("title", "this is some title")
55 .build()
56 ).when(milestone).json();
57 MatcherAssert.assertThat(
58 new Milestone.Smart(milestone).title(),
59 Matchers.notNullValue()
60 );
61 }
62
63 /**
64 * Milestone.Smart can fetch description property from Milestone.
65 * @throws Exception If some problem inside
66 */
67 @Test
68 public final void fetchesDescription() throws Exception {
69 final Milestone milestone = Mockito.mock(Milestone.class);
70 Mockito.doReturn(
71 Json.createObjectBuilder()
72 .add("description", "description of the milestone")
73 .build()
74 ).when(milestone).json();
75 MatcherAssert.assertThat(
76 new Milestone.Smart(milestone).description(),
77 Matchers.notNullValue()
78 );
79 }
80
81 /**
82 * Milestone.Smart can fetch state property from Milestone.
83 * @throws Exception If some problem inside
84 */
85 @Test
86 public final void fetchesState() throws Exception {
87 final Milestone milestone = Mockito.mock(Milestone.class);
88 Mockito.doReturn(
89 Json.createObjectBuilder()
90 .add("state", "state of the milestone")
91 .build()
92 ).when(milestone).json();
93 MatcherAssert.assertThat(
94 new Milestone.Smart(milestone).state(),
95 Matchers.notNullValue()
96 );
97 }
98
99 /**
100 * Milestone.Smart can fetch due_on property from Milestone.
101 * @throws Exception If some problem inside
102 */
103 @Test
104 public final void fetchesDueOn() throws Exception {
105 final Milestone milestone = Mockito.mock(Milestone.class);
106 Mockito.doReturn(
107 Json.createObjectBuilder()
108 .add("due_on", "2011-04-10T20:09:31Z")
109 .build()
110 ).when(milestone).json();
111 MatcherAssert.assertThat(
112 new Milestone.Smart(milestone).dueOn(),
113 Matchers.notNullValue()
114 );
115 }
116 }