/* 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.Test; /** Tests restoring MS Word Lists into the DB. */ public class DbRestoreMsWordListFormatForUserTest extends DbLogicTestBase { private InputStreamReader getJsonStreamReader(String json) { return new InputStreamReader(new ByteArrayInputStream(json.getBytes())); } @Test public void test1() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1") }, "Imported Notebook" ) } ); final String json = "*\t1"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } @Test public void test2() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1"), new TestEntry("2") }, "Imported Notebook" ) } ); final String json = "*\t1\n" + "*\t2\n"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } @Test public void test3() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1"), new TestEntry("2"), new TestEntry("3") }, "Imported Notebook" ) } ); final String json = "*\t1\n" + "2\n" + "*\t3\n"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } @Test public void test4() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1", new TestEntry[] { new TestEntry("2") } ), new TestEntry("3"), new TestEntry("4", new TestEntry[] { new TestEntry("5") } ) }, "Imported Notebook" ) } ); final String json = "*\t1\n" + "o\t2\n" + "3\n" + "*\t4\n" + "o\t5\n"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } @Test public void test5() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1", new TestEntry[] { new TestEntry("2", new TestEntry[] { new TestEntry("3") }) } ), new TestEntry("4"), new TestEntry("5", new TestEntry[] { new TestEntry("6", new TestEntry[] { new TestEntry("7") }) } ) }, "Imported Notebook" ) } ); final String json = "*\t1\n" + "o\t2\n" + "?\t3\n" + "4\n" + "*\t5\n" + "o\t6\n" + "?\t7\n"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } @Test public void test6() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1", new TestEntry[] { new TestEntry("2", new TestEntry[] { new TestEntry("3") } ) } ), new TestEntry("4", new TestEntry[] { new TestEntry("5") }), }, "Imported Notebook" ) } ); final String json = "*\t1\n" + "o\t2\n" + "?\t3\n" + "*\t4\n" + "?\t5\n"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } @Test public void test7() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1", new TestEntry[] { new TestEntry("2", new TestEntry[] { new TestEntry("3") } ) } ), new TestEntry("4", new TestEntry[] { new TestEntry("5") }), }, "Imported Notebook" ) } ); final String json = "*\t1\n" + "o\t2\n" + "?\t3\n" + "*\t4\n" + "?\t5\n"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } @Test public void test8() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1", new TestEntry[] { new TestEntry("2"), new TestEntry("3") } ), }, "Imported Notebook" ) } ); final String json = "*\t1\n" + "o\t2\n" + "o\t3\n"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } @Test public void test9() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1", new TestEntry[] { new TestEntry("2"), new TestEntry("3", new TestEntry[] { new TestEntry("4"), new TestEntry("5") } ) } ), }, "Imported Notebook" ) } ); final String json = "*\t1\n" + "o\t2\n" + "o\t3\n" + "x\t4\n" + "x\t5\n"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } @Test public void test10() { final TestEntrySet before = new TestEntrySet(new TestEntry[0]); final TestEntrySet expectedAfter = new TestEntrySet(new TestEntry[] { new TestEntry("R", new TestEntry[] { new TestEntry("1"), new TestEntry("2", new TestEntry[] { new TestEntry("3"), new TestEntry("4", new TestEntry[] { new TestEntry("5"), new TestEntry("6") } ), new TestEntry("7", new TestEntry[] { new TestEntry("8") }) } ), new TestEntry("9", new TestEntry[] { new TestEntry("10") } ), }, "Imported Notebook" ) } ); final String json = "*\t1\n" + "*\t2\n" + "o\t3\n" + "o\t4\n" + "x\t5\n" + "x\t6\n" + "o\t7\n" + "?\t8\n" + "*\t9\n" + "?\t10\n"; final Errors errors = new Errors(); final User user = dbLogic.getOrCreateUser("user"); assertTrue(dbLogic.addEntries(before, user, createTime, errors)); dbLogic.commit(); assertTrue(dbLogic.restoreMsWordListFormatForUser(user.getId(), getJsonStreamReader(json), false, errors)); assertFalse(errors.hasErrors()); finalAssertions(user, expectedAfter); } }