@josuelmm/cordova-background-geolocation 4.2.2 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/.npmignore +11 -0
  2. package/CHANGELOG.md +213 -0
  3. package/HISTORY.md +73 -0
  4. package/README.md +45 -74
  5. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/ConfigMapper.java +24 -0
  6. package/android/CDVBackgroundGeolocation/src/main/java/com/tenforwardconsulting/bgloc/cordova/BackgroundGeolocationPlugin.java +61 -1
  7. package/android/common/src/main/AndroidManifest.xml +1 -1
  8. package/android/common/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +6 -3
  9. package/android/common/src/main/java/com/marianhello/bgloc/Config.java +65 -1
  10. package/android/common/src/main/java/com/marianhello/bgloc/PostLocationTask.java +1 -1
  11. package/android/common/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +94 -0
  12. package/android/common/src/main/java/com/marianhello/bgloc/data/ConfigJsonMapper.java +205 -0
  13. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +6 -0
  14. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +5 -1
  15. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +32 -1
  16. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +12 -2
  17. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +33 -2
  18. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +15 -1
  19. package/android/common/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +23 -8
  20. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +246 -21
  21. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +5 -2
  22. package/android/common/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +46 -13
  23. package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.m +23 -1
  24. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +111 -5
  25. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +20 -0
  26. package/ios/common/BackgroundGeolocation/MAURConfig.h +2 -0
  27. package/ios/common/BackgroundGeolocation/MAURConfig.m +16 -2
  28. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +3 -0
  29. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +3 -1
  30. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +15 -1
  31. package/ios/common/BackgroundGeolocation/MAURLocation.h +12 -0
  32. package/ios/common/BackgroundGeolocation/MAURLocation.m +33 -4
  33. package/ios/common/BackgroundGeolocation/MAURLocationContract.h +4 -0
  34. package/ios/common/BackgroundGeolocation/MAURLocationContract.m +5 -1
  35. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +9 -0
  36. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +59 -1
  37. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +54 -4
  38. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +12 -0
  39. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +125 -5
  40. package/package.json +36 -1
  41. package/plugin.xml +3 -2
  42. package/www/BackgroundGeolocation.d.ts +114 -3
  43. package/www/BackgroundGeolocation.js +11 -4
  44. package/CLAUDE.md +0 -56
  45. package/android/CDVBackgroundGeolocation/src/test/java/com/marianhello/ConfigMapperTest.java +0 -220
  46. package/android/common/src/androidTest/java/com/marianhello/bgloc/BackgroundGeolocationFacadeTest.java +0 -45
  47. package/android/common/src/androidTest/java/com/marianhello/bgloc/BatchManagerTest.java +0 -570
  48. package/android/common/src/androidTest/java/com/marianhello/bgloc/ConfigTest.java +0 -76
  49. package/android/common/src/androidTest/java/com/marianhello/bgloc/ContentProviderLocationDAOTest.java +0 -437
  50. package/android/common/src/androidTest/java/com/marianhello/bgloc/DBLogReaderTest.java +0 -95
  51. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationContentProviderTest.java +0 -159
  52. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceProxyTest.java +0 -161
  53. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceTest.java +0 -247
  54. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteConfigurationDAOTest.java +0 -200
  55. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOTest.java +0 -457
  56. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOThreadTest.java +0 -96
  57. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteOpenHelperTest.java +0 -225
  58. package/android/common/src/androidTest/java/com/marianhello/bgloc/TestPluginDelegate.java +0 -46
  59. package/android/common/src/androidTest/java/com/marianhello/bgloc/TestResourceResolver.java +0 -14
  60. package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/MockLocationProvider.java +0 -50
  61. package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/TestLocationProviderFactory.java +0 -17
  62. package/android/common/src/androidTest/java/com/marianhello/bgloc/sqlite/SQLiteOpenHelper10.java +0 -92
  63. package/android/common/src/androidTest/java/com/marianhello/bgloc/test/LocationProviderTestCase.java +0 -107
  64. package/android/common/src/androidTest/java/com/marianhello/bgloc/test/TestConstants.java +0 -5
  65. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ArrayListLocationTemplateTest.java +0 -82
  66. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/BackgroundLocationTest.java +0 -128
  67. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ConfigTest.java +0 -191
  68. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/DBLogReaderTest.java +0 -37
  69. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HashMapLocationTemplateTest.java +0 -216
  70. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HttpPostServiceTest.java +0 -223
  71. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/LocationTemplateFactoryTest.java +0 -50
  72. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/PostLocationTaskTest.java +0 -180
  73. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/TestHelper.java +0 -16
  74. package/ios/common/BackgroundGeolocationTests/Info.plist +0 -24
  75. package/ios/common/BackgroundGeolocationTests/MAURBackgroundLocationTest.m +0 -185
  76. package/ios/common/BackgroundGeolocationTests/MAURConfigTest.m +0 -161
  77. package/ios/common/BackgroundGeolocationTests/MAURGeolocationOpenHelperTest.m +0 -102
  78. package/ios/common/BackgroundGeolocationTests/MAURLocationTest.m +0 -216
  79. package/ios/common/BackgroundGeolocationTests/MAURLocationUploaderTest.m +0 -55
  80. package/ios/common/BackgroundGeolocationTests/MAURLogReaderTest.m +0 -43
  81. package/ios/common/BackgroundGeolocationTests/MAURSQLiteConfigurationDAOTest.m +0 -102
  82. package/ios/common/BackgroundGeolocationTests/MAURSQLiteHelperTest.m +0 -41
  83. package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOTests.m +0 -240
  84. package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOThreadTest.m +0 -84
  85. package/ios/common/BackgroundGeolocationTests/MAURSQLiteOpenHelperTest.m +0 -144
  86. package/ios/common/scripts/xcode-refactor.js +0 -184
