2016-02-18 19:59:34 +00:00
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Copyright 2016 Realm Inc.
|
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
|
// You may obtain a copy of the License at
|
|
|
|
//
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
//
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
2016-02-15 23:47:07 +00:00
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
import {
|
|
|
|
NativeAppEventEmitter,
|
|
|
|
NativeModules,
|
|
|
|
} from 'react-native';
|
|
|
|
|
|
|
|
import ExampleTest from './example-test';
|
|
|
|
|
|
|
|
const TESTS = {
|
|
|
|
ExampleTest,
|
|
|
|
};
|
|
|
|
|
|
|
|
const SPECIAL_METHODS = {
|
|
|
|
beforeEach: true,
|
|
|
|
afterEach: true,
|
|
|
|
};
|
|
|
|
|
|
|
|
// Listen for event to run a particular test.
|
|
|
|
NativeAppEventEmitter.addListener('realm-run-test', async ({suite, name}) => {
|
|
|
|
let testSuite = TESTS[suite];
|
|
|
|
let testMethod = testSuite && testSuite[name];
|
|
|
|
let error;
|
|
|
|
|
|
|
|
try {
|
|
|
|
if (testMethod) {
|
|
|
|
await testMethod.call(testSuite);
|
|
|
|
} else if (!testSuite || !(name in SPECIAL_METHODS)) {
|
|
|
|
throw new Error('Missing test: ' + suite + '.' + name);
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
error = '' + e;
|
|
|
|
}
|
|
|
|
|
|
|
|
NativeModules.Realm.emit('realm-test-finished', error);
|
|
|
|
});
|
|
|
|
|
|
|
|
// Inform the native test harness about the test suite once it's ready.
|
|
|
|
setTimeout(() => {
|
|
|
|
NativeModules.Realm.emit('realm-test-names', getTestNames());
|
|
|
|
}, 0);
|
|
|
|
|
|
|
|
function getTestNames() {
|
|
|
|
let testNames = {};
|
|
|
|
|
|
|
|
for (let suiteName in TESTS) {
|
|
|
|
let testSuite = TESTS[suiteName];
|
|
|
|
testNames[suiteName] = Object.keys(testSuite);
|
|
|
|
}
|
|
|
|
|
|
|
|
return testNames;
|
|
|
|
}
|