@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,161 +0,0 @@
1
- //
2
- // MAURConfigTest.m
3
- // BackgroundGeolocationTests
4
- //
5
- // Created by Marian Hello on 02/12/2017.
6
- // Copyright © 2017 mauron85. All rights reserved.
7
- //
8
-
9
- #import <XCTest/XCTest.h>
10
- #import "MAURConfig.h"
11
-
12
- @interface MAURConfigTest : XCTestCase
13
-
14
- @end
15
-
16
- @implementation MAURConfigTest
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)testInit {
29
- MAURConfig *config = [[MAURConfig alloc] init];
30
-
31
- XCTAssertFalse([config hasStationaryRadius]);
32
- XCTAssertFalse([config hasDistanceFilter]);
33
- XCTAssertFalse([config hasDesiredAccuracy]);
34
- XCTAssertFalse([config hasDebug]);
35
- XCTAssertFalse([config hasActivityType]);
36
- XCTAssertFalse([config hasActivitiesInterval]);
37
- XCTAssertFalse([config hasStopOnTerminate]);
38
- XCTAssertFalse([config hasUrl]);
39
- XCTAssertFalse([config hasSyncUrl]);
40
- XCTAssertFalse([config hasSyncThreshold]);
41
- XCTAssertFalse([config hasHttpHeaders]);
42
- XCTAssertFalse([config hasSaveBatteryOnBackground]);
43
- XCTAssertFalse([config hasMaxLocations]);
44
- XCTAssertFalse([config hasPauseLocationUpdates]);
45
- XCTAssertFalse([config hasLocationProvider]);
46
- }
47
-
48
- - (void)testToDictionary {
49
- MAURConfig *config = [[MAURConfig alloc] init];
50
- NSDictionary *dict = [config toDictionary];
51
-
52
- XCTAssertNil(dict[@"url"]);
53
- XCTAssertNil(dict[@"syncUrl"]);
54
- XCTAssertNil(dict[@"httpHeaders"]);
55
- XCTAssertEqualObjects(dict[@"postTemplate"], [MAURConfig getDefaultTemplate]);
56
- }
57
-
58
- - (void)testBooleans {
59
- MAURConfig *config = [[MAURConfig alloc] init];
60
-
61
- config._debug = @YES;
62
- XCTAssertTrue([config isDebugging]);
63
-
64
- config._debug = @NO;
65
- XCTAssertFalse([config isDebugging]);
66
-
67
- }
68
-
69
- - (void)testNullToDictionary {
70
- MAURConfig *config = [[MAURConfig alloc] init];
71
- config.url = (id)[NSNull null];
72
- config.syncUrl = (id)[NSNull null];
73
- config.httpHeaders = (id)[NSNull null];
74
- config._template = (id)[NSNull null];
75
-
76
- NSDictionary *dict = [config toDictionary];
77
- XCTAssertEqualObjects(dict[@"url"], @"");
78
- XCTAssertEqualObjects(dict[@"syncUrl"], @"");
79
- XCTAssertEqualObjects(dict[@"httpHeaders"], @{});
80
- XCTAssertEqualObjects(dict[@"postTemplate"], [MAURConfig getDefaultTemplate]);
81
- }
82
-
83
- - (void)testMerge {
84
- MAURConfig *config1 = [[MAURConfig alloc] init];
85
- config1.distanceFilter = [NSNumber numberWithInt:666];
86
- MAURConfig *config2 = [[MAURConfig alloc] initWithDefaults];
87
- config2.distanceFilter = [NSNumber numberWithInt:999];
88
-
89
- MAURConfig *merger = [MAURConfig merge:config1 withConfig:config2];
90
-
91
- XCTAssertEqual(merger.distanceFilter.intValue, 999);
92
- XCTAssertEqualObjects(merger.activityType, @"OtherNavigation");
93
- XCTAssertEqual(config1.distanceFilter.intValue, 666);
94
- XCTAssertEqual(config2.distanceFilter.intValue, 999);
95
- XCTAssertNotEqual(merger.distanceFilter, config1.distanceFilter);
96
- XCTAssertEqual(merger.distanceFilter, config2.distanceFilter);
97
- XCTAssertNotEqual(config1.distanceFilter, config2.distanceFilter);
98
- }
99
-
100
- - (void)testArrayTemplateToString {
101
- MAURConfig *config = [[MAURConfig alloc] init];
102
- config._template = @[@"latitude", @"longitude", @"custom"];
103
-
104
- XCTAssertEqualObjects([config getTemplateAsString:nil], @"[\"latitude\",\"longitude\",\"custom\"]");
105
- }
106
-
107
- - (void)testDictionaryTemplateToString {
108
- MAURConfig *config = [[MAURConfig alloc] init];
109
- config._template = @{
110
- @"lat": @"latitude",
111
- @"lon": @"longitude",
112
- @"foo": @"bar"
113
- };
114
-
115
- XCTAssertEqualObjects([config getTemplateAsString:nil], @"{\"lat\":\"latitude\",\"lon\":\"longitude\",\"foo\":\"bar\"}");
116
- }
117
-
118
- - (void)testMergeEmpty {
119
- MAURConfig *config1 = [[MAURConfig alloc] init];
120
- MAURConfig *config2 = [[MAURConfig alloc] init];
121
-
122
- config1.url = @"url";
123
- config1.syncUrl = @"syncurl";
124
-
125
- config2.url = @"";
126
- config2.syncUrl = @"";
127
-
128
- MAURConfig *merger = [MAURConfig merge:config1 withConfig:config2];
129
-
130
- XCTAssertEqualObjects(merger.url, @"");
131
- XCTAssertEqualObjects(merger.syncUrl, @"");
132
- }
133
-
134
- - (void)testMergeNullFromDictionary {
135
- MAURConfig *config1 = [[MAURConfig alloc] init];
136
-
137
- config1.url = @"url";
138
- config1.syncUrl = @"syncurl";
139
- config1.httpHeaders = @{@"foo": @"bar"};
140
- config1._template = @{@"lat": @"@latitude"};
141
-
142
- NSDictionary *configProps = @{
143
- @"url": [NSNull null],
144
- @"syncUrl": [NSNull null],
145
- @"httpHeaders": [NSNull null],
146
- @"postTemplate": [NSNull null]
147
- };
148
- MAURConfig *config2 = [MAURConfig fromDictionary:configProps];
149
-
150
- XCTAssertFalse([config2 hasValidUrl]);
151
- XCTAssertFalse([config2 hasValidSyncUrl]);
152
-
153
- MAURConfig *merger = [MAURConfig merge:config1 withConfig:config2];
154
-
155
- XCTAssertEqualObjects(merger.url, @"");
156
- XCTAssertEqualObjects(merger.syncUrl, @"");
157
- XCTAssertEqualObjects(merger.httpHeaders, @{});
158
- XCTAssertEqualObjects(merger._template, [MAURConfig getDefaultTemplate]);
159
- }
160
-
161
- @end
@@ -1,102 +0,0 @@
1
- //
2
- // MAURGeolocationOpenHelperTest.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 "MAURSQLiteOpenHelper.h"
11
- #import "MAURLocationContract.h"
12
- #import "MAURConfigurationContract.h"
13
- #import "MAURGeolocationOpenHelper.h"
14
-
15
-
16
- // Warning: This has to be last test in suite, because it unlinks db file
17
- @interface xGeolocationOpenHelperTest : XCTestCase
18
-
19
- @end
20
-
21
- @implementation xGeolocationOpenHelperTest
22
-
23
- - (void)setUp {
24
- [super setUp];
25
- MAURGeolocationOpenHelper *helper = [[MAURGeolocationOpenHelper alloc] init];
26
- NSFileManager *fileManager = [NSFileManager defaultManager];
27
- NSString *dbPath = [helper getDatabasePath];
28
- [fileManager removeItemAtPath:dbPath error:nil];
29
- }
30
-
31
- - (void)tearDown {
32
- // Put teardown code here. This method is called after the invocation of each test method in the class.
33
- [super tearDown];
34
- }
35
-
36
- - (void)testIfLocationTableIsCreated {
37
- MAURGeolocationOpenHelper *helper = [[MAURGeolocationOpenHelper alloc] init];
38
- FMDatabaseQueue *queue = [helper getWritableDatabase];
39
-
40
- [queue inDatabase:^(FMDatabase *database) {
41
- NSString *sql = [NSString stringWithFormat: @"SELECT count(name) FROM sqlite_master WHERE type='table' AND name='%@';", @LC_TABLE_NAME];
42
- FMResultSet *rs = [database executeQuery:sql];
43
- while([rs next]) {
44
- XCTAssertEqual([rs intForColumnIndex:0], 1);
45
- }
46
- [rs close];
47
- }];
48
-
49
- [helper close];
50
- }
51
-
52
- - (void)testIfConfigurationTableIsCreated {
53
- MAURGeolocationOpenHelper *helper = [[MAURGeolocationOpenHelper alloc] init];
54
- FMDatabaseQueue *queue = [helper getWritableDatabase];
55
-
56
- [queue inDatabase:^(FMDatabase *database) {
57
- NSString *sql = [NSString stringWithFormat: @"SELECT count(name) FROM sqlite_master WHERE type='table' AND name='%@';", @CC_TABLE_NAME];
58
- FMResultSet *rs = [database executeQuery:sql];
59
- while([rs next]) {
60
- XCTAssertEqual([rs intForColumnIndex:0], 1);
61
- }
62
- [rs close];
63
- }];
64
-
65
- [helper close];
66
- }
67
-
68
- - (void)testIfDbIsUpgradedFromVersion2ToVersion3 {
69
- FMDatabaseQueue *queue;
70
-
71
- MAURSQLiteOpenHelper *baseHelper = [[MAURSQLiteOpenHelper alloc] init:@"cordova_bg_geolocation.db" version:2];
72
- [baseHelper getWritableDatabase];
73
-
74
- queue = [baseHelper getWritableDatabase];
75
- [queue inDatabase:^(FMDatabase *database) {
76
- NSString *sql = [NSString stringWithFormat: @"SELECT count(name) FROM sqlite_master WHERE type='table' AND name='%@';", @CC_TABLE_NAME];
77
- FMResultSet *rs = [database executeQuery:sql];
78
- while([rs next]) {
79
- XCTAssertEqual([rs intForColumnIndex:0], 0);
80
- }
81
- [rs close];
82
- }];
83
-
84
- MAURGeolocationOpenHelper *helper = [[MAURGeolocationOpenHelper alloc] init];
85
- queue = [helper getWritableDatabase];
86
-
87
- [queue inDatabase:^(FMDatabase *database) {
88
- NSString *sql = [NSString stringWithFormat: @"SELECT count(name) FROM sqlite_master WHERE type='table' AND name='%@';", @CC_TABLE_NAME];
89
- FMResultSet *rs = [database executeQuery:sql];
90
- while([rs next]) {
91
- XCTAssertEqual([rs intForColumnIndex:0], 1);
92
- }
93
- [rs close];
94
- }];
95
- }
96
-
97
- - (void)testLocationTableSQLStatement {
98
- NSString *sql = [MAURLocationContract createTableSQL];
99
- XCTAssertEqualObjects(sql, @"CREATE TABLE IF NOT EXISTS location ( id INTEGER PRIMARY KEY AUTOINCREMENT , time REAL , accuracy REAL , speed REAL , bearing REAL , altitude REAL , latitude REAL , longitude REAL , provider TEXT , service_provider TEXT , valid INTEGER , recorded_at INTEGER );");
100
- }
101
-
102
- @end
@@ -1,216 +0,0 @@
1
- //
2
- // MAURLocationTest.m
3
- // BackgroundGeolocationTests
4
- //
5
- // Created by Marian Hello on 06/12/2017.
6
- // Copyright © 2017 mauron85. All rights reserved.
7
- //
8
-
9
- #import <XCTest/XCTest.h>
10
- #import "MAURLocation.h"
11
-
12
- @interface MAURLocationTest : XCTestCase
13
-
14
- @end
15
-
16
- @implementation MAURLocationTest
17
-
18
- - (void)testLocationToArray {
19
- MAURLocation *location = [[MAURLocation alloc] init];
20
- location.locationId = [NSNumber numberWithInt:1];
21
- location.time = [NSDate dateWithTimeIntervalSince1970:1000];
22
- location.accuracy = [NSNumber numberWithInt:40];
23
- location.altitudeAccuracy = [NSNumber numberWithInt:50];
24
- location.speed = [NSNumber numberWithInt:60];
25
- location.heading = [NSNumber numberWithInt:1];
26
- location.altitude = [NSNumber numberWithInt:100];
27
- location.latitude = [NSNumber numberWithInt:49];
28
- location.longitude = [NSNumber numberWithInt:20];
29
- location.provider = @"TEST";
30
- location.locationProvider = [NSNumber numberWithInt:-1];
31
- location.radius = [NSNumber numberWithInt:111];
32
- location.isValid = @YES;
33
- location.recordedAt = [NSDate dateWithTimeIntervalSince1970:2000];
34
-
35
- NSArray *template = @[@"@time", @"@altitude", @"@longitude", @"@recordedAt", @"@accuracy", @"", @"custom", @"@heading", @"@speed", @"@provider", @"@id", @"@radius"];
36
-
37
- NSArray *actual = [location toResultFromTemplate:template];
38
- NSArray *expected = @[
39
- [NSNumber numberWithDouble:([location.time timeIntervalSince1970] * 1000)],
40
- location.altitude,
41
- location.longitude,
42
- [NSNumber numberWithDouble:([location.recordedAt timeIntervalSince1970] * 1000)],
43
- location.accuracy,
44
- @"",
45
- @"custom",
46
- location.heading,
47
- location.speed,
48
- location.provider,
49
- location.locationId,
50
- location.radius
51
- ];
52
-
53
- XCTAssertEqualObjects(actual, expected);
54
- }
55
-
56
- - (void)testLocationToDictionary {
57
- MAURLocation *location = [[MAURLocation alloc] init];
58
- location.locationId = [NSNumber numberWithInt:1];
59
- location.time = [NSDate dateWithTimeIntervalSince1970:1000];
60
- location.accuracy = [NSNumber numberWithInt:40];
61
- location.altitudeAccuracy = [NSNumber numberWithInt:50];
62
- location.speed = [NSNumber numberWithInt:60];
63
- location.heading = [NSNumber numberWithInt:1];
64
- location.altitude = [NSNumber numberWithInt:100];
65
- location.latitude = [NSNumber numberWithInt:49];
66
- location.longitude = [NSNumber numberWithInt:20];
67
- location.provider = @"TEST";
68
- location.locationProvider = [NSNumber numberWithInt:-1];
69
- location.radius = [NSNumber numberWithInt:111];
70
- location.isValid = @YES;
71
- location.recordedAt = [NSDate dateWithTimeIntervalSince1970:2000];
72
-
73
- NSDictionary *template = @{
74
- @"id": @"@id",
75
- @"t": @"@time",
76
- @"acu": @"@accuracy",
77
- @"aacu": @"@altitudeAccuracy",
78
- @"s": @"@speed",
79
- @"h": @"@heading",
80
- @"alt": @"@altitude",
81
- @"lat": @"@latitude",
82
- @"lon": @"@longitude",
83
- @"p": @"@provider",
84
- @"lp": @"@locationProvider",
85
- @"r": @"@radius",
86
- @"rt": @"@recordedAt",
87
- @"foo": @"bar",
88
- @"at": @"@",
89
- @"number": @12
90
- };
91
-
92
- NSDictionary *actual = [location toResultFromTemplate:template];
93
- NSDictionary *expected = @{
94
- @"id": location.locationId,
95
- @"t": [NSNumber numberWithDouble:([location.time timeIntervalSince1970] * 1000)],
96
- @"acu": location.accuracy,
97
- @"aacu": location.altitudeAccuracy,
98
- @"s": location.speed,
99
- @"h": location.heading,
100
- @"alt": location.altitude,
101
- @"lat": location.latitude,
102
- @"lon": location.longitude,
103
- @"p": location.provider,
104
- @"lp": location.locationProvider,
105
- @"r": location.radius,
106
- @"rt": [NSNumber numberWithDouble:([location.recordedAt timeIntervalSince1970] * 1000)],
107
- @"foo": @"bar",
108
- @"at": @"@",
109
- @"number": @12
110
- };
111
-
112
- XCTAssertEqualObjects(actual, expected);
113
- }
114
-
115
- - (void)testNestedLocationTemplateToArray {
116
- MAURLocation *location = [[MAURLocation alloc] init];
117
- location.locationId = [NSNumber numberWithInt:1];
118
- location.time = [NSDate dateWithTimeIntervalSince1970:1000];
119
- location.accuracy = [NSNumber numberWithInt:40];
120
- location.altitudeAccuracy = [NSNumber numberWithInt:50];
121
- location.speed = [NSNumber numberWithInt:60];
122
- location.heading = [NSNumber numberWithInt:1];
123
- location.altitude = [NSNumber numberWithInt:100];
124
- location.latitude = [NSNumber numberWithInt:49];
125
- location.longitude = [NSNumber numberWithInt:20];
126
- location.provider = @"TEST";
127
- location.locationProvider = [NSNumber numberWithInt:-1];
128
- location.radius = [NSNumber numberWithInt:111];
129
- location.isValid = @YES;
130
- location.recordedAt = [NSDate dateWithTimeIntervalSince1970:2000];
131
-
132
- NSArray *template = @[@"@time", @{ @"lat": @"@latitude", @"lon": @"@longitude" }, @"@recordedAt", @"@accuracy", @"", @"custom", @"@heading", @"@speed", @"@provider", @"@id", @"@radius"];
133
-
134
- NSArray *actual = [location toResultFromTemplate:template];
135
- NSArray *expected = @[
136
- [NSNumber numberWithDouble:([location.time timeIntervalSince1970] * 1000)],
137
- @{
138
- @"lat": location.latitude,
139
- @"lon": location.longitude,
140
- },
141
- [NSNumber numberWithDouble:([location.recordedAt timeIntervalSince1970] * 1000)],
142
- location.accuracy,
143
- @"",
144
- @"custom",
145
- location.heading,
146
- location.speed,
147
- location.provider,
148
- location.locationId,
149
- location.radius
150
- ];
151
-
152
- XCTAssertEqualObjects(actual, expected);
153
- }
154
-
155
- - (void)testNestedLocationTemplateToDictionary {
156
- MAURLocation *location = [[MAURLocation alloc] init];
157
- location.locationId = [NSNumber numberWithInt:1];
158
- location.time = [NSDate dateWithTimeIntervalSince1970:1000];
159
- location.accuracy = [NSNumber numberWithInt:40];
160
- location.altitudeAccuracy = [NSNumber numberWithInt:50];
161
- location.speed = [NSNumber numberWithInt:60];
162
- location.heading = [NSNumber numberWithInt:1];
163
- location.altitude = [NSNumber numberWithInt:100];
164
- location.latitude = [NSNumber numberWithInt:49];
165
- location.longitude = [NSNumber numberWithInt:20];
166
- location.provider = @"TEST";
167
- location.locationProvider = [NSNumber numberWithInt:-1];
168
- location.radius = [NSNumber numberWithInt:111];
169
- location.isValid = @YES;
170
- location.recordedAt = [NSDate dateWithTimeIntervalSince1970:2000];
171
-
172
- NSDictionary *template = @{
173
- @"data": @{
174
- @"id": @"@id",
175
- @"t": @"@time",
176
- @"acu": @"@accuracy",
177
- @"aacu": @"@altitudeAccuracy",
178
- @"s": @"@speed",
179
- @"h": @"@heading",
180
- @"alt": @"@altitude",
181
- @"lat": @"@latitude",
182
- @"lon": @"@longitude",
183
- @"p": @"@provider",
184
- @"lp": @"@locationProvider",
185
- @"r": @"@radius",
186
- @"rt": @"@recordedAt",
187
- @"foo": @"bar",
188
- @"at": @"@",
189
- @"number": @12
190
- }};
191
-
192
- NSDictionary *actual = [location toResultFromTemplate:template];
193
- NSDictionary *expected = @{
194
- @"data": @{
195
- @"id": location.locationId,
196
- @"t": [NSNumber numberWithDouble:([location.time timeIntervalSince1970] * 1000)],
197
- @"acu": location.accuracy,
198
- @"aacu": location.altitudeAccuracy,
199
- @"s": location.speed,
200
- @"h": location.heading,
201
- @"alt": location.altitude,
202
- @"lat": location.latitude,
203
- @"lon": location.longitude,
204
- @"p": location.provider,
205
- @"lp": location.locationProvider,
206
- @"r": location.radius,
207
- @"rt": [NSNumber numberWithDouble:([location.recordedAt timeIntervalSince1970] * 1000)],
208
- @"foo": @"bar",
209
- @"at": @"@",
210
- @"number": @12
211
- }};
212
-
213
- XCTAssertEqualObjects(actual, expected);
214
- }
215
-
216
- @end
@@ -1,55 +0,0 @@
1
- //
2
- // MAURLocationUploaderTest.m
3
- // BackgroundGeolocationTests
4
- //
5
- // Created by Marian Hello on 07/07/16.
6
- // Copyright © 2016 mauron85. All rights reserved.
7
- //
8
-
9
- #import <XCTest/XCTest.h>
10
- #import "MAURBackgroundSync.h"
11
- #import "MAURSQLiteLocationDAO.h"
12
-
13
- @interface BackgroundSyncTest : XCTestCase
14
-
15
- @end
16
-
17
- @implementation BackgroundSyncTest
18
-
19
- - (void)setUp {
20
- [super setUp];
21
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
22
- [locationDAO clearDatabase];
23
- }
24
-
25
- - (void)tearDown {
26
- // Put teardown code here. This method is called after the invocation of each test method in the class.
27
- [super tearDown];
28
- }
29
-
30
- - (void)testSync {
31
- MAURSQLiteLocationDAO *locationDAO = [MAURSQLiteLocationDAO sharedInstance];
32
- MAURLocation *location;
33
-
34
- for (int i = 0; i < 10; i++) {
35
- location = [[MAURLocation alloc] init];
36
- location.time = [NSDate dateWithTimeIntervalSince1970:1465511097774.577+i];
37
- location.accuracy = [NSNumber numberWithDouble:5+i];
38
- location.speed = [NSNumber numberWithDouble:31.67+i];
39
- location.heading = [NSNumber numberWithDouble:298.83+i];
40
- location.altitude = [NSNumber numberWithDouble:940+i];
41
- location.latitude = [NSNumber numberWithDouble:37.35439853+i];
42
- location.longitude = [NSNumber numberWithDouble:-122.1100721+i];
43
- location.provider = @"TEST";
44
- location.locationProvider = [NSNumber numberWithInt:-1];
45
-
46
- [locationDAO persistLocation:location];
47
- }
48
-
49
- MAURBackgroundSync *uploader = [[MAURBackgroundSync alloc] init];
50
- [uploader sync:@"http://192.168.81.15:3000/testSync" withTemplate:nil withHttpHeaders:nil];
51
- sleep(5);
52
-
53
- }
54
-
55
- @end
@@ -1,43 +0,0 @@
1
- //
2
- // MAURLogReaderTest.m
3
- // BackgroundGeolocationTests
4
- //
5
- // Created by Marian Hello on 13/04/2018.
6
- // Copyright © 2018 mauron85. All rights reserved.
7
- //
8
-
9
- #import <Foundation/Foundation.h>
10
- #import <XCTest/XCTest.h>
11
- #import "MAURLogReader.h"
12
-
13
- @interface MAURLogReaderTest : XCTestCase
14
-
15
- @end
16
-
17
- @implementation MAURLogReaderTest
18
-
19
- - (void)testSqlStatementDescending {
20
- MAURLogReader *lr = [[MAURLogReader alloc] init];
21
- NSString *stmt = [lr prepareSQL:100 fromLogEntryId:0 minLogLevel:14];
22
- XCTAssertEqualObjects(stmt, @"SELECT [rowid], [context], [level], [message], [timestamp] FROM [logs] WHERE [level] <= 14 ORDER BY [timestamp] DESC, [rowid] DESC LIMIT 100;");
23
- }
24
-
25
- - (void)testSqlStatementAscending {
26
- MAURLogReader *lr = [[MAURLogReader alloc] init];
27
- NSString *stmt = [lr prepareSQL:-100 fromLogEntryId:0 minLogLevel:14];
28
- XCTAssertEqualObjects(stmt, @"SELECT [rowid], [context], [level], [message], [timestamp] FROM [logs] WHERE [level] <= 14 ORDER BY [timestamp] ASC, [rowid] ASC LIMIT 100;");
29
- }
30
-
31
- - (void)testSqlStatementFromOffsetDescending {
32
- MAURLogReader *lr = [[MAURLogReader alloc] init];
33
- NSString *stmt = [lr prepareSQL:100 fromLogEntryId:100 minLogLevel:14];
34
- XCTAssertEqualObjects(stmt, @"SELECT [rowid], [context], [level], [message], [timestamp] FROM [logs] WHERE [level] <= 14 AND [rowid] < 100 ORDER BY [timestamp] DESC, [rowid] DESC LIMIT 100;");
35
- }
36
-
37
- - (void)testSqlStatementFromOffsetAscending {
38
- MAURLogReader *lr = [[MAURLogReader alloc] init];
39
- NSString *stmt = [lr prepareSQL:-100 fromLogEntryId:100 minLogLevel:14];
40
- XCTAssertEqualObjects(stmt, @"SELECT [rowid], [context], [level], [message], [timestamp] FROM [logs] WHERE [level] <= 14 AND [rowid] > 100 ORDER BY [timestamp] ASC, [rowid] ASC LIMIT 100;");
41
- }
42
-
43
- @end
@@ -1,102 +0,0 @@
1
- //
2
- // MAURSQLiteConfigurationDAOTest.m
3
- // BackgroundGeolocationTests
4
- //
5
- // Created by Marian Hello on 01/12/2017.
6
- // Copyright © 2017 mauron85. All rights reserved.
7
- //
8
-
9
- #import <XCTest/XCTest.h>
10
- #import "MAURConfig.h"
11
- #import "MAURSQLiteConfigurationDAO.h"
12
-
13
- @interface MAURSQLiteConfigurationDAOTest : XCTestCase
14
-
15
- @end
16
-
17
- @implementation MAURSQLiteConfigurationDAOTest
18
-
19
- - (void)setUp {
20
- [super setUp];
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)testEmptyConfiguration {
29
- MAURSQLiteConfigurationDAO *dao = [MAURSQLiteConfigurationDAO sharedInstance];
30
- XCTAssertTrue([dao clearDatabase]);
31
- MAURConfig *config = [dao retrieveConfiguration];
32
- XCTAssertNil(config);
33
- }
34
-
35
- - (void)testPersistConfiguration {
36
- MAURSQLiteConfigurationDAO *dao = [MAURSQLiteConfigurationDAO sharedInstance];
37
- MAURConfig *config = [[MAURConfig alloc] init];
38
-
39
- BOOL success = [dao persistConfiguration:config];
40
- config = [dao retrieveConfiguration];
41
-
42
- XCTAssertTrue(success);
43
- XCTAssertFalse([config hasStationaryRadius]);
44
- XCTAssertFalse([config hasDistanceFilter]);
45
- XCTAssertFalse([config hasDesiredAccuracy]);
46
- XCTAssertFalse([config hasDebug]);
47
- XCTAssertFalse([config hasActivityType]);
48
- XCTAssertFalse([config hasActivitiesInterval]);
49
- XCTAssertFalse([config hasStopOnTerminate]);
50
- XCTAssertFalse([config hasUrl]);
51
- XCTAssertFalse([config hasSyncUrl]);
52
- XCTAssertFalse([config hasSyncThreshold]);
53
- XCTAssertFalse([config hasHttpHeaders]);
54
- XCTAssertFalse([config hasSaveBatteryOnBackground]);
55
- XCTAssertFalse([config hasMaxLocations]);
56
- XCTAssertFalse([config hasPauseLocationUpdates]);
57
- XCTAssertFalse([config hasLocationProvider]);
58
- }
59
-
60
-
61
- - (void)testRetrieveConfiguration {
62
- MAURSQLiteConfigurationDAO *dao = [MAURSQLiteConfigurationDAO sharedInstance];
63
- MAURConfig *config = [[MAURConfig alloc] init];
64
- config.stationaryRadius = [NSNumber numberWithInt:99];
65
- config.distanceFilter = [NSNumber numberWithInt:20];
66
- config.desiredAccuracy = [NSNumber numberWithInt:30];
67
- config._debug = [NSNumber numberWithBool:YES];
68
- config.activityType = @"MyActivity";
69
- config.activitiesInterval = [NSNumber numberWithInt:1234];
70
- config._stopOnTerminate = [NSNumber numberWithBool:YES];
71
- config.url = @"http://server:3000/locations";
72
- config.syncUrl = @"http://server:3000/sync";
73
- config.syncThreshold = [NSNumber numberWithInt:100];
74
- config.httpHeaders = [[NSMutableDictionary alloc] init];
75
- [config.httpHeaders setObject:@"bar" forKey:@"foo"];
76
- config._saveBatteryOnBackground = [NSNumber numberWithBool:YES];
77
- config.maxLocations = [NSNumber numberWithInt:10];
78
- config._pauseLocationUpdates = [NSNumber numberWithBool:YES];
79
- config.locationProvider = [NSNumber numberWithInt:2];
80
-
81
- [dao persistConfiguration:config];
82
- MAURConfig *stored = [dao retrieveConfiguration];
83
-
84
- XCTAssertEqualObjects(config.stationaryRadius, stored.stationaryRadius);
85
- XCTAssertEqualObjects(config.distanceFilter, stored.distanceFilter);
86
- XCTAssertEqualObjects(config.desiredAccuracy, stored.desiredAccuracy);
87
- XCTAssertEqual([config isDebugging], [stored isDebugging]);
88
- XCTAssertEqualObjects(config.activityType, stored.activityType);
89
- XCTAssertEqualObjects(config.activitiesInterval, stored.activitiesInterval);
90
- XCTAssertEqual([config stopOnTerminate], [stored stopOnTerminate]);
91
- XCTAssertEqualObjects(config.url, stored.url);
92
- XCTAssertEqualObjects(config.syncUrl, stored.syncUrl);
93
- XCTAssertEqualObjects(config.syncThreshold, stored.syncThreshold);
94
- XCTAssertEqualObjects(config.httpHeaders, stored.httpHeaders);
95
- XCTAssertEqual([config saveBatteryOnBackground], [stored saveBatteryOnBackground]);
96
- XCTAssertEqualObjects(config.maxLocations, stored.maxLocations);
97
- XCTAssertEqual([config pauseLocationUpdates], [stored pauseLocationUpdates]);
98
- XCTAssertEqualObjects(config.locationProvider, stored.locationProvider);
99
- }
100
-
101
-
102
- @end