/*
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.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
import org.junit.Ignore;
import org.junit.Test;
/** Tests restoring JSON for a user into the DB. */
public class DbRestoreJsonForUserTest extends DbLogicTestBase {
private InputStreamReader getJsonStreamReader(String json) {
return new InputStreamReader(new ByteArrayInputStream(json.getBytes()));
}
@Ignore
@Test
public void test1() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] {
new TestEntry("1"), new TestEntry("2"), });
final String json = "{ \"entries\": [ { \"type\": \"note\", \"note\": \"2\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertTrue(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertFalse(errors.hasErrors());
finalAssertions(user, expectedAfter);
}
@Ignore
@Test
public void test2() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] {
new TestEntry("1"), new TestEntry("2"), new TestEntry("3"), });
final String json = "{ \"entries\": [ { \"type\":\"note\", \"note\":\"2\" }, "
+ "{ \"type\":\"note\", \"note\":\"3\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertTrue(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertFalse(errors.hasErrors());
finalAssertions(user, expectedAfter);
}
@Ignore
@Test
public void test3() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] {
new TestEntry("1"),
new TestEntry("2", new TestEntry[] { new TestEntry("3"), }) });
final String json = "{ \"entries\": [ { \"id\":\"A\", \"type\":\"note\", \"note\":\"2\" }, "
+ "{ \"parentId\":\"A\", \"type\":\"note\", \"note\":\"3\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertTrue(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertFalse(errors.hasErrors());
finalAssertions(user, expectedAfter);
}
@Ignore
@Test
public void test4() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] {
new TestEntry("1"),
new TestEntry("2", new TestEntry[] { new TestEntry("3"), }) });
final String json = "{ \"entries\": [ { \"parentId\":\"A\", \"type\":\"note\", \"note\":\"3\" }, "
+ "{ \"id\":\"A\", \"type\":\"note\", \"note\":\"2\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertTrue(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertFalse(errors.hasErrors());
finalAssertions(user, expectedAfter);
}
@Ignore
@Test
public void test5() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] {
new TestEntry("1"),
new TestEntry("2", new TestEntry[] { new TestEntry("3"),
new TestEntry("4"), }) });
final String json = "{ \"entries\": [ { \"id\":\"A\", \"type\":\"note\", \"note\":\"2\" }, "
+ "{ \"parentId\":\"A\", \"id\":\"B\", \"type\":\"note\", \"note\":\"3\", \"nextSiblingId\":\"C\" }, "
+ "{ \"parentId\":\"A\", \"id\":\"C\", \"type\":\"note\", \"note\":\"4\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertTrue(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertFalse(errors.hasErrors());
finalAssertions(user, expectedAfter);
}
@Ignore
@Test
public void test6() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] {
new TestEntry("1"),
new TestEntry("2", new TestEntry[] { new TestEntry("3"),
new TestEntry("4"), }) });
final String json = "{ \"entries\": [ { \"id\":\"A\", \"type\":\"note\", \"note\":\"2\" }, "
+ "{ \"parentId\":\"A\", \"id\":\"C\", \"type\":\"note\", \"note\":\"4\" }, "
+ "{ \"parentId\":\"A\", \"id\":\"B\", \"type\":\"note\", \"note\":\"3\", \"nextSiblingId\":\"C\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertTrue(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertFalse(errors.hasErrors());
finalAssertions(user, expectedAfter);
}
@Test
public void test7() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = before;
final String json = "{ }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertTrue(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertFalse(errors.hasErrors());
finalAssertions(user, expectedAfter);
}
@Test
public void test8() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = before;
final String json = "{ \"entries\": [] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertTrue(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertFalse(errors.hasErrors());
finalAssertions(user, expectedAfter);
}
@Test
public void test9() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = before;
final String json = "";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertFalse(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertTrue(errors.compare(errorMessages.errorJson()));
finalAssertions(user, expectedAfter);
}
@Test
public void test10() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = before;
final String json = "{ }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertFalse(dbLogic.restoreJsonForUser(null,
getJsonStreamReader(json), false, false, errors));
assertTrue(errors.compare(errorMessages
.errorsUserIdIsNull()));
finalAssertions(user, expectedAfter);
}
@Test
public void test11() {
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));
dbLogic.commit();
assertFalse(dbLogic.restoreJsonForUser(user.getId(), null, false, false,
errors));
assertTrue(errors.compare(errorMessages
.errorsTheInputStreamReaderIsNull()));
finalAssertions(user, expectedAfter);
}
@Test
public void test12() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = before;
final String json = "{ \"entries\": [ { \"type\": \"note\", \"note\": \"2\", \"createTime\":\"A\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertFalse(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertTrue(errors.compare(errorMessages.errorJson()));
finalAssertions(user, expectedAfter);
}
@Test
public void test13() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = before;
final String json = "{ \"entries\": [ { \"type\": \"note\", \"note\": \"2\", \"modTime\":\"A\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertFalse(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertTrue(errors.compare(errorMessages.errorJson()));
finalAssertions(user, expectedAfter);
}
@Ignore
@Test
public void test14() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = before;
final String json = "{ \"entries\": [ { \"id\":\"A\", \"type\":\"note\", \"note\":\"2\" }, "
+ "{ \"parentId\":\"A\", \"id\":\"C\", \"type\":\"note\", \"note\":\"4\" }, "
+ "{ \"parentId\":\"A\", \"id\":\"B\", \"type\":\"note\", \"note\":\"3\", \"nextSiblingId\":\"D\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertFalse(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertTrue(errors
.compare(errorMessages.errorRealIdWasNotFound("C")));
finalAssertions(user, expectedAfter);
}
@Ignore
@Test
public void test15() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = before;
final String json = "{ \"entries\": [ { \"id\":\"A\", \"type\":\"note\", \"note\":\"2\" }, "
+ "{ \"parentId\":\"A\", \"id\":\"B\", \"type\":\"note\", \"note\":\"3\", \"nextSiblingId\":\"C\" }, "
+ "{ \"parentId\":\"A\", \"type\":\"note\", \"note\":\"4\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertFalse(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertTrue(errors.compare(errorMessages
.errorRestoredIdWasNotFound("S6")));
finalAssertions(user, expectedAfter);
}
@Ignore
@Test
public void test16() {
final TestEntrySet before = new TestEntrySet(new TestEntry[] { new TestEntry(
"1"), });
final TestEntrySet expectedAfter = before;
final String json = "{ \"entries\": [ { \"type\":\"note\", \"note\":\"2\" }, "
+ "{ \"parentId\":\"A\", \"id\":\"B\", \"type\":\"note\", \"note\":\"3\", \"nextSiblingId\":\"C\" }, "
+ "{ \"parentId\":\"A\", \"id\":\"C\", \"type\":\"note\", \"note\":\"4\" } ] }";
final Errors errors = new Errors();
final User user = dbLogic.getOrCreateUser("user");
assertTrue(dbLogic.addEntries(before, user, createTime,
errors));
dbLogic.commit();
assertFalse(dbLogic.restoreJsonForUser(user.getId(),
getJsonStreamReader(json), false, false, errors));
assertTrue(errors.compare(errorMessages
.errorParentIdWasNotFound("A")));
finalAssertions(user, expectedAfter);
}
}