View Javadoc
1   /*
2    * SPDX-FileCopyrightText: Copyright (c) 2013-2025 Yegor Bugayenko
3    * SPDX-License-Identifier: MIT
4    */
5   package com.jcabi.github.mock;
6   
7   import com.jcabi.github.Coordinates;
8   import com.jcabi.github.Repo;
9   import java.io.IOException;
10  import org.hamcrest.MatcherAssert;
11  import org.hamcrest.Matchers;
12  import org.junit.jupiter.api.Test;
13  import org.xembly.Directives;
14  
15  /**
16   * Test case for {@link MkRepoCommit}.
17   * @since 0.8
18   */
19  final class MkRepoCommitTest {
20  
21      /**
22       * The fist test key.
23       */
24      private static final String SHA1 =
25          "6dcb09b5b57875f334f61aebed695e2e4193db5e";
26  
27      /**
28       * The second test key.
29       */
30      private static final String SHA2 =
31          "51cabb8e759852a6a40a7a2a76ef0afd4beef96d";
32  
33      /**
34       * MkRepoCommit can return repository.
35       * @throws IOException If some problem inside
36       */
37      @Test
38      void getRepo() throws IOException {
39          final MkStorage storage = new MkStorage.InFile();
40          final Repo repo = MkRepoCommitTest.repo(storage);
41          MatcherAssert.assertThat(
42              "Values are not equal",
43              new MkRepoCommit(
44                  storage, repo, MkRepoCommitTest.SHA1
45              ).repo(), Matchers.equalTo(repo)
46          );
47      }
48  
49      /**
50       * MkRepoCommit can return sha.
51       * @throws IOException If some problem inside
52       */
53      @Test
54      void getSha() throws IOException {
55          final MkStorage storage = new MkStorage.InFile();
56          MatcherAssert.assertThat(
57              "Values are not equal",
58              new MkRepoCommit(storage, MkRepoCommitTest.repo(storage), MkRepoCommitTest.SHA2).sha(),
59              Matchers.equalTo(MkRepoCommitTest.SHA2)
60          );
61      }
62  
63      @Test
64      void canCompareInstances() throws IOException {
65          final MkStorage storage = new MkStorage.InFile();
66          final Repo repoa = new MkRepo(
67              storage, "login1",
68              new Coordinates.Simple("test_login1", "test_repo1")
69          );
70          final Repo repob = new MkRepo(
71              storage, "login2",
72              new Coordinates.Simple("test_login2", "test_repo2")
73          );
74          final MkRepoCommit less =  new MkRepoCommit(
75              storage, repoa, MkRepoCommitTest.SHA1
76          );
77          final MkRepoCommit greater =  new MkRepoCommit(
78              storage, repob, MkRepoCommitTest.SHA2
79          );
80          MatcherAssert.assertThat(
81              "Value is not less than expected",
82              less.compareTo(greater),
83              Matchers.lessThan(0)
84          );
85          MatcherAssert.assertThat(
86              "Value is not greater than expected",
87              greater.compareTo(less),
88              Matchers.greaterThan(0)
89          );
90      }
91  
92      @Test
93      void canGetJson() throws IOException {
94          final MkStorage storage = new MkStorage.InFile();
95          storage.apply(
96              new Directives().xpath("/github").add("repos")
97                  .add("repo").attr("coords", "test_login/test_repo")
98                  .add("commits").add("commit").add("sha").set(MkRepoCommitTest.SHA1)
99          );
100         final MkRepoCommit commit = new MkRepoCommit(
101             storage, MkRepoCommitTest.repo(storage), MkRepoCommitTest.SHA1
102         );
103         MatcherAssert.assertThat(
104             "Value is null",
105             commit.json(), Matchers.notNullValue()
106         );
107     }
108 
109     @Test
110     void compareEqual() throws IOException {
111         final String sha = "c2c53d66948214258a26ca9ca845d7ac0c17f8e7";
112         final MkStorage storage = new MkStorage.InFile();
113         final Repo repo = MkRepoCommitTest.repo(storage);
114         final MkRepoCommit commit = new MkRepoCommit(storage, repo, sha);
115         final MkRepoCommit other = new MkRepoCommit(storage, repo, sha);
116         MatcherAssert.assertThat(
117             "Values are not equal",
118             commit.compareTo(other), Matchers.equalTo(0)
119         );
120         MatcherAssert.assertThat(
121             "Values are not equal",
122             other.compareTo(commit), Matchers.equalTo(0)
123         );
124     }
125 
126     @Test
127     void compareDifferent() throws IOException {
128         final MkStorage storage = new MkStorage.InFile();
129         final Repo repo = MkRepoCommitTest.repo(storage);
130         final MkRepoCommit commit = new MkRepoCommit(
131             storage, repo, "6dcd4ce23d88e2ee9568ba546c007c63d9131c1b"
132         );
133         final MkRepoCommit other = new MkRepoCommit(
134             storage, repo, "e9d71f5ee7c92d6dc9e92ffdad17b8bd49418f98"
135         );
136         MatcherAssert.assertThat(
137             "Assertion failed",
138             commit.compareTo(other), Matchers.not(0)
139         );
140         MatcherAssert.assertThat(
141             "Assertion failed",
142             other.compareTo(commit), Matchers.not(0)
143         );
144     }
145 
146     /**
147      * Create repository for test.
148      * @param storage The storage
149      * @return Repo
150      */
151     private static Repo repo(final MkStorage storage) {
152         final String login = "test_login";
153         return new MkRepo(
154             storage,
155             login,
156             new Coordinates.Simple(login, "test_repo")
157         );
158     }
159 }