From cf5de9626eca080138ab013055c85dcd9fdec8ad Mon Sep 17 00:00:00 2001 From: Kiara <68660034+DragonCat4012@users.noreply.github.com> Date: Sun, 10 Sep 2023 13:02:18 +0200 Subject: [PATCH 1/3] chart data tests --- CalqTests/BarChartTests.swift | 13 +++++++++++-- CalqTests/CalqTests.swift | 1 - CalqTests/LineChartTests.swift | 8 +++++++- CalqTests/MockDataProvider.swift | 2 ++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/CalqTests/BarChartTests.swift b/CalqTests/BarChartTests.swift index 44fe408..d9232cf 100644 --- a/CalqTests/BarChartTests.swift +++ b/CalqTests/BarChartTests.swift @@ -9,12 +9,21 @@ import XCTest @testable import Calq final class BarChartTests: XCTestCase { + + override class func setUp() { + Util.setContext(TestCoreDataStack.sharedContext) + } func testCreateSubjectBarData() { - // TODO: + MockDataProvider.getSubjectWithTests() + let data = createSubjectBarData().first! + XCTAssertEqual(data.value, 11) } func testCreateHalfYearBarChartData() { - // TODO: + MockDataProvider.getSubjectWithTests() + let data = createHalfYearBarChartData() + let expected: [Double] = [0, 11, 0, 0] + XCTAssertEqual(data.map { $0.value}, expected) } } diff --git a/CalqTests/CalqTests.swift b/CalqTests/CalqTests.swift index 060b8c9..8833980 100644 --- a/CalqTests/CalqTests.swift +++ b/CalqTests/CalqTests.swift @@ -82,7 +82,6 @@ final class CalqTests: XCTestCase { } func testAverageString_WithoutTests() { - let sub = MockDataProvider.getSubjectWithoutTests() let average = Util.averageString(MockDataProvider.getSubjectWithoutTests()) XCTAssertEqual(average, "-- -- -- -- ") } diff --git a/CalqTests/LineChartTests.swift b/CalqTests/LineChartTests.swift index fd916b7..c0a2cad 100644 --- a/CalqTests/LineChartTests.swift +++ b/CalqTests/LineChartTests.swift @@ -10,7 +10,13 @@ import XCTest final class LineChartTests: XCTestCase { + override class func setUp() { + Util.setContext(TestCoreDataStack.sharedContext) + } + func testLineChartData() { - // TODO: + MockDataProvider.getSubjectWithTests() + let data = lineChartData().first!.first! + XCTAssertEqual(data.value, 11/15) } } diff --git a/CalqTests/MockDataProvider.swift b/CalqTests/MockDataProvider.swift index 257c14a..3420622 100644 --- a/CalqTests/MockDataProvider.swift +++ b/CalqTests/MockDataProvider.swift @@ -9,6 +9,7 @@ import CoreData @testable import Calq class MockDataProvider { + @discardableResult static func getSubjectWithTests() -> UserSubject { let settings: AppSettings = Util.deleteSettings() let sub = UserSubject(context: Util.getContext()) @@ -32,6 +33,7 @@ class MockDataProvider { return sub } + @discardableResult static func getSubjectWithoutTests() -> UserSubject { let settings: AppSettings = Util.deleteSettings() let sub = UserSubject(context: Util.getContext()) From 5be0c8435f45f19a6a30ce668c250634343939b5 Mon Sep 17 00:00:00 2001 From: Kiara <68660034+DragonCat4012@users.noreply.github.com> Date: Sun, 10 Sep 2023 13:07:23 +0200 Subject: [PATCH 2/3] import v2 tests --- Calq.xcodeproj/project.pbxproj | 4 ++++ CalqTests/JSONTests.swift | 29 ++++++++++++++++------------- CalqTests/exampleData_v2.json | 25 +++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 CalqTests/exampleData_v2.json diff --git a/Calq.xcodeproj/project.pbxproj b/Calq.xcodeproj/project.pbxproj index 39cd866..32f1ce0 100644 --- a/Calq.xcodeproj/project.pbxproj +++ b/Calq.xcodeproj/project.pbxproj @@ -87,6 +87,7 @@ F1B292DF2A3BC1DF00AF2ACD /* MockDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B292DE2A3BC1DF00AF2ACD /* MockDataProvider.swift */; }; F1B386472A1CFE6800F0C5AC /* CalqTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B386462A1CFE6800F0C5AC /* CalqTests.swift */; }; F1B52D172A323BCB0082DEBE /* MockCoreDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1B52D162A323BCB0082DEBE /* MockCoreDataStack.swift */; }; + F1B8018B2AADD9EA003DBE47 /* exampleData_v2.json in Resources */ = {isa = PBXBuildFile; fileRef = F1B8018A2AADD9EA003DBE47 /* exampleData_v2.json */; }; F1BC83E92AA78F17000D7CD2 /* JSONTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1BC83E82AA78F17000D7CD2 /* JSONTests.swift */; }; F1BE91C22A41DF2A00E85494 /* SubjectListVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1BE91C12A41DF2A00E85494 /* SubjectListVM.swift */; }; F1C04B5229BA376800DAC128 /* MediumBarChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C04B5129BA376800DAC128 /* MediumBarChart.swift */; }; @@ -214,6 +215,7 @@ F1B386442A1CFE6800F0C5AC /* CalqTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CalqTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F1B386462A1CFE6800F0C5AC /* CalqTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalqTests.swift; sourceTree = ""; }; F1B52D162A323BCB0082DEBE /* MockCoreDataStack.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCoreDataStack.swift; sourceTree = ""; }; + F1B8018A2AADD9EA003DBE47 /* exampleData_v2.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = exampleData_v2.json; sourceTree = ""; }; F1BC83E82AA78F17000D7CD2 /* JSONTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONTests.swift; sourceTree = ""; }; F1BE91C12A41DF2A00E85494 /* SubjectListVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubjectListVM.swift; sourceTree = ""; }; F1C04B5129BA376800DAC128 /* MediumBarChart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediumBarChart.swift; sourceTree = ""; }; @@ -446,6 +448,7 @@ F1BC83E82AA78F17000D7CD2 /* JSONTests.swift */, F1DD87ED2AA795910095C057 /* LineChartTests.swift */, F1DD87EF2AA799700095C057 /* BarChartTests.swift */, + F1B8018A2AADD9EA003DBE47 /* exampleData_v2.json */, ); path = CalqTests; sourceTree = ""; @@ -614,6 +617,7 @@ buildActionMask = 2147483647; files = ( F1A710352A4384D900255F10 /* exampleData_v0.json in Resources */, + F1B8018B2AADD9EA003DBE47 /* exampleData_v2.json in Resources */, F1A710332A437F8300255F10 /* exampleData_v1.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/CalqTests/JSONTests.swift b/CalqTests/JSONTests.swift index 3dfdd7d..0816dd8 100644 --- a/CalqTests/JSONTests.swift +++ b/CalqTests/JSONTests.swift @@ -31,30 +31,33 @@ final class JSONTests: XCTestCase { } func testImportV0() { - Util.deleteSettings() - - let testBundle = Bundle(for: type(of: self)) - guard let ressourceURL = testBundle.url(forResource: "exampleData_v0", withExtension: "json") else { - return assertionFailure("ExampleFile does not exist") - } + loadJSON(ressource: "exampleData_v0") - do { try JSON.importJSONfromDevice(ressourceURL) } catch { return assertionFailure("Failed to load resource") } XCTAssertEqual(Util.getAllSubjects().count, 1) } func testImportV1() { + loadJSON(ressource: "exampleData_v1") + + XCTAssertEqual(Util.getAllSubjects().count, 1) + } + + func testImportV2() { + loadJSON(ressource: "exampleData_v2") + + let settings = Util.getSettings() + XCTAssertEqual(settings.hasFiveExams, false) + } + + // MARK: load Data + func loadJSON(ressource: String) { Util.deleteSettings() let testBundle = Bundle(for: type(of: self)) - guard let ressourceURL = testBundle.url(forResource: "exampleData_v1", withExtension: "json") else { + guard let ressourceURL = testBundle.url(forResource: ressource, withExtension: "json") else { return assertionFailure("ExampleFile does not exist") } do { try JSON.importJSONfromDevice(ressourceURL) } catch { return assertionFailure("Failed to load resource") } - XCTAssertEqual(Util.getAllSubjects().count, 1) - } - - func testImportV2() { - // TODO: } } diff --git a/CalqTests/exampleData_v2.json b/CalqTests/exampleData_v2.json new file mode 100644 index 0000000..ab84615 --- /dev/null +++ b/CalqTests/exampleData_v2.json @@ -0,0 +1,25 @@ + +{"formatVersion": 2, "colorfulCharts": true, "highlightedType": 1, "hasFiveExams": false, "gradeTypes": [], "exam3Spanisch": 11, + "usersubjects": [ + {"name": "Spanisch", "lk": true, "color": "#79c685", "inactiveYears": "", + "subjecttests": [ + {"name": "Bioolympiadee", "year": 3, "grade":14, "date": "1632820440.0", "type": 0} , + {"name": "Klausur Genetik #2", "year": 3, "grade":13, "date": "1638978893.0", "type": 1} , + {"name": "Klausur Ökologie", "year": 2, "grade":8, "date": "1625562840.0", "type": 1} , + {"name": "Protokoll Experiment", "year": 1, "grade":11, "date": "1602062040.0", "type": 0} , + {"name": "Exkursionsbericht", "year": 2, "grade":14, "date": "1626192991.0", "type": 0} , + {"name": "Test Stoffwechselprozesse", "year": 2, "grade":14, "date": "1616494440.0", "type": 0} , + {"name": "Test Zellbestandteile", "year": 1, "grade":14, "date": "1604398440.0", "type": 0} , + {"name": "Klausur Enzyme", "year": 1, "grade":11, "date": "1606385640.0", "type": 1} , + {"name": "Test Genetik", "year": 3, "grade":14, "date": "1639414125.0", "type": 0} , + {"name": "Experiment Blattfarbstoffe", "year": 2, "grade":14, "date": "1615284840.0", "type": 0} , + {"name": "2. Klausur", "year": 1, "grade":10, "date": "1613470440.0", "type": 1} , + {"name": "Test Neurologie", "year": 4, "grade":14, "date": "1644418358.0", "type": 0} , + {"name": "Wertediskussion PID", "year": 3, "grade":14, "date": "1641830542.0", "type": 0} , + {"name": "Klausur Genetik", "year": 3, "grade":12, "date": "1635790651.0", "type": 1} , + {"name": "Test Stammbaumanalyse", "year": 3, "grade":14, "date": "1637602982.0", "type": 0} , + {"name": "Vorabitur", "year": 4, "grade":11, "date": "1646661978.0", "type": 1} + ] + } + ] +} From e7cbf4bffe65920503e69eece7984639b41c3f40 Mon Sep 17 00:00:00 2001 From: Kiara <68660034+DragonCat4012@users.noreply.github.com> Date: Sun, 10 Sep 2023 13:37:20 +0200 Subject: [PATCH 3/3] hm --- Calq/lib/Util.swift | 3 ++- CalqTests/CalqTests.swift | 14 +++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Calq/lib/Util.swift b/Calq/lib/Util.swift index 7267f4e..b9a1d7c 100644 --- a/Calq/lib/Util.swift +++ b/Calq/lib/Util.swift @@ -216,7 +216,8 @@ struct Util { /// Returns the apps settings static func getSettings() -> AppSettings { do { - let requestResult: [NSManagedObject] = try Util.getContext().fetch(AppSettings.fetchRequest()) + let fetchRequest = NSFetchRequest(entityName: "AppSettings") + let requestResult = try context.fetch(fetchRequest) if requestResult.isEmpty { let item = AppSettings(context: Util.getContext()) diff --git a/CalqTests/CalqTests.swift b/CalqTests/CalqTests.swift index 8833980..f189ab0 100644 --- a/CalqTests/CalqTests.swift +++ b/CalqTests/CalqTests.swift @@ -169,16 +169,24 @@ final class CalqTests: XCTestCase { XCTAssertGreaterThan(Util.getTypes().count, 1) } - func testGetTypes_WhenOnly1Exists() { + /* func testGetTypes_WhenOnly1Exists() { // TODO: - } + /* + Util.deleteSettings() + JSON.loadDemoData() + */ + let type = Util.getTypes().first! + Util.deleteType(type: type) + XCTAssertEqual(Util.getTypes().count, 2) + }*/ func testgetTypeGrades() { XCTAssertNotNil(Util.getTypeGrades(0)) } func testIsPrimaryType() { - // TODO: + let type = Util.getTypes().filter { $0.name == "Klausur"}.first! + XCTAssertTrue(Util.isPrimaryType(type)) } func testIsPrimaryType_GradeType() {