-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathrive.harness.ts
More file actions
65 lines (52 loc) · 2.21 KB
/
rive.harness.ts
File metadata and controls
65 lines (52 loc) · 2.21 KB
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
import { describe, it, expect } from 'react-native-harness';
import { RiveFileFactory } from '@rive-app/react-native';
const QUICK_START = require('../assets/rive/quick_start.riv');
const VIEWMODEL = require('../assets/rive/viewmodelproperty.riv');
describe('RiveFile Loading', () => {
it('fromSource with require() works', async () => {
const file = await RiveFileFactory.fromSource(QUICK_START, undefined);
expect(file).toBeDefined();
expect(file.artboardNames).toContain('health_bar_v01');
});
it('fromURL works', async () => {
const file = await RiveFileFactory.fromURL(
'https://cdn.rive.app/animations/vehicles.riv',
undefined
);
expect(file).toBeDefined();
expect(file.artboardNames.length).toBeGreaterThan(0);
});
});
describe('ViewModel', () => {
it('viewModel() basic functionality', async () => {
const file = await RiveFileFactory.fromSource(VIEWMODEL, undefined);
const vm = file.defaultArtboardViewModel();
expect(vm).toBeDefined();
const instance = vm?.createDefaultInstance();
expect(instance).toBeDefined();
const vm1 = instance?.viewModel('vm1');
const vm2 = instance?.viewModel('vm2');
expect(vm1).toBeDefined();
expect(vm2).toBeDefined();
expect(instance?.viewModel('nonexistent')).toBeUndefined();
expect(vm1?.instanceName).toBeDefined();
expect(typeof vm1?.instanceName).toBe('string');
expect(vm1?.stringProperty('name')).toBeDefined();
});
it('replaceViewModel() replaces and shares state', async () => {
const file = await RiveFileFactory.fromSource(VIEWMODEL, undefined);
const vm = file.defaultArtboardViewModel();
const instance = vm?.createDefaultInstance();
expect(instance).toBeDefined();
const vm2Instance = instance?.viewModel('vm2');
expect(vm2Instance).toBeDefined();
const vm2NameProp = vm2Instance?.stringProperty('name');
expect(vm2NameProp).toBeDefined();
const testValue = `test-${Date.now()}`;
vm2NameProp!.value = testValue;
instance?.replaceViewModel('vm1', vm2Instance!);
const vm1AfterReplace = instance?.viewModel('vm1');
const vm1NameProp = vm1AfterReplace?.stringProperty('name');
expect(vm1NameProp?.value).toBe(testValue);
});
});