* Copyright (c) 2024 Huawei Technologies Co., Ltd.
*
* This source code is licensed under the MIT license found in the
* LICENSE-MIT file in the root directory of this source tree.
*/
import { Linking } from 'react-native';
import { TestSuite, TestCase } from '@rnoh/testerino';
import { Button } from '../components';
export function LinkingTest() {
return (
<TestSuite name="Linking (Stub)">
<TestCase
itShould="not crash when checking if url can be opened"
fn={async ({ expect }) => {
expect(await Linking.canOpenURL('http://foobar.com')).to.be.true;
}}
/>
<TestCase
itShould="support http/https urls"
fn={async ({ expect }) => {
expect(await Linking.canOpenURL('http://foobar.com')).to.be.true;
expect(await Linking.canOpenURL('https://foobar.com')).to.be.true;
}}
/>
<TestCase
itShould="support tel urls"
fn={async ({ expect }) => {
expect(await Linking.canOpenURL('tel:1234567890')).to.be.true;
}}
/>
<TestCase
itShould="not support wrong schema urls"
fn={async ({ expect }) => {
expect(await Linking.canOpenURL('wrong://host')).to.be.false;
}}
/>
<TestCase itShould="open phone dialing on press">
<Button
onPress={() => Linking.openURL('tel:1234567890')}
label="Call 1234567890"
/>
</TestCase>
<TestCase itShould="open sms app (sms app doesn't accept parameters)">
<Button
onPress={() => Linking.openURL('sms:1234567890')}
label="Send SMS to 1234567890"
/>
</TestCase>
<TestCase itShould="open web page on press">
<Button
onPress={() =>
Linking.openURL('https://reactnative.dev/docs/linking')
}
label="Open Linking Docs"
/>
</TestCase>
<TestCase itShould="open (http) web page on press">
<Button
onPress={() => Linking.openURL('http://info.cern.ch/')}
label="Open an old webpage"
/>
</TestCase>
<TestCase itShould="open application settings">
<Button onPress={() => Linking.openSettings()} label="Open settings" />
</TestCase>
<TestCase itShould="fail on bad url">
<Button
onPress={() =>
Linking.openURL('bad://url').catch(e => console.warn(e))
}
label="Bad URL"
/>
</TestCase>
</TestSuite>
);
}