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 com.jcabi.github.OAuthScope.Scope; 33 import java.util.Collections; 34 import org.hamcrest.MatcherAssert; 35 import org.hamcrest.Matchers; 36 import org.junit.Test; 37 38 /** 39 * Integration test for {@link RtGistComments}. 40 * @author Giang Le (giang@vn-smartsolutions.com) 41 * @version $Id: 5cc95ddab60b289eea0e834d6f4cfb2de2610976 $ 42 * @see <a href="https://developer.github.com/v3/gists/comments/">Gist Comments API</a> 43 * @since 0.8 44 */ 45 @OAuthScope(Scope.GIST) 46 public final class RtGistCommentsITCase { 47 /** 48 * RtGistComments can create a comment. 49 * @throws Exception if some problem inside 50 */ 51 @Test 52 public void createComment() throws Exception { 53 final Gist gist = RtGistCommentsITCase.gist(); 54 final GistComments comments = gist.comments(); 55 final GistComment comment = comments.post("gist comment"); 56 MatcherAssert.assertThat( 57 new GistComment.Smart(comment).body(), 58 Matchers.startsWith("gist") 59 ); 60 comment.remove(); 61 gist.github().gists().remove(gist.identifier()); 62 } 63 64 /** 65 * RtGistComments can get a comment. 66 * @throws Exception if some problem inside 67 */ 68 @Test 69 public void getComment() throws Exception { 70 final Gist gist = RtGistCommentsITCase.gist(); 71 final GistComments comments = gist.comments(); 72 final GistComment comment = comments.post("test comment"); 73 MatcherAssert.assertThat( 74 comments.get(comment.number()), 75 Matchers.equalTo(comment) 76 ); 77 comment.remove(); 78 gist.github().gists().remove(gist.identifier()); 79 } 80 81 /** 82 * RtGistComments can iterate all gist comments. 83 * @throws Exception if some problem inside 84 */ 85 @Test 86 public void iterateComments() throws Exception { 87 final Gist gist = RtGistCommentsITCase.gist(); 88 final GistComments comments = gist.comments(); 89 final GistComment comment = comments.post("comment"); 90 MatcherAssert.assertThat( 91 comments.iterate(), 92 Matchers.hasItem(comment) 93 ); 94 comment.remove(); 95 gist.github().gists().remove(gist.identifier()); 96 } 97 98 /** 99 * Return gist to test. 100 * @return Gist 101 * @throws Exception If some problem inside 102 */ 103 private static Gist gist() throws Exception { 104 return new GithubIT() 105 .connect() 106 .gists() 107 .create( 108 Collections.singletonMap("file.txt", "file content"), false 109 ); 110 } 111 }