View Javadoc
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.mock;
31  
32  import com.jcabi.github.PullRef;
33  import com.jcabi.github.Repo;
34  import java.io.IOException;
35  import org.hamcrest.MatcherAssert;
36  import org.hamcrest.Matchers;
37  import org.junit.Test;
38  
39  /**
40   * Test case for {@link MkPullRef}.
41   *
42   * @author Chris Rebert (github@rebertia.com)
43   * @version $Id: c3bd8cfc85fd1a4154593899b79670178c0fca47 $
44   * @since 0.24
45   */
46  public final class MkPullRefTest {
47      /**
48       * Test ref.
49       */
50      private static final String REF = "awesome-branch";
51      /**
52       * Test commit SHA.
53       */
54      private static final String SHA =
55          "361bb23ed4c028914d45d53c3727c48b035ee643";
56      /**
57       * Test username.
58       */
59      private static final String USERNAME = "myrtle";
60  
61      /**
62       * MkPullRef can fetch its repo.
63       * @throws IOException If there is an I/O problem
64       */
65      @Test
66      public void fetchesRepo() throws IOException {
67          final MkStorage storage = new MkStorage.InFile();
68          final Repo repo = new MkGithub(storage, MkPullRefTest.USERNAME)
69              .randomRepo();
70          MatcherAssert.assertThat(
71              MkPullRefTest.pullRef(storage, repo).repo().coordinates(),
72              Matchers.equalTo(repo.coordinates())
73          );
74      }
75  
76      /**
77       * MkPullRef can fetch its ref name.
78       * @throws IOException If there is an I/O problem
79       */
80      @Test
81      public void fetchesRef() throws IOException {
82          MatcherAssert.assertThat(
83              pullRef().ref(),
84              Matchers.equalTo(MkPullRefTest.REF)
85          );
86      }
87  
88      /**
89       * MkPullRef can fetch its commit sha.
90       * @throws IOException If there is an I/O problem
91       */
92      @Test
93      public void fetchesSha() throws IOException {
94          MatcherAssert.assertThat(
95              pullRef().sha(),
96              Matchers.equalTo(MkPullRefTest.SHA)
97          );
98      }
99  
100     /**
101      * Returns an MkPullRef for testing.
102      * @return MkPullRef for testing
103      * @throws IOException If there is an I/O problem
104      */
105     private static PullRef pullRef() throws IOException {
106         final MkStorage storage = new MkStorage.InFile();
107         return new MkPullRef(
108             storage,
109             ((MkBranches) new MkGithub(storage, MkPullRefTest.USERNAME)
110                 .randomRepo()
111                 .branches()).create(MkPullRefTest.REF, MkPullRefTest.SHA)
112         );
113     }
114 
115     /**
116      * Returns a pull request ref for testing.
117      * @param storage Storage
118      * @param repo Repo to create the pull request ref in
119      * @return PullRef for testing
120      * @throws IOException If there is an I/O problem
121      */
122     private static PullRef pullRef(
123         final MkStorage storage,
124         final Repo repo
125     ) throws IOException {
126         return new MkPullRef(
127             storage,
128             ((MkBranches) repo.branches())
129                 .create(MkPullRefTest.REF, MkPullRefTest.SHA)
130         );
131     }
132 }