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 }