/*
Copyright 2015 CrushPaper.com.
This file is part of CrushPaper.
CrushPaper is free software: you can redistribute it and/or modify
it under the terms of version 3 of the GNU Affero General Public
License as published by the Free Software Foundation.
CrushPaper is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with CrushPaper. If not, see <http://www.gnu.org/licenses/>.
*/
package com.crushpaper;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/** Tests modifying an entry. */
public class DbModifyEntryTest extends DbLogicTestBase {
// edit root
@Test
public void test1() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1") });
final TestEntrySet expectedAfter = new TestEntrySet(
new TestEntry[] { new TestEntry("2") });
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
final String nodeToEditId = before.getIdForValue("1");
final Entry editedNode = dbLogic.editEntry(user,
nodeToEditId, "2", null, false, 2L, false, errors);
assertNotNull(editedNode);
assertFalse(errors.hasErrors());
final TestEntrySet actualAfter = finalAssertions(user, expectedAfter);
final String editedNodeId = actualAfter.getIdForValue("2");
assertEquals(editedNodeId, nodeToEditId);
assertEquals(2L, editedNode.getModTime());
}
// edit non root
@Test
public void test2() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1", new TestEntry[] { new TestEntry("2") }) });
final TestEntrySet expectedAfter = new TestEntrySet(
new TestEntry[] { new TestEntry("1",
new TestEntry[] { new TestEntry("3") }) });
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
final String nodeToEditId = before.getIdForValue("2");
final Entry editedNode = dbLogic.editEntry(user,
nodeToEditId, "3", "", false, 2L, false, errors);
assertNotNull(editedNode);
assertFalse(errors.hasErrors());
final TestEntrySet actualAfter = finalAssertions(user, expectedAfter);
final String editedNodeId = actualAfter.getIdForValue("3");
assertEquals(editedNodeId, nodeToEditId);
assertEquals(2L, editedNode.getModTime());
}
@Test
public void test3() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1") });
final TestEntrySet expectedAfter = before;
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
final String nodeToEditId = before.getIdForValue("2");
assertNull(dbLogic.editEntry(null, nodeToEditId, "2", "",
false, 2L, false, errors));
assertTrue(errors.compare(errorMessages.errorUserIsNull()));
finalAssertions(user, expectedAfter);
}
@Test
public void test4() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1") });
final TestEntrySet expectedAfter = before;
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
final String nodeToEditId = before.getIdForValue("2");
assertNull(dbLogic.editEntry(user, nodeToEditId, "2", "",
false, null, false, errors));
assertTrue(errors.compare(errorMessages.errorModTimeIsNull()));
finalAssertions(user, expectedAfter);
}
@Test
public void test5() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1") });
final TestEntrySet expectedAfter = before;
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
final String nodeToEditId = before.getIdForValue("2");
assertNull(dbLogic
.editEntry(
user,
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"2", "", false, 2L, false, errors));
assertTrue(errors.compare(errorMessages.errorIdIsInvalid()));
finalAssertions(user, expectedAfter);
}
@Test
public void test6() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1") });
final TestEntrySet expectedAfter = before;
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
final String nodeToEditId = before.getIdForValue("2");
assertNull(dbLogic.editEntry(user, dbLogic
.getIdGenerator().getAnotherId(), "2", "", false, 2L,
false, errors));
assertTrue(errors.compare(errorMessages
.errorTheEntryCouldNotBeFound()));
finalAssertions(user, expectedAfter);
}
}