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.UserEmails;
33  import java.util.Arrays;
34  import java.util.Collections;
35  import org.hamcrest.MatcherAssert;
36  import org.hamcrest.Matchers;
37  import org.junit.Test;
38  
39  /**
40   * Test case for {@link MkUserEmails}.
41   *
42   * @author Carlos Miranda (miranda.cma@gmail.com)
43   * @version $Id: 54e89828a3667de85f345e2d9a7d2d561f791721 $
44   * @since 0.8
45   */
46  public final class MkUserEmailsTest {
47  
48      /**
49       * MkUserEmails should be able to add emails to a user.
50       *
51       * @throws Exception if a problem occurs.
52       */
53      @Test
54      public void canAddEmails() throws Exception {
55          final UserEmails emails = new MkGithub().users().add("john").emails();
56          final String email = "john@nowhere.com";
57          final Iterable<String> added = emails.add(
58              Collections.singleton(email)
59          );
60          MatcherAssert.assertThat(
61              added,
62              Matchers.allOf(
63                  Matchers.<String>iterableWithSize(1),
64                  Matchers.hasItems(email)
65              )
66          );
67      }
68  
69      /**
70       * MkUserEmails should be able to remove emails of a user.
71       *
72       * @throws Exception if a problem occurs.
73       */
74      @Test
75      public void canRemoveEmails() throws Exception {
76          final UserEmails emails = new MkGithub().users().add("joe").emails();
77          final String removed = "joe@nowhere.com";
78          final String retained = "joseph@somewhere.net";
79          emails.add(
80              Arrays.asList(
81                  new String[]{removed, retained}
82              )
83          );
84          emails.remove(Collections.singleton(removed));
85          MatcherAssert.assertThat(
86              emails.iterate(),
87              Matchers.allOf(
88                  Matchers.<String>iterableWithSize(1),
89                  Matchers.hasItems(retained),
90                  Matchers.not(Matchers.hasItems(removed))
91              )
92          );
93      }
94  
95      /**
96       * MkUserEmails should be able to iterate emails of a user.
97       *
98       * @throws Exception if a problem occurs.
99       */
100     @Test
101     public void canIterateEmails() throws Exception {
102         final UserEmails emails = new MkGithub().users().add("matt").emails();
103         final String[] added = new String[]{
104             "matt@none.org",
105             "matthew@somewhere.net",
106         };
107         emails.add(Arrays.asList(added));
108         MatcherAssert.assertThat(
109             emails.iterate(),
110             Matchers.allOf(
111                 Matchers.<String>iterableWithSize(2),
112                 Matchers.hasItems(added)
113             )
114         );
115     }
116 
117     /**
118      * MkUserEmails can be represented in JSON format.
119      *
120      * @throws Exception if a problem occurs.
121      */
122     @Test
123     public void canRepresentAsJson() throws Exception {
124         final UserEmails emails = new MkGithub().users().add("jeff").emails();
125         final String email = "jeff@something.net";
126         emails.add(Collections.singleton(email));
127         MatcherAssert.assertThat(
128             emails.json().getString("email"),
129             Matchers.is(email)
130         );
131     }
132 
133 }