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 }