-
Notifications
You must be signed in to change notification settings - Fork 1
/
FunctionalTest.swift
113 lines (96 loc) · 4.9 KB
/
FunctionalTest.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//
// FunctionalTest.swift
// IntrospectiveTests
//
// Created by Bryan Nova on 7/19/18.
// Copyright © 2018 Bryan Nova. All rights reserved.
//
import XCTest
import SwiftyMocky
import Hamcrest
import CoreData
@testable import Introspective
@testable import AttributeRestrictions
@testable import Attributes
@testable import BooleanAlgebra
@testable import Common
@testable import DataExport
@testable import DataImport
@testable import DependencyInjection
@testable import Globals
@testable import Notifications
@testable import Persistence
@testable import Queries
@testable import Samples
@testable import SampleGroupers
@testable import SampleGroupInformation
@testable import Settings
@testable import UIExtensions
class FunctionalTest: Test {
final var database: FunctionalTestDatabase!
final var settings: SettingsImpl!
final var attributeRestrictionFactory: AttributeRestrictionFactoryImpl!
final var sampleGroupInformationFactory: SampleGroupInformationFactoryImpl!
final var importerFactory: ImporterFactoryImpl!
final var queryFactory: QueryFactoryImpl!
final var sampleFactory: SampleFactoryImpl!
final var sampleGrouperFactory: SampleGrouperFactoryImpl!
final var subQueryMatcherFactory: SubQueryMatcherFactoryImpl!
final var ioUtil: IOUtilMock!
final var uiUtil: UiUtilMock!
final var exporterUtil: ExporterUtilMock!
override func setUp() {
super.setUp()
Globals.testing = true
database = FunctionalTestDatabase(ObjectModelContainer.objectModel)
Given(injectionProvider, .get(.value(Database.self), willReturn: database))
let transaction = injected(Database.self).transaction()
settings = try! transaction.new(SettingsImpl.self)
try! transaction.commit()
// must pull from main database context or context will go out of scope and get deleted,
// causing CoreData to be unable to fulfill a fault
settings = try! injected(Database.self).pull(savedObject: settings)
Given(injectionProvider, .get(.value(Settings.self), willReturn: settings))
attributeRestrictionFactory = AttributeRestrictionFactoryImpl()
queryFactory = QueryFactoryImpl()
sampleFactory = SampleFactoryImpl()
subQueryMatcherFactory = SubQueryMatcherFactoryImpl()
sampleGroupInformationFactory = SampleGroupInformationFactoryImpl()
sampleGrouperFactory = SampleGrouperFactoryImpl()
importerFactory = ImporterFactoryImpl()
Given(injectionProvider, .get(.value(AttributeRestrictionFactory.self), willReturn: attributeRestrictionFactory))
Given(injectionProvider, .get(.value(SampleGroupInformationFactory.self), willReturn: sampleGroupInformationFactory))
Given(injectionProvider, .get(.value(ImporterFactory.self), willReturn: importerFactory))
Given(injectionProvider, .get(.value(QueryFactory.self), willReturn: queryFactory))
Given(injectionProvider, .get(.value(SampleFactory.self), willReturn: sampleFactory))
Given(injectionProvider, .get(.value(SampleGrouperFactory.self), willReturn: sampleGrouperFactory))
Given(injectionProvider, .get(.value(SubQueryMatcherFactory.self), willReturn: subQueryMatcherFactory))
ioUtil = IOUtilMock()
Given(injectionProvider, .get(.value(IOUtil.self), willReturn: ioUtil))
uiUtil = UiUtilMock()
Given(injectionProvider, .get(.value(UiUtil.self), willReturn: uiUtil))
exporterUtil = ExporterUtilMock()
Given(injectionProvider, .get(.value(ExporterUtil.self), willReturn: exporterUtil))
Given(injectionProvider, .get(.value(AsyncUtil.self), willReturn: AsyncUtilImpl()))
Given(injectionProvider, .get(.value(CalendarUtil.self), willReturn: CalendarUtilImpl()))
Given(injectionProvider, .get(.value(CoreDataSampleUtil.self), willReturn: CoreDataSampleUtilImpl()))
Given(injectionProvider, .get(.value(HealthKitUtil.self), willReturn: HealthKitUtilImpl()))
Given(injectionProvider, .get(.value(MoodUiUtil.self), willReturn: MoodUiUtilImpl()))
Given(injectionProvider, .get(.value(MoodUtil.self), willReturn: MoodUtilImpl()))
Given(injectionProvider, .get(.value(NotificationUtil.self), willReturn: NotificationUtilImpl()))
Given(injectionProvider, .get(.value(NumericSampleUtil.self), willReturn: NumericSampleUtilImpl()))
Given(injectionProvider, .get(.value(SampleUtil.self), willReturn: SampleUtilImpl()))
Given(injectionProvider, .get(.value(SearchUtil.self), willReturn: SearchUtilImpl()))
Given(injectionProvider, .get(.value(StringUtil.self), willReturn: StringUtilImpl()))
Given(injectionProvider, .get(.value(TextNormalizationUtil.self), willReturn: TextNormalizationUtilImpl()))
Given(injectionProvider, .get(.value(UserDefaultsUtil.self), willReturn: UserDefaultsUtilImpl()))
Given(injectionProvider, .get(.value(ActivityDAO.self), willReturn: ActivityDAOImpl()))
Given(injectionProvider, .get(.value(MedicationDAO.self), willReturn: MedicationDAOImpl()))
HamcrestReportFunction = {message, file, line in XCTFail(message, file: file, line: line)}
}
override func tearDown() {
AppDelegate.registerDependencies()
Globals.testing = false
super.tearDown()
}
}