@@ -1,41 +0,0 @@
1
- //
2
- // MAURSQLiteHelperTest.m
3
- // BackgroundGeolocationTests
4
- //
5
- // Created by Marian Hello on 27/06/16.
6
- // Copyright © 2016 mauron85. All rights reserved.
7
- //
8
-
9
- #import <XCTest/XCTest.h>
10
- #import "MAURSQLiteHelper.h"
11
-
12
- @interface MAURSQLiteHelperTest : XCTestCase
13
-
14
- @end
15
-
16
- @implementation MAURSQLiteHelperTest
17
-
18
- - (void)setUp {
19
- [super setUp];
20
- // Put setup code here. This method is called before the invocation of each test method in the class.
21
- }
22
-
23
- - (void)tearDown {
24
- // Put teardown code here. This method is called after the invocation of each test method in the class.
25
- [super tearDown];
26
- }
27
-
28
- - (void)testCreateTableSQLStatement {
29
- NSString *tableName = @"TEST_TABLE";
30
- NSArray *columns = @[
31
- @{ @"name": @"pk_col", @"type": [SQLPrimaryKeyAutoIncColumnType sqlColumnWithType: kInteger]},
32
- @{ @"name": @"text_col", @"type": [SQLColumnType sqlColumnWithType: kText]},
33
- @{ @"name": @"real_col", @"type": [SQLColumnType sqlColumnWithType: kReal]},
34
- @{ @"name": @"int_col", @"type": [SQLColumnType sqlColumnWithType: kInteger]}
35
- ];
36
- NSString *sql = [MAURSQLiteHelper createTableSqlStatement:tableName columns:columns];
37
- XCTAssertEqualObjects(sql, @"CREATE TABLE IF NOT EXISTS TEST_TABLE ( pk_col INTEGER PRIMARY KEY AUTOINCREMENT , text_col TEXT , real_col REAL , int_col INTEGER );");
38
- }
39
-
40
-
41
- @end
@@ -1,240 +0,0 @@
1
- //
2
- // SQLiteLocationDAOTest.m
3
- // BackgroundGeolocationTests
4
- //
5
- // Created by Marian Hello on 10/06/16.
6
- // Copyright © 2016 mauron85. All rights reserved.
7
- //
8
-
9
- #import <XCTest/XCTest.h>
10
- #import "MAURSQLiteLocationDAO.h"
11
-
12
- @interface SQLiteLocationDAOTest : XCTestCase
13
-
14
- @end
15
-
16
- @implementation SQLiteLocationDAOTest
17
-
18
- - (void)setUp {
19
- [super setUp];
20
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
21
- [locationDAO clearDatabase];
22
- }
23
-
24
- - (void)tearDown {
25
- // Put teardown code here. This method is called after the invocation of each test method in the class.
26
- [super tearDown];
27
- }
28
-
29
- - (void)testPersistLocation {
30
- // This is an example of a functional test case.
31
- // Use XCTAssert and related functions to verify your tests produce the correct results.
32
-
33
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
34
- MAURLocation *location = [[MAURLocation alloc] init];
35
-
36
- location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577];
37
- location.accuracy = [NSNumber numberWithDouble:5];
38
- location.speed = [NSNumber numberWithDouble:31.67];
39
- location.heading = [NSNumber numberWithDouble:298.83];
40
- location.altitude = [NSNumber numberWithDouble:940];
41
- location.latitude = [NSNumber numberWithDouble:37.35439853];
42
- location.longitude = [NSNumber numberWithDouble:-122.1100721];
43
- location.provider = @"TEST";
44
- location.locationProvider = [NSNumber numberWithInt:-1];
45
-
46
- NSNumber *locationId = [locationDAO persistLocation:location];
47
-
48
- NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
49
- MAURLocation *result = [locations firstObject];
50
-
51
- XCTAssertTrue([locationId isEqualToNumber:[NSNumber numberWithInt:1]], @"LocationId is %lu expecting 1",(unsigned long)locationId);
52
- XCTAssertEqual([locations count], 1, @"Number of stored location is %lu expecting 1", (unsigned long)[locations count]);
53
- XCTAssertTrue([result.locationId isEqualToNumber:[NSNumber numberWithInt:1]], @"LocationId is %lu expecting 1",(unsigned long)result.locationId);
54
- XCTAssertTrue([result.time isEqualToDate:[NSDate dateWithTimeIntervalSince1970:1465511097774.577]], "Location time is %@ expecting %@", result.time, [NSDate dateWithTimeIntervalSince1970:1465511097774.577]);
55
- XCTAssertTrue([result.accuracy isEqualToNumber:[NSNumber numberWithDouble:5]], "Location accuracy is %@ expecting %@", result.accuracy, [NSNumber numberWithDouble:5]);
56
- XCTAssertTrue([result.speed isEqualToNumber:[NSNumber numberWithDouble:31.67]], "Location speed is %@ expecting %@", result.speed, [NSNumber numberWithDouble:31.67]);
57
- XCTAssertTrue([result.heading isEqualToNumber:[NSNumber numberWithDouble:298.83]], "Location heading is %@ expecting %@", result.heading, [NSNumber numberWithDouble:298.83]);
58
- XCTAssertTrue([result.altitude isEqualToNumber:[NSNumber numberWithDouble:940]], "Location altitude is %@ expecting %@", result.altitude, [NSNumber numberWithDouble:940]);
59
- XCTAssertTrue([result.latitude isEqualToNumber:[NSNumber numberWithDouble:37.35439853]], "Location latitude is %@ expecting %@", result.latitude, [NSNumber numberWithDouble:37.35439853]);
60
- XCTAssertTrue([result.longitude isEqualToNumber:[NSNumber numberWithDouble:-122.1100721]], "Location longitude is %@ expecting %@", result.longitude, [NSNumber numberWithDouble:-122.1100721]);
61
- XCTAssertTrue([result.provider isEqualToString:@"TEST"], @"Location provider is expected to be TEST");
62
- XCTAssertTrue([result.locationProvider isEqualToNumber:[NSNumber numberWithInt:-1]], "Location service_provider is %@ expecting %@", result.locationProvider, [NSNumber numberWithInt:-1]);
63
- }
64
-
65
- - (void)testDeleteLocation {
66
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
67
- MAURLocation *location = [[MAURLocation alloc] init];
68
-
69
- location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577];
70
- location.accuracy = [NSNumber numberWithDouble:5];
71
- location.speed = [NSNumber numberWithDouble:31.67];
72
- location.heading = [NSNumber numberWithDouble:298.83];
73
- location.altitude = [NSNumber numberWithDouble:940];
74
- location.latitude = [NSNumber numberWithDouble:37.35439853];
75
- location.longitude = [NSNumber numberWithDouble:-122.1100721];
76
- location.provider = @"TEST";
77
- location.locationProvider = [NSNumber numberWithInt:-1];
78
-
79
- NSNumber *locationId1 = [locationDAO persistLocation:location];
80
- NSNumber *locationId2 = [locationDAO persistLocation:location];
81
-
82
- NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
83
- XCTAssertEqual([locations count], 2, @"Number of stored location is %lu expecting 2", (unsigned long)[locations count]);
84
-
85
- [locationDAO deleteLocation:locationId1 error:nil];
86
- locations = [locationDAO getValidLocations];
87
- MAURLocation *result = [locations firstObject];
88
-
89
- XCTAssertEqual([locations count], 1, @"Number of stored location is %lu expecting 1", (unsigned long)[locations count]);
90
- XCTAssertTrue([result.locationId isEqualToNumber:locationId2], "LocationId is %@ expecting %@", result.locationId, locationId2);
91
- }
92
-
93
- - (void)testDeleteAllLocations {
94
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
95
- MAURLocation *location = [[MAURLocation alloc] init];
96
-
97
- location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577];
98
- location.accuracy = [NSNumber numberWithDouble:5];
99
- location.speed = [NSNumber numberWithDouble:31.67];
100
- location.heading = [NSNumber numberWithDouble:298.83];
101
- location.altitude = [NSNumber numberWithDouble:940];
102
- location.latitude = [NSNumber numberWithDouble:37.35439853];
103
- location.longitude = [NSNumber numberWithDouble:-122.1100721];
104
- location.provider = @"TEST";
105
- location.locationProvider = [NSNumber numberWithInt:-1];
106
-
107
- [locationDAO persistLocation:location];
108
- [locationDAO persistLocation:location];
109
- [locationDAO persistLocation:location];
110
- [locationDAO persistLocation:location];
111
- [locationDAO persistLocation:location];
112
- [locationDAO persistLocation:location];
113
- [locationDAO persistLocation:location];
114
-
115
- NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
116
- XCTAssertEqual([locations count], 7, @"Number of stored location is %lu expecting 7", (unsigned long)[locations count]);
117
-
118
- [locationDAO deleteAllLocations:nil];
119
- locations = [locationDAO getValidLocations];
120
-
121
- XCTAssertEqual([locations count], 0, @"Number of stored location is %lu expecting 0", (unsigned long)[locations count]);
122
- }
123
-
124
- - (void)testGetAllLocations {
125
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
126
- MAURLocation *location;
127
-
128
- for (int i = 0; i < 10; i++) {
129
- location = [[MAURLocation alloc] init];
130
- location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577+i];
131
- location.accuracy = [NSNumber numberWithDouble:5+i];
132
- location.speed = [NSNumber numberWithDouble:31.67+i];
133
- location.heading = [NSNumber numberWithDouble:298.83+i];
134
- location.altitude = [NSNumber numberWithDouble:940+i];
135
- location.latitude = [NSNumber numberWithDouble:37.35439853+i];
136
- location.longitude = [NSNumber numberWithDouble:-122.1100721+i];
137
- location.provider = @"TEST";
138
- location.locationProvider = [NSNumber numberWithInt:-1];
139
-
140
- [locationDAO persistLocation:location];
141
- }
142
-
143
- NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
144
- XCTAssertEqual([locations count], 10, @"Number of stored location is %lu expecting 10", (unsigned long)[locations count]);
145
-
146
- for (int i = 0; i < 10; i++) {
147
- MAURLocation *result = [locations objectAtIndex:i];
148
- XCTAssertEqual([result.locationId intValue], i+1, "LocationId is %d expecting %d", [result.locationId intValue], i+1);
149
- XCTAssertTrue([result.time isEqualToDate:[NSDate dateWithTimeIntervalSince1970:1465511097774.577+i]], "Location time is %@ expecting %@", result.time, [NSDate dateWithTimeIntervalSince1970:1465511097774.577+i]);
150
- XCTAssertTrue([result.accuracy isEqualToNumber:[NSNumber numberWithDouble:5+i]], "Location accuracy is %@ expecting %@", result.accuracy, [NSNumber numberWithDouble:5+i]);
151
- XCTAssertTrue([result.speed isEqualToNumber:[NSNumber numberWithDouble:31.67+i]], "Location speed is %@ expecting %@", result.speed, [NSNumber numberWithDouble:31.67+i]);
152
- XCTAssertTrue([result.heading isEqualToNumber:[NSNumber numberWithDouble:298.83+i]], "Location heading is %@ expecting %@", result.heading, [NSNumber numberWithDouble:298.83+i]);
153
- XCTAssertTrue([result.altitude isEqualToNumber:[NSNumber numberWithDouble:940+i]], "Location altitude is %@ expecting %@", result.altitude, [NSNumber numberWithDouble:940+i]);
154
- XCTAssertTrue([result.latitude isEqualToNumber:[NSNumber numberWithDouble:37.35439853+i]], "Location latitude is %@ expecting %@", result.latitude, [NSNumber numberWithDouble:37.35439853+i]);
155
- XCTAssertTrue([result.longitude isEqualToNumber:[NSNumber numberWithDouble:-122.1100721+i]], "Location longitude is %@ expecting %@", result.longitude, [NSNumber numberWithDouble:-122.1100721+i]);
156
- XCTAssertTrue([result.provider isEqualToString:@"TEST"], @"Location provider is expected to be TEST");
157
- XCTAssertTrue([result.locationProvider isEqualToNumber:[NSNumber numberWithInt:-1]], "Location service_provider is %@ expecting %@", result.locationProvider, [NSNumber numberWithInt:-1]);
158
- }
159
- }
160
-
161
- - (void)testGetValidLocations {
162
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
163
- MAURLocation *location;
164
-
165
- for (int i = 0; i < 10; i++) {
166
- location = [[MAURLocation alloc] init];
167
- location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577+i];
168
- location.accuracy = [NSNumber numberWithDouble:5+i];
169
- location.speed = [NSNumber numberWithDouble:31.67+i];
170
- location.heading = [NSNumber numberWithDouble:298.83+i];
171
- location.altitude = [NSNumber numberWithDouble:940+i];
172
- location.latitude = [NSNumber numberWithDouble:37.35439853+i];
173
- location.longitude = [NSNumber numberWithDouble:-122.1100721+i];
174
- location.provider = @"TEST";
175
- location.locationProvider = [NSNumber numberWithInt:-1];
176
- location.isValid = (i % 2) == 0;
177
-
178
- [locationDAO persistLocation:location];
179
- }
180
-
181
- NSArray<MAURLocation*> *validLocations = [locationDAO getValidLocations];
182
- XCTAssertEqual([validLocations count], 5, @"Number of valid location is %lu expecting 5", (unsigned long)[validLocations count]);
183
-
184
- NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
185
- XCTAssertEqual([locations count], 10, @"Number of stored location is %lu expecting 10", (unsigned long)[locations count]);
186
-
187
- for (int i = 0; i < 10; i++) {
188
- MAURLocation *result = [locations objectAtIndex:i];
189
- if ((i % 2) == 0) {
190
- XCTAssertTrue(result.isValid);
191
- } else {
192
- XCTAssertFalse(result.isValid);
193
- }
194
- }
195
- }
196
-
197
- - (void)testPersistLocationWithZeroRowLimit {
198
- int maxRows = 0;
199
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
200
-
201
- for (int i = 0; i < maxRows * 2; i++) {
202
- [locationDAO persistLocation:nil limitRows:maxRows];
203
- }
204
-
205
- NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
206
- XCTAssertEqual([locations count], maxRows, @"Number of stored location is %lu expecting 0", (unsigned long)[locations count]);
207
- }
208
-
209
- - (void)testPersistLocationWithRowLimit {
210
- int maxRows = 100;
211
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
212
-
213
- NSNumber *locationId = nil;
214
- for (int i = 1; i <= maxRows * 2; i++) {
215
- locationId = [locationDAO persistLocation:nil limitRows:maxRows];
216
- XCTAssertTrue([locationId isEqualToNumber:[NSNumber numberWithInt:i > 100 ? i - 100 : i]], @"LocationId is %@ expecting %i", locationId, i);
217
- }
218
-
219
- NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
220
- XCTAssertEqual([locations count], maxRows, @"Number of stored location is %lu expecting 100", (unsigned long)[locations count]);
221
- }
222
-
223
- - (void)testPersistLocationWithRowLimitWhenMaxRowsReduced {
224
- NSInteger maxRowsRun[2] = {100, 10};
225
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
226
-
227
- for (int i = 0; i < sizeof(maxRowsRun) / sizeof(NSInteger); i++) {
228
- NSInteger maxRows = maxRowsRun[i];
229
- for (int i = 0; i < maxRows * 2; i++) {
230
- [locationDAO persistLocation:nil limitRows:maxRows];
231
- }
232
- NSArray<MAURLocation*> *locations = [locationDAO getAllLocations];
233
- XCTAssertEqual([locations count], maxRows, @"Number of stored location is %lu expecting %ld", (unsigned long)[locations count], (long)maxRows);
234
- }
235
-
236
- NSNumber *locationId = [locationDAO persistLocation:nil];
237
- XCTAssertTrue([locationId isEqualToNumber:[NSNumber numberWithInt:101]], @"Expecting primary key id to be 101 actual %@", locationId);
238
- }
239
-
240
- @end
@@ -1,84 +0,0 @@
1
- //
2
- // BackgroundGeolocationTest.m
3
- // BackgroundGeolocationTests
4
- //
5
- // Created by Marian Hello on 10/06/16.
6
- // Copyright © 2016 mauron85. All rights reserved.
7
- //
8
-
9
- #import <XCTest/XCTest.h>
10
- #import "MAURSQLiteLocationDAO.h"
11
-
12
- @interface PersistLocationInThread : NSObject
13
- {
14
-
15
- }
16
- // class methods go here
17
- - (void) noop;
18
- - (void) persistLocation:(NSNumber *)value;
19
- @end
20
-
21
- @interface MAURSQLiteLocationDAOThreadTest : XCTestCase
22
-
23
- @end
24
-
25
- @implementation MAURSQLiteLocationDAOThreadTest
26
-
27
- - (void)setUp {
28
- [super setUp];
29
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
30
- [locationDAO clearDatabase];
31
- // Put setup code here. This method is called before the invocation of each test method in the class.
32
- }
33
-
34
- - (void)tearDown {
35
- // Put teardown code here. This method is called after the invocation of each test method in the class.
36
- [super tearDown];
37
- }
38
-
39
- - (void)testGetAllLocationsMultiThread {
40
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
41
- long unsigned threadsCount = 100;
42
-
43
- dispatch_queue_t queue = dispatch_queue_create("com.marianhello.SQLiteLocationDAOThreadTests", DISPATCH_QUEUE_CONCURRENT);
44
- dispatch_group_t group = dispatch_group_create();
45
-
46
- for (int i = 0; i < threadsCount; i++) {
47
- dispatch_group_async(group, queue, ^{
48
- MAURLocation *location = [[MAURLocation alloc] init];
49
- location.time = [NSDate dateWithTimeIntervalSince1970:100+i];
50
- location.accuracy = [NSNumber numberWithDouble:i];
51
- location.speed = [NSNumber numberWithDouble:32+i];
52
- location.heading = [NSNumber numberWithDouble:200+i];
53
- location.altitude = [NSNumber numberWithDouble:940+i];
54
- location.latitude = [NSNumber numberWithDouble:37+i];
55
- location.longitude = [NSNumber numberWithDouble:-22+i];
56
- location.provider = @"TEST";
57
- location.locationProvider = [NSNumber numberWithInt:-1];
58
-
59
- [locationDAO persistLocation:location];
60
- });
61
- }
62
-
63
- dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
64
-
65
- NSMutableArray *locations = [NSMutableArray arrayWithArray:[locationDAO getAllLocations]];
66
- [locations sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"time" ascending:YES]]];
67
-
68
- XCTAssertEqual([locations count], threadsCount, @"Number of stored location is %lu expecting %lu", (unsigned long)[locations count], threadsCount);
69
-
70
- for (int i = 0; i < threadsCount; i++) {
71
- MAURLocation *result = [locations objectAtIndex:i];
72
- XCTAssertTrue([result.time isEqualToDate:[NSDate dateWithTimeIntervalSince1970:100+i]], "time is %@ expecting %@", result.time, [NSDate dateWithTimeIntervalSince1970:100+i]);
73
- XCTAssertTrue([result.accuracy isEqualToNumber:[NSNumber numberWithDouble:i]], "accuracy is %@ expecting %@", result.accuracy, [NSNumber numberWithDouble:i]);
74
- XCTAssertTrue([result.speed isEqualToNumber:[NSNumber numberWithDouble:32+i]], "speed is %@ expecting %@", result.speed, [NSNumber numberWithDouble:32+i]);
75
- XCTAssertTrue([result.heading isEqualToNumber:[NSNumber numberWithDouble:200+i]], "heading is %@ expecting %@", result.heading, [NSNumber numberWithDouble:200+i]);
76
- XCTAssertTrue([result.altitude isEqualToNumber:[NSNumber numberWithDouble:940+i]], "altitude is %@ expecting %@", result.altitude, [NSNumber numberWithDouble:940+i]);
77
- XCTAssertTrue([result.latitude isEqualToNumber:[NSNumber numberWithDouble:37+i]], "latitude is %@ expecting %@", result.latitude, [NSNumber numberWithDouble:37+i]);
78
- XCTAssertTrue([result.longitude isEqualToNumber:[NSNumber numberWithDouble:-22+i]], "longitude is %@ expecting %@", result.longitude, [NSNumber numberWithDouble:-22+i]);
79
- XCTAssertTrue([result.provider isEqualToString:@"TEST"], @"provider is expected to be TEST");
80
- XCTAssertTrue([result.locationProvider isEqualToNumber:[NSNumber numberWithInt:-1]], "service_provider is %@ expecting %@", result.locationProvider, [NSNumber numberWithInt:-1]);
81
- }
82
- }
83
-
84
- @end
@@ -1,144 +0,0 @@
1
- //
2
- // MAURSQLiteOpenHelperTest.m
3
- // BackgroundGeolocationTests
4
- //
5
- // Created by Marian Hello on 01/07/16.
6
- // Copyright © 2016 mauron85. All rights reserved.
7
- //
8
-
9
- #import <XCTest/XCTest.h>
10
- #import "MAURSQLiteHelper.h"
11
- #import "MAURSQLiteOpenHelper.h"
12
-
13
- @interface MockCreateOpenHelper : MAURSQLiteOpenHelper
14
- @property (readwrite, nonatomic) BOOL wasCreated;
15
- - (void) onCreate:(FMDatabase*)database;
16
- @end
17
-
18
- @implementation MockCreateOpenHelper : MAURSQLiteOpenHelper
19
- - (instancetype)init
20
- {
21
- self = [super init:@"geolocationtest.db" version:1];
22
- self.wasCreated = NO;
23
- return self;
24
- }
25
- - (void) onCreate:(FMDatabase*)database
26
- {
27
- self.wasCreated = YES;
28
- }
29
- @end
30
-
31
-
32
- @interface MockUpgradeOpenHelper : MAURSQLiteOpenHelper
33
- @property (readwrite, nonatomic) BOOL wasUpgraded;
34
- - (void) onUpgrade:(FMDatabase*)database fromVersion:(NSInteger)oldVersion toVersion:(NSInteger)newVersion;
35
- @end
36
-
37
- @implementation MockUpgradeOpenHelper : MAURSQLiteOpenHelper
38
- - (instancetype)init
39
- {
40
- self = [super init:@"geolocationtest.db" version:2];
41
- self.wasUpgraded = NO;
42
- return self;
43
- }
44
- - (void) onUpgrade:(FMDatabase*)database fromVersion:(NSInteger)oldVersion toVersion:(NSInteger)newVersion
45
- {
46
- self.wasUpgraded = YES;
47
- }
48
- @end
49
-
50
-
51
- @interface MockDowngradeOpenHelper : MAURSQLiteOpenHelper
52
- @property (readwrite, nonatomic) BOOL wasDowngraded;
53
- - (void) onDowngrade:(FMDatabase*)database fromVersion:(NSInteger)oldVersion toVersion:(NSInteger)newVersion;
54
- @end
55
-
56
- @implementation MockDowngradeOpenHelper : MAURSQLiteOpenHelper
57
- - (instancetype)init
58
- {
59
- self = [super init:@"geolocationtest.db" version:1];
60
- self.wasDowngraded = NO;
61
- return self;
62
- }
63
- - (void) onDowngrade:(FMDatabase*)database fromVersion:(NSInteger)oldVersion toVersion:(NSInteger)newVersion
64
- {
65
- self.wasDowngraded = YES;
66
- }
67
- @end
68
-
69
-
70
- @interface MAURSQLiteOpenHelperTest : XCTestCase
71
-
72
- @end
73
-
74
- @implementation MAURSQLiteOpenHelperTest
75
-
76
- - (void)setUp {
77
- [super setUp];
78
- MockCreateOpenHelper *helper = [[MockCreateOpenHelper alloc] init];
79
- NSFileManager *fileManager = [NSFileManager defaultManager];
80
- NSString *dbPath = [helper getDatabasePath];
81
- [fileManager removeItemAtPath:dbPath error:nil];
82
- }
83
-
84
- - (void)tearDown {
85
- // Put teardown code here. This method is called after the invocation of each test method in the class.
86
- [super tearDown];
87
- }
88
-
89
- - (void)testIfDbIsCreated {
90
- MockCreateOpenHelper *helper = [[MockCreateOpenHelper alloc] init];
91
- [helper getWritableDatabase];
92
- [helper close];
93
- NSDictionary *meta = [helper getDatabaseMetadata];
94
- NSLog(@"meta %@ %@ %@", meta[@"dbVersion"], meta[@"created"], meta[@"last_updated"]);
95
- XCTAssertEqual([[meta valueForKey:@"dbVersion"] integerValue], 1);
96
- XCTAssertTrue(helper.wasCreated);
97
- }
98
-
99
- - (void)testIfDbIsUpgraded {
100
- MAURSQLiteOpenHelper *helper;
101
-
102
- // first create empty db version 1
103
- helper = [[MockCreateOpenHelper alloc] init];
104
- [helper getWritableDatabase];
105
- [helper close];
106
-
107
- // now upgrade to version 2
108
- helper = [[MockUpgradeOpenHelper alloc] init];
109
- [helper getWritableDatabase];
110
- [helper close];
111
- NSDictionary *meta = [helper getDatabaseMetadata];
112
- NSLog(@"meta %@ %@ %@", meta[@"dbVersion"], meta[@"created"], meta[@"last_updated"]);
113
- XCTAssertEqual([[meta valueForKey:@"dbVersion"] integerValue], 2);
114
- XCTAssertTrue(((MockUpgradeOpenHelper*)helper).wasUpgraded);
115
- }
116
-
117
- - (void)testIfDbIsDowngraded {
118
- MAURSQLiteOpenHelper *helper;
119
- NSDictionary *meta;
120
-
121
- // first create empty db version 1
122
- helper = [[MockCreateOpenHelper alloc] init];
123
- [helper getWritableDatabase];
124
- [helper close];
125
-
126
- // now upgrade to version 2
127
- helper = [[MockUpgradeOpenHelper alloc] init];
128
- [helper getWritableDatabase];
129
- [helper close];
130
- meta = [helper getDatabaseMetadata];
131
- XCTAssertEqual([[meta valueForKey:@"dbVersion"] integerValue], 2);
132
-
133
-
134
- helper = [[MockDowngradeOpenHelper alloc] init];
135
- [helper getWritableDatabase];
136
- [helper close];
137
- meta = [helper getDatabaseMetadata];
138
- NSLog(@"meta %@ %@ %@", meta[@"dbVersion"], meta[@"created"], meta[@"last_updated"]);
139
- XCTAssertEqual([[meta valueForKey:@"dbVersion"] integerValue], 1);
140
- XCTAssertTrue(((MockDowngradeOpenHelper*)helper).wasDowngraded);
141
- }
142
-
143
-
144
- @end