Skip to content

Commit e496631

Browse files
committed
Added tests.
1 parent fe8ceda commit e496631

File tree

3 files changed

+126
-16
lines changed

3 files changed

+126
-16
lines changed

example/e2e/asyncstorage.spec.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,17 @@ describe('Async Storage', () => {
2929
});
3030

3131
describe('get / set / clear item test', () => {
32+
beforeAll(async () => {
33+
await device.openURL({ url: 'rnc-asyncstorage://unset-delegate' });
34+
});
35+
3236
it('should be visible', async () => {
3337
await test_getSetClear.tap();
3438
await expect(element(by.id('clear_button'))).toExist();
3539
await expect(element(by.id('increaseByTen_button'))).toExist();
3640
await expect(element(by.id('storedNumber_text'))).toExist();
3741
});
42+
3843
it('should store value in async storage', async () => {
3944
const storedNumberText = await element(by.id('storedNumber_text'));
4045
const increaseByTenButton = await element(by.id('increaseByTen_button'));
@@ -65,6 +70,10 @@ describe('Async Storage', () => {
6570
});
6671

6772
describe('merge item test', () => {
73+
beforeAll(async () => {
74+
await device.openURL({ url: 'rnc-asyncstorage://unset-delegate' });
75+
});
76+
6877
it('should be visible', async () => {
6978
await test_mergeItem.tap();
7079
await expect(element(by.id('saveItem_button'))).toExist();
@@ -139,4 +148,72 @@ describe('Async Storage', () => {
139148
expect(storyText).toHaveText(newStory);
140149
});
141150
});
151+
152+
describe('get / set / clear item delegate test', () => {
153+
beforeAll(async () => {
154+
await device.openURL({ url: 'rnc-asyncstorage://set-delegate' });
155+
});
156+
157+
it('should be visible', async () => {
158+
await test_getSetClear.tap();
159+
await expect(element(by.id('clear_button'))).toExist();
160+
await expect(element(by.id('increaseByTen_button'))).toExist();
161+
await expect(element(by.id('storedNumber_text'))).toExist();
162+
});
163+
164+
it('should store value in async storage', async () => {
165+
const storedNumberText = await element(by.id('storedNumber_text'));
166+
const increaseByTenButton = await element(by.id('increaseByTen_button'));
167+
168+
await expect(storedNumberText).toHaveText('');
169+
170+
const tapTimes = Math.round(Math.random() * 9) + 1;
171+
172+
for (let i = 0; i < tapTimes; i++) {
173+
await increaseByTenButton.tap();
174+
}
175+
176+
await expect(storedNumberText).toHaveText(`${tapTimes * 10}`);
177+
await restartButton.tap();
178+
await expect(storedNumberText).toHaveText(`${tapTimes * 10}`);
179+
});
180+
181+
it('should clear item', async () => {
182+
const storedNumberText = await element(by.id('storedNumber_text'));
183+
const increaseByTenButton = await element(by.id('increaseByTen_button'));
184+
const clearButton = await element(by.id('clear_button'));
185+
186+
await increaseByTenButton.tap();
187+
await clearButton.tap();
188+
await restartButton.tap();
189+
await expect(storedNumberText).toHaveText('');
190+
});
191+
});
192+
193+
describe('merge item delegate test', () => {
194+
beforeAll(async () => {
195+
await device.openURL({ url: 'rnc-asyncstorage://set-delegate' });
196+
});
197+
198+
it('should be visible', async () => {
199+
await test_mergeItem.tap();
200+
await expect(element(by.id('saveItem_button'))).toExist();
201+
await expect(element(by.id('mergeItem_button'))).toExist();
202+
await expect(element(by.id('restoreItem_button'))).toExist();
203+
await expect(element(by.id('testInput-name'))).toExist();
204+
await expect(element(by.id('testInput-age'))).toExist();
205+
await expect(element(by.id('testInput-eyes'))).toExist();
206+
await expect(element(by.id('testInput-shoe'))).toExist();
207+
});
208+
209+
it('should crash when merging items in async storage', async () => {
210+
const buttonMergeItem = await element(by.id('mergeItem_button'));
211+
try {
212+
await buttonMergeItem.tap();
213+
fail();
214+
} catch {
215+
// Expected
216+
}
217+
});
218+
});
142219
});

example/ios/AsyncStorageExample/AppDelegate.m

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
@implementation AppDelegate {
1616
NSMutableDictionary<NSString *, NSString *> *_memoryStorage;
17+
__weak RCTBridge *_bridge;
1718
}
1819

1920
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
@@ -66,9 +67,29 @@ - (void)didLoadJavaScript:(NSNotification *)note
6667
return;
6768
}
6869

70+
_bridge = bridge;
6971
[self addDevMenuItemsForBridge:bridge];
7072
}
7173

74+
- (BOOL)application:(UIApplication *)app
75+
openURL:(NSURL *)url
76+
options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
77+
{
78+
if (![url.scheme isEqualToString:@"rnc-asyncstorage"]) {
79+
return NO;
80+
}
81+
82+
if ([url.host isEqualToString:@"set-delegate"]) {
83+
RNCAsyncStorage *asyncStorage = [_bridge moduleForClass:[RNCAsyncStorage class]];
84+
asyncStorage.delegate = self;
85+
} else if ([url.host isEqualToString:@"unset-delegate"]) {
86+
RNCAsyncStorage *asyncStorage = [_bridge moduleForClass:[RNCAsyncStorage class]];
87+
asyncStorage.delegate = nil;
88+
}
89+
90+
return YES;
91+
}
92+
7293
#pragma mark - RNCAsyncStorageDelegate
7394

7495
- (void)allKeys:(nonnull RNCAsyncStorageResultCallback)completion
@@ -80,6 +101,8 @@ - (void)mergeValues:(nonnull NSArray<NSString *> *)values
80101
forKeys:(nonnull NSArray<NSString *> *)keys
81102
completion:(nonnull RNCAsyncStorageResultCallback)block
82103
{
104+
[NSException raise:@"Unimplemented"
105+
format:@"%@ is unimplemented", NSStringFromSelector(_cmd)];
83106
}
84107

85108
- (void)removeAllValues:(nonnull RNCAsyncStorageCompletion)completion

example/ios/AsyncStorageExample/Info.plist

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,36 @@
2020
<string>1.0</string>
2121
<key>CFBundleSignature</key>
2222
<string>????</string>
23+
<key>CFBundleURLTypes</key>
24+
<array>
25+
<dict>
26+
<key>CFBundleTypeRole</key>
27+
<string>Editor</string>
28+
<key>CFBundleURLName</key>
29+
<string>org.reactjs.native.example.AsyncStorageExample</string>
30+
<key>CFBundleURLSchemes</key>
31+
<array>
32+
<string>rnc-asyncstorage</string>
33+
</array>
34+
</dict>
35+
</array>
2336
<key>CFBundleVersion</key>
2437
<string>1</string>
2538
<key>LSRequiresIPhoneOS</key>
2639
<true/>
40+
<key>NSAppTransportSecurity</key>
41+
<dict>
42+
<key>NSAllowsArbitraryLoads</key>
43+
<true/>
44+
<key>NSExceptionDomains</key>
45+
<dict>
46+
<key>localhost</key>
47+
<dict>
48+
<key>NSExceptionAllowsInsecureHTTPLoads</key>
49+
<true/>
50+
</dict>
51+
</dict>
52+
</dict>
2753
<key>NSLocationWhenInUseUsageDescription</key>
2854
<string></string>
2955
<key>UILaunchStoryboardName</key>
@@ -40,21 +66,5 @@
4066
</array>
4167
<key>UIViewControllerBasedStatusBarAppearance</key>
4268
<false/>
43-
<key>NSLocationWhenInUseUsageDescription</key>
44-
<string></string>
45-
<key>NSAppTransportSecurity</key>
46-
<!--See http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/ -->
47-
<dict>
48-
<key>NSAllowsArbitraryLoads</key>
49-
<true/>
50-
<key>NSExceptionDomains</key>
51-
<dict>
52-
<key>localhost</key>
53-
<dict>
54-
<key>NSExceptionAllowsInsecureHTTPLoads</key>
55-
<true/>
56-
</dict>
57-
</dict>
58-
</dict>
5969
</dict>
6070
</plist>

0 commit comments

Comments
 (0)