2 * Sone - FieldTest.java - Copyright © 2013 David Roden
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.
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.
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/>.
18 package net.pterodactylus.sone.data;
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;
25 import java.util.List;
27 import net.pterodactylus.sone.data.Profile.Field;
29 import com.google.common.base.Optional;
30 import org.junit.Test;
33 * Unit test for {@link Profile}.
35 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
37 public class ProfileTest {
39 final Profile profile = new Profile((Sone) null);
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"));
50 public void testGettingAFieldByName() {
51 profile.addField("TestField");
52 Optional<Field> testField = profile.getFieldByName("TestField");
53 assertThat(testField.isPresent(), is(true));
57 public void testGettingANonExistingFieldByName() {
58 profile.addField("TestField");
59 Optional<Field> testField = profile.getFieldByName("TestField2");
60 assertThat(testField.isPresent(), is(false));
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));
72 public void testGettingANonExistingFieldById() {
73 Optional<Field> testField = profile.getFieldById("does not exist");
74 assertThat(testField.isPresent(), is(false));
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()));
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));
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"));
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));
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));
123 public void testDeletingANonExistingField() {
124 Field testField = profile.addField("TestField");
125 profile.removeField(testField);
126 profile.removeField(testField);
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));
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));
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));
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));
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));
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));
185 public void testSettingAnAvatar() {
186 profile.setAvatar(of("avatar1"));
187 assertThat(profile.getAvatar(), is("avatar1"));
191 public void testSettingNoAvatar() {
192 profile.setAvatar(Optional.<String>absent());
193 assertThat(profile.getAvatar(), is((String) null));