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.Github;
33  import com.jcabi.github.Organizations;
34  import java.util.Date;
35  import java.util.concurrent.TimeUnit;
36  import org.hamcrest.MatcherAssert;
37  import org.hamcrest.Matchers;
38  import org.junit.Test;
39  
40  /**
41   * Github organizations.
42   * @author Paul Polishchuk (ppol@ua.fm)
43   * @version $Id: 785468d7f27d28d3b017a2f634c9f7b73e86fb0c $
44   * @see <a href="https://developer.github.com/v3/orgs/">Organizations API</a>
45   * @since 0.24
46   */
47  public final class MkOrganizationsTest {
48      /**
49       * MkOrganizations can get specific organization.
50       * @throws Exception If some problem inside
51       */
52      @Test
53      public void getSingleOrganization() throws Exception {
54          final String login = "orgTestGet";
55          final MkOrganizations orgs = new MkOrganizations(
56              new MkStorage.InFile()
57          );
58          MatcherAssert.assertThat(
59              orgs.get(login),
60              Matchers.notNullValue()
61          );
62          MatcherAssert.assertThat(
63              orgs.get(login).json().getString("login"),
64              Matchers.equalTo(login)
65          );
66      }
67  
68      /**
69       * Organization created_at field should be variable.
70       * @throws Exception If some problem inside
71       */
72      @Test
73      public void testCreatedAt() throws Exception {
74          final String name = "testCreatedAt";
75          final MkOrganizations orgs = new MkOrganizations(
76              new MkStorage.InFile()
77          );
78          final String created = "created_at";
79          final Date early = new Github.Time(
80              orgs.get(name)
81                  .json()
82                  .getString(created)
83          ).date();
84          TimeUnit.SECONDS.sleep(1L);
85          final Date later = new Github.Time(
86              orgs.get(name)
87                  .json()
88                  .getString(created)
89          ).date();
90          MatcherAssert.assertThat(later, Matchers.greaterThanOrEqualTo(early));
91      }
92  
93      /**
94       * MkOrganizations can list the logged-in user's organizations.
95       * @throws Exception If some problem inside
96       */
97      @Test
98      public void iteratesCurrentUserOrganizations() throws Exception {
99          final Organizations orgs = new MkGithub().organizations();
100         orgs.get("orgTestIterate");
101         MatcherAssert.assertThat(
102             orgs.iterate(),
103             Matchers.not(Matchers.emptyIterable())
104         );
105     }
106 }