diff --git a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseHandler.java b/src/de/deadlocker8/budgetmasterserver/logic/DatabaseHandler.java index e487c56b5aa64b720e2df793b05a83995d14ad34..f1e4863c8be3901bb95c310ce78e2e0afc1c4d40 100644 --- a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseHandler.java +++ b/src/de/deadlocker8/budgetmasterserver/logic/DatabaseHandler.java @@ -789,10 +789,6 @@ public class DatabaseHandler { correctRepeatEndDate = null; } - else - { - correctRepeatEndDate = "'" + correctRepeatEndDate + "'"; - } try { diff --git a/tests/de/deadlocker8/budgetmaster/tests/resources/export.json b/tests/de/deadlocker8/budgetmaster/tests/resources/export.json index 73b25d2749c63d8c4f581b686e66c233fd0e2e9a..12515b0b63822774520696258cc0d14ecb525eff 100644 --- a/tests/de/deadlocker8/budgetmaster/tests/resources/export.json +++ b/tests/de/deadlocker8/budgetmaster/tests/resources/export.json @@ -1 +1 @@ -{"categories":[{"ID":2,"name":"Übertrag","color":{"red":1.0,"green":1.0,"blue":0.0,"opacity":1.0}},{"ID":3,"name":"123 Tü+?est Category","color":{"red":0.9411765,"green":0.972549,"blue":1.0,"opacity":1.0}},{"ID":4,"name":"123 Tü+?est Category","color":{"red":0.9411765,"green":0.972549,"blue":1.0,"opacity":1.0}}],"normalPayments":[],"repeatingPayments":[]} \ No newline at end of file +{"categories":[{"ID":1,"name":"NONE","color":{"red":1.0,"green":1.0,"blue":1.0,"opacity":1.0}},{"ID":2,"name":"Übertrag","color":{"red":1.0,"green":1.0,"blue":0.0,"opacity":1.0}},{"ID":3,"name":"123 Tü+?est Category","color":{"red":0.9411765,"green":0.972549,"blue":1.0,"opacity":1.0}}],"normalPayments":[{"ID":1,"amount":23,"date":"2017-06-02","categoryID":0,"name":"Test Normal","description":"Lorem Ipsum"}],"repeatingPayments":[{"repeatInterval":7,"repeatEndDate":"2017-06-30","repeatMonthDay":0,"ID":1,"amount":-10012,"date":"2017-06-01","categoryID":1,"name":"Test Repeating","description":"Lorem Ipsum"}]} \ No newline at end of file diff --git a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseExportTest.java b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseExportTest.java deleted file mode 100644 index 04722b374764fbbfb7c74a89020fde77ab4df878..0000000000000000000000000000000000000000 --- a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseExportTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package de.deadlocker8.budgetmaster.tests.server.database; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.file.Files; -import java.nio.file.Paths; - -import org.junit.BeforeClass; -import org.junit.Test; - -import com.google.gson.Gson; - -import de.deadlocker8.budgetmasterserver.logic.DatabaseExporter; -import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.Utils; - -public class DatabaseExportTest -{ - private static Settings settings; - - @BeforeClass - public static void init() - { - try - { - //init - settings = Utils.loadSettings(); - } - catch(IOException | URISyntaxException e) - { - fail(e.getMessage()); - } - } - - @Test - public void testExport() - { - try - { - File file = Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/export.json").toFile(); - DatabaseExporter exporter = new DatabaseExporter(settings); - Gson gson = new Gson(); - String databaseJSON = gson.toJson(exporter.exportDatabase()); - de.deadlocker8.budgetmaster.logic.Utils.saveDatabaseJSON(file, databaseJSON); - - String expectedJSON = new String(Files.readAllBytes(Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/import.json"))); - String exportedJSON = new String(Files.readAllBytes(Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/export.json"))); - assertEquals(expectedJSON, exportedJSON); - } - catch(Exception e) - { - e.printStackTrace(); - fail(e.getMessage()); - } - } -} \ No newline at end of file diff --git a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseHandlerTest.java b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseHandlerTest.java index 55f27edd0d5ff22be3426c1efd9fa458a60c9a35..94bd4b2ae7bb367ba5674c5b06e574c2623891ab 100644 --- a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseHandlerTest.java +++ b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseHandlerTest.java @@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.tests.server.database; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; @@ -12,6 +13,7 @@ import org.junit.BeforeClass; import org.junit.Test; import de.deadlocker8.budgetmaster.logic.Category; +import de.deadlocker8.budgetmaster.logic.LatestRepeatingPayment; import de.deadlocker8.budgetmaster.logic.NormalPayment; import de.deadlocker8.budgetmaster.logic.RepeatingPayment; import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler; @@ -54,20 +56,41 @@ public class DatabaseHandlerTest @Test public void testCategory() { + //add Category expected = new Category("123 Tü+?est Category", Color.ALICEBLUE); databaseHandler.addCategory(expected.getName(), expected.getColor()); ArrayList<Category> categories = databaseHandler.getCategories(); + //get Category category = databaseHandler.getCategory(categories.get(categories.size()-1).getID()); assertEquals(expected.getName(), category.getName()); assertEquals(expected.getColor(), category.getColor()); + + //update + Category expectedUpdated = new Category(category.getID(), "456", Color.RED); + databaseHandler.updateCategory(expectedUpdated.getID(), expectedUpdated.getName(), expectedUpdated.getColor()); + category = databaseHandler.getCategory(expectedUpdated.getID()); + assertEquals(expectedUpdated.getName(), category.getName()); + assertEquals(expectedUpdated.getColor(), category.getColor()); + + //misc + category = databaseHandler.getCategory("NONE", Color.web("#FFFFFF")); + assertEquals(1, category.getID()); + + assertTrue(databaseHandler.categoryExists(1)); } @Test public void testDeleteCategory() { - databaseHandler.deleteCategory(1); - Category category = databaseHandler.getCategory(1); + //add + Category expected = new Category("123 Tü+?est Category", Color.ALICEBLUE); + databaseHandler.addCategory(expected.getName(), expected.getColor()); + + int id = databaseHandler.getLastInsertID(); + + databaseHandler.deleteCategory(id); + Category category = databaseHandler.getCategory(id); assertNull(category); } @@ -75,27 +98,67 @@ public class DatabaseHandlerTest @Test public void testNormalPayment() { - NormalPayment expectedPayment = new NormalPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum"); + //add + NormalPayment expectedPayment = new NormalPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum"); databaseHandler.addNormalPayment(expectedPayment.getAmount(), expectedPayment.getDate(), expectedPayment.getCategoryID(), expectedPayment.getName(), expectedPayment.getDescription()); - NormalPayment payment = databaseHandler.getPayment(1); + + int id = databaseHandler.getLastInsertID(); + + //get + NormalPayment payment = databaseHandler.getPayment(id); assertEquals(expectedPayment.getAmount(), payment.getAmount()); assertEquals(expectedPayment.getDate(), payment.getDate()); assertEquals(expectedPayment.getCategoryID(), payment.getCategoryID()); assertEquals(expectedPayment.getName(), payment.getName()); assertEquals(expectedPayment.getDescription(), payment.getDescription()); + + //update + NormalPayment expectedUpdated = new NormalPayment(id, 2000, "2017-03-02", 1, "Buchung 2", "Lorem Ipsum"); + databaseHandler.updateNormalPayment(expectedUpdated.getID(), + expectedUpdated.getAmount(), + expectedUpdated.getDate(), + expectedUpdated.getCategoryID(), + expectedUpdated.getName(), + expectedUpdated.getDescription()); + + payment = databaseHandler.getPayment(id); + + assertEquals(expectedUpdated.getAmount(), payment.getAmount()); + assertEquals(expectedUpdated.getDate(), payment.getDate()); + assertEquals(expectedUpdated.getCategoryID(), payment.getCategoryID()); + assertEquals(expectedUpdated.getName(), payment.getName()); + assertEquals(expectedUpdated.getDescription(), payment.getDescription()); + + //misc + assertEquals(1, databaseHandler.getPayments(2017, 03).size()); + assertEquals(0, databaseHandler.getPayments(2015, 03).size()); + + assertEquals(1, databaseHandler.getPaymentsBetween("2016-01-01", "2018-01-01").size()); + assertEquals(0, databaseHandler.getPaymentsBetween("2018-01-01", "2019-01-01").size()); } @Test public void testDeleteNormalPayment() { - databaseHandler.deletePayment(1); - NormalPayment payment = databaseHandler.getPayment(1); + //add + NormalPayment expectedPayment = new NormalPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum"); + + databaseHandler.addNormalPayment(expectedPayment.getAmount(), + expectedPayment.getDate(), + expectedPayment.getCategoryID(), + expectedPayment.getName(), + expectedPayment.getDescription()); + + int id = databaseHandler.getLastInsertID(); + + databaseHandler.deletePayment(id); + NormalPayment payment = databaseHandler.getPayment(id); assertNull(payment); } @@ -103,6 +166,7 @@ public class DatabaseHandlerTest @Test public void testRepeatingPayment() { + //add RepeatingPayment expectedPayment = new RepeatingPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum", 0, null, 15); databaseHandler.addRepeatingPayment(expectedPayment.getAmount(), @@ -112,9 +176,9 @@ public class DatabaseHandlerTest expectedPayment.getDescription(), expectedPayment.getRepeatInterval(), expectedPayment.getRepeatEndDate(), - expectedPayment.getRepeatMonthDay()); - - RepeatingPayment payment = databaseHandler.getRepeatingPayment(1); + expectedPayment.getRepeatMonthDay()); + //get + RepeatingPayment payment = databaseHandler.getRepeatingPayment(databaseHandler.getLastInsertID()); assertEquals(expectedPayment.getAmount(), payment.getAmount()); assertEquals(expectedPayment.getDate(), payment.getDate()); @@ -124,14 +188,70 @@ public class DatabaseHandlerTest assertEquals(expectedPayment.getRepeatInterval(), payment.getRepeatInterval()); assertEquals(expectedPayment.getRepeatEndDate(), payment.getRepeatEndDate()); assertEquals(expectedPayment.getRepeatMonthDay(), payment.getRepeatMonthDay()); + + //RepeatingPaymentEntry + databaseHandler.addRepeatingPaymentEntry(expectedPayment.getID(), "2017-03-15"); + ArrayList<LatestRepeatingPayment> latestPayments = databaseHandler.getLatestRepeatingPaymentEntries(); + assertEquals(1, latestPayments.size()); + assertEquals(expectedPayment.getID(), latestPayments.get(0).getRepeatingPaymentID()); + assertEquals("2017-03-15", latestPayments.get(0).getLastDate()); + + //misc + assertEquals(1, databaseHandler.getRepeatingPayments(2017, 03).size()); + assertEquals(0, databaseHandler.getRepeatingPayments(2015, 03).size()); + + assertEquals(1, databaseHandler.getRepeatingPaymentsBetween("2016-01-01", "2018-01-01").size()); + assertEquals(0, databaseHandler.getRepeatingPaymentsBetween("2018-01-01", "2019-01-01").size()); + + assertEquals(1, databaseHandler.getAllRepeatingPayments().size()); } @Test public void testDeleteRepeatingPayment() { - databaseHandler.deleteRepeatingPayment(1); - RepeatingPayment payment = databaseHandler.getRepeatingPayment(1); + RepeatingPayment expectedPayment = new RepeatingPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum", 0, null, 15); + + databaseHandler.addRepeatingPayment(expectedPayment.getAmount(), + expectedPayment.getDate(), + expectedPayment.getCategoryID(), + expectedPayment.getName(), + expectedPayment.getDescription(), + expectedPayment.getRepeatInterval(), + expectedPayment.getRepeatEndDate(), + expectedPayment.getRepeatMonthDay()); + + int id = databaseHandler.getLastInsertID(); + + databaseHandler.deleteRepeatingPayment(id); + RepeatingPayment payment = databaseHandler.getRepeatingPayment(id); assertNull(payment); } + + @Test + public void testRest() + { + //add payments for previous months + NormalPayment expectedPayment = new NormalPayment(1, 1000, "2017-03-01", 2, "Buchung", "Lorem Ipsum"); + databaseHandler.addNormalPayment(expectedPayment.getAmount(), + expectedPayment.getDate(), + expectedPayment.getCategoryID(), + expectedPayment.getName(), + expectedPayment.getDescription()); + int idPayment1 = databaseHandler.getLastInsertID(); + + expectedPayment = new NormalPayment(2, -800, "2017-02-01", 2, "Buchung", "Lorem Ipsum"); + databaseHandler.addNormalPayment(expectedPayment.getAmount(), + expectedPayment.getDate(), + expectedPayment.getCategoryID(), + expectedPayment.getName(), + expectedPayment.getDescription()); + int idPayment2 = databaseHandler.getLastInsertID(); + + assertEquals(1000, databaseHandler.getRest(2017, 3)); + assertEquals(200, databaseHandler.getRestForAllPreviousMonths(2017, 4)); + + databaseHandler.deletePayment(idPayment1); + databaseHandler.deletePayment(idPayment2); + } } \ No newline at end of file diff --git a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportTest.java b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java similarity index 70% rename from tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportTest.java rename to tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java index c4c2dce82554b96ec962925925f001e2b6297947..21eb640fe951be51244ec4a57e0b1812418c1bc7 100644 --- a/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportTest.java +++ b/tests/de/deadlocker8/budgetmaster/tests/server/database/DatabaseImportExportTest.java @@ -6,24 +6,29 @@ import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; +import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import org.junit.BeforeClass; import org.junit.Test; +import com.google.gson.Gson; + import de.deadlocker8.budgetmaster.logic.Category; import de.deadlocker8.budgetmaster.logic.NormalPayment; import de.deadlocker8.budgetmaster.logic.RepeatingPayment; import de.deadlocker8.budgetmasterserver.logic.Database; +import de.deadlocker8.budgetmasterserver.logic.DatabaseExporter; import de.deadlocker8.budgetmasterserver.logic.DatabaseHandler; import de.deadlocker8.budgetmasterserver.logic.DatabaseImporter; import de.deadlocker8.budgetmasterserver.logic.Settings; import de.deadlocker8.budgetmasterserver.logic.Utils; import javafx.scene.paint.Color; -public class DatabaseImportTest +public class DatabaseImportExportTest { + private static Settings settings; private static DatabaseHandler databaseHandler; @BeforeClass @@ -32,7 +37,7 @@ public class DatabaseImportTest try { //init - Settings settings = Utils.loadSettings(); + settings = Utils.loadSettings(); DatabaseHandler handler = new DatabaseHandler(settings); handler.deleteDatabase(); handler = new DatabaseHandler(settings); @@ -74,8 +79,8 @@ public class DatabaseImportTest //test repeating payment RepeatingPayment expectedRepeatingPayment = new RepeatingPayment(1, -10012, "2017-06-01", 1, "Test Repeating", "Lorem Ipsum", 7, "2017-06-30", 0); - RepeatingPayment repeatingPayment = databaseHandler.getRepeatingPayment(1); - assertEquals(expectedRepeatingPayment.getAmount(), repeatingPayment.getAmount()); + RepeatingPayment repeatingPayment = databaseHandler.getRepeatingPayment(1); + assertEquals(expectedRepeatingPayment.getAmount(), repeatingPayment.getAmount()); assertEquals(expectedRepeatingPayment.getDate(), repeatingPayment.getDate()); assertEquals(expectedRepeatingPayment.getCategoryID(), repeatingPayment.getCategoryID()); assertEquals(expectedRepeatingPayment.getName(), repeatingPayment.getName()); @@ -90,4 +95,36 @@ public class DatabaseImportTest fail(e.getMessage()); } } + + @Test + public void testExport() + { + try + { + databaseHandler.deleteDatabase(); + databaseHandler = new DatabaseHandler(settings); + + File file = Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/import.json").toFile(); + Database database = de.deadlocker8.budgetmaster.logic.Utils.loadDatabaseJSON(file); + + DatabaseImporter importer = new DatabaseImporter(databaseHandler); + importer.importDatabase(database); + + file = Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/export.json").toFile(); + DatabaseExporter exporter = new DatabaseExporter(settings); + Gson gson = new Gson(); + String databaseJSON = gson.toJson(exporter.exportDatabase()); + de.deadlocker8.budgetmaster.logic.Utils.saveDatabaseJSON(file, databaseJSON); + + String expectedJSON = new String(Files.readAllBytes(Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/import.json"))); + String exportedJSON = new String(Files.readAllBytes(Paths.get("tests/de/deadlocker8/budgetmaster/tests/resources/export.json"))); + + assertEquals(expectedJSON, exportedJSON); + } + catch(Exception e) + { + e.printStackTrace(); + fail(e.getMessage()); + } + } } \ No newline at end of file