a4e70c063e8479012ab6d683360bb059cfd846e0
[Sone.git] / src / test / java / net / pterodactylus / sone / data / ProfileTest.java
1 /*
2  * Sone - FieldTest.java - Copyright © 2013 David Roden
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 package net.pterodactylus.sone.data;
19
20 import static com.google.common.base.Optional.of;
21 import static org.hamcrest.MatcherAssert.assertThat;
22 import static org.hamcrest.Matchers.contains;
23 import static org.hamcrest.Matchers.is;
24
25 import java.util.List;
26
27 import net.pterodactylus.sone.data.Profile.Field;
28
29 import com.google.common.base.Optional;
30 import org.junit.Test;
31
32 /**
33  * Unit test for {@link Profile}.
34  *
35  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
36  */
37 public class ProfileTest {
38
39         final Profile profile = new Profile((Sone) null);
40
41         @Test
42         public void testAddingAField() {
43                 profile.addField("TestField");
44                 Optional<Field> testField = profile.getFieldByName("TestField");
45                 assertThat(testField.isPresent(), is(true));
46                 assertThat(testField.get().getName(), is("TestField"));
47         }
48
49         @Test
50         public void testGettingAFieldByName() {
51                 profile.addField("TestField");
52                 Optional<Field> testField = profile.getFieldByName("TestField");
53                 assertThat(testField.isPresent(), is(true));
54         }
55
56         @Test
57         public void testGettingANonExistingFieldByName() {
58                 profile.addField("TestField");
59                 Optional<Field> testField = profile.getFieldByName("TestField2");
60                 assertThat(testField.isPresent(), is(false));
61         }
62
63         @Test
64         public void testGettingAFieldById() {
65                 profile.addField("TestField");
66                 Optional<Field> testField = profile.getFieldByName("TestField");
67                 testField = profile.getFieldById(testField.get().getId());
68                 assertThat(testField.isPresent(), is(true));
69         }
70
71         @Test
72         public void testGettingANonExistingFieldById() {
73                 Optional<Field> testField = profile.getFieldById("does not exist");
74                 assertThat(testField.isPresent(), is(false));
75         }
76
77         @Test
78         public void testRenamingAField() {
79                 profile.addField("TestField");
80                 Optional<Field> testField = profile.getFieldByName("TestField");
81                 profile.renameField(testField.get(), "RenamedField");
82                 Optional<Field> renamedField = profile.getFieldByName("RenamedField");
83                 assertThat(testField.get().getId(), is(renamedField.get().getId()));
84         }
85
86         @Test
87         public void testRenamingANonExistingField() {
88                 Field testField = profile.addField("TestField");
89                 profile.removeField(testField);
90                 profile.renameField(testField, "TestField2");
91                 Optional<Field> testField2 = profile.getFieldByName("TestField2");
92                 assertThat(testField2.isPresent(), is(false));
93         }
94
95         @Test
96         public void testChangingTheValueOfAField() {
97                 profile.addField("TestField");
98                 Optional<Field> testField = profile.getFieldByName("TestField");
99                 profile.setField(testField.get(), "Test");
100                 testField = profile.getFieldByName("TestField");
101                 assertThat(testField.get().getValue(), is("Test"));
102         }
103
104         @Test
105         public void testChangingTheValueOfANonExistingField() {
106                 Field testField = profile.addField("TestField");
107                 profile.removeField(testField);
108                 profile.setField(testField, "Test");
109                 Optional<Field> testField2 = profile.getFieldByName("TestField");
110                 assertThat(testField2.isPresent(), is(false));
111         }
112
113         @Test
114         public void testDeletingAField() {
115                 profile.addField("TestField");
116                 Optional<Field> testField = profile.getFieldByName("TestField");
117                 profile.removeField(testField.get());
118                 testField = profile.getFieldByName("TestField");
119                 assertThat(testField.isPresent(), is(false));
120         }
121
122         @Test
123         public void testDeletingANonExistingField() {
124                 Field testField = profile.addField("TestField");
125                 profile.removeField(testField);
126                 profile.removeField(testField);
127         }
128
129         @Test
130         public void testGettingFieldList() {
131                 Field firstField = profile.addField("First");
132                 Field secondField = profile.addField("Second");
133                 List<Field> fields = profile.getFields();
134                 assertThat(fields, contains(firstField, secondField));
135         }
136
137         @Test
138         public void testMovingAFieldUp() {
139                 Field firstField = profile.addField("First");
140                 Field secondField = profile.addField("Second");
141                 profile.moveFieldUp(secondField);
142                 List<Field> fields = profile.getFields();
143                 assertThat(fields, contains(secondField, firstField));
144         }
145
146         @Test
147         public void testMovingTheFirstFieldUp() {
148                 Field firstField = profile.addField("First");
149                 Field secondField = profile.addField("Second");
150                 profile.moveFieldUp(firstField);
151                 List<Field> fields = profile.getFields();
152                 assertThat(fields, contains(firstField, secondField));
153         }
154
155         @Test
156         public void testMovingAFieldDown() {
157                 Field firstField = profile.addField("First");
158                 Field secondField = profile.addField("Second");
159                 profile.moveFieldDown(firstField);
160                 List<Field> fields = profile.getFields();
161                 assertThat(fields, contains(secondField, firstField));
162         }
163
164         @Test
165         public void testMovingTheLastFieldDown() {
166                 Field firstField = profile.addField("First");
167                 Field secondField = profile.addField("Second");
168                 profile.moveFieldDown(secondField);
169                 List<Field> fields = profile.getFields();
170                 assertThat(fields, contains(firstField, secondField));
171         }
172
173         @Test
174         public void testModifyingAProfile() {
175                 profile.modify().setFirstName("First").setMiddleName("M.").setLastName("Last").setBirthYear(2013).setBirthMonth(10).setBirthDay(24).update();
176                 assertThat(profile.getFirstName(), is("First"));
177                 assertThat(profile.getMiddleName(), is("M."));
178                 assertThat(profile.getLastName(), is("Last"));
179                 assertThat(profile.getBirthYear(), is(2013));
180                 assertThat(profile.getBirthMonth(), is(10));
181                 assertThat(profile.getBirthDay(), is(24));
182         }
183
184         @Test
185         public void testSettingAnAvatar() {
186                 profile.setAvatar(of("avatar1"));
187                 assertThat(profile.getAvatar(), is("avatar1"));
188         }
189
190         @Test
191         public void testSettingNoAvatar() {
192                 profile.setAvatar(Optional.<String>absent());
193                 assertThat(profile.getAvatar(), is((String) null));
194         }
195
196 }