mirror of
https://github.com/zhigang1992/react-native-code-push.git
synced 2026-06-13 09:25:36 +08:00
add tests
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
"use strict";
|
||||
|
||||
var React = require("react-native");
|
||||
|
||||
var {
|
||||
AppRegistry,
|
||||
ScrollView,
|
||||
StyleSheet,
|
||||
Text,
|
||||
TouchableOpacity,
|
||||
View,
|
||||
} = React;
|
||||
|
||||
var TESTS = [
|
||||
require("./testcases/FirstUpdateTest"),
|
||||
require("./testcases/NewUpdateTest"),
|
||||
require("./testcases/NoRemotePackageTest"),
|
||||
require("./testcases/RemotePackageAppVersionNewerTest"),
|
||||
require("./testcases/SamePackageTest"),
|
||||
require("./testcases/SwitchDeploymentKeyTest")
|
||||
];
|
||||
|
||||
TESTS.forEach(
|
||||
(test) => AppRegistry.registerComponent(test.displayName, () => test)
|
||||
);
|
||||
|
||||
var CheckForUpdateTestApp = React.createClass({
|
||||
getInitialState() {
|
||||
return {
|
||||
test: null,
|
||||
};
|
||||
},
|
||||
render() {
|
||||
if (this.state.test) {
|
||||
return (
|
||||
<ScrollView>
|
||||
<this.state.test />
|
||||
</ScrollView>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<Text style={styles.row}>
|
||||
CheckForUpdate Tests
|
||||
</Text>
|
||||
<View style={styles.separator} />
|
||||
<ScrollView>
|
||||
{TESTS.map((test) => [
|
||||
<TouchableOpacity
|
||||
onPress={() => this.setState({test})}
|
||||
style={styles.row}>
|
||||
<Text style={styles.testName}>
|
||||
{test.displayName}
|
||||
</Text>
|
||||
<Text style={styles.testDescription}>
|
||||
{test.description}
|
||||
</Text>
|
||||
</TouchableOpacity>,
|
||||
<View style={styles.separator} />
|
||||
])}
|
||||
</ScrollView>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
var styles = StyleSheet.create({
|
||||
container: {
|
||||
backgroundColor: "white",
|
||||
marginTop: 40,
|
||||
margin: 15,
|
||||
},
|
||||
row: {
|
||||
padding: 10,
|
||||
},
|
||||
testName: {
|
||||
fontWeight: "500",
|
||||
},
|
||||
testDescription: {
|
||||
fontSize: 10
|
||||
},
|
||||
separator: {
|
||||
height: 1,
|
||||
backgroundColor: "#bbbbbb",
|
||||
}
|
||||
});
|
||||
|
||||
AppRegistry.registerComponent("CheckForUpdateTestApp", () => CheckForUpdateTestApp);
|
||||
@@ -0,0 +1,48 @@
|
||||
"use strict";
|
||||
|
||||
var React = require("react-native");
|
||||
var CodePush = require("react-native-code-push");
|
||||
var NativeCodePush = React.NativeModules.CodePush;
|
||||
var createTestCaseComponent = require("../../utils/createTestCaseComponent");
|
||||
var PackageMixins = require("react-native-code-push/package-mixins.js")(NativeCodePush);
|
||||
var assert = require("assert");
|
||||
var createMockAcquisitionSdk = require("../../utils/mockAcquisitionSdk");
|
||||
|
||||
var serverPackage = {
|
||||
appVersion: "1.5.0",
|
||||
description: "Angry flappy birds",
|
||||
downloadUrl: "http://www.windowsazure.com/blobs/awperoiuqpweru",
|
||||
isAvailable: true,
|
||||
isMandatory: false,
|
||||
packageHash: "hash240",
|
||||
packageSize: 1024,
|
||||
updateAppVersion: false
|
||||
};
|
||||
|
||||
var localPackage = {};
|
||||
|
||||
var FirstUpdateTest = createTestCaseComponent(
|
||||
"FirstUpdateTest",
|
||||
"should return an update when called from freshly installed binary if the server has one",
|
||||
() => {
|
||||
var mockAcquisitionSdk = createMockAcquisitionSdk(serverPackage, localPackage);
|
||||
var mockConfiguration = { appVersion : "1.5.0" };
|
||||
CodePush.setUpTestDependencies(mockAcquisitionSdk, mockConfiguration, NativeCodePush);
|
||||
CodePush.getCurrentPackage = function () {
|
||||
return Promise.resolve(localPackage);
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
() => {
|
||||
return CodePush.checkForUpdate()
|
||||
.then((update) => {
|
||||
if (update) {
|
||||
assert.deepEqual(update, Object.assign(serverPackage, PackageMixins.remote));
|
||||
} else {
|
||||
throw new Error("checkForUpdate did not return the update from the server");
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
module.exports = FirstUpdateTest;
|
||||
@@ -0,0 +1,58 @@
|
||||
"use strict";
|
||||
|
||||
var React = require("react-native");
|
||||
var CodePush = require("react-native-code-push");
|
||||
var NativeCodePush = React.NativeModules.CodePush;
|
||||
var createTestCaseComponent = require("../../utils/createTestCaseComponent");
|
||||
var PackageMixins = require("react-native-code-push/package-mixins.js")(NativeCodePush);
|
||||
var assert = require("assert");
|
||||
var createMockAcquisitionSdk = require("../../utils/mockAcquisitionSdk");
|
||||
|
||||
var serverPackage = {
|
||||
appVersion: "1.5.0",
|
||||
description: "Angry flappy birds",
|
||||
downloadUrl: "http://www.windowsazure.com/blobs/awperoiuqpweru",
|
||||
isAvailable: true,
|
||||
isMandatory: false,
|
||||
packageHash: "hash240",
|
||||
packageSize: 1024,
|
||||
updateAppVersion: false
|
||||
};
|
||||
|
||||
var localPackage = {
|
||||
downloadURL: "http://www.windowsazure.com/blobs/awperoiuqpweru",
|
||||
description: "Angry flappy birds",
|
||||
appVersion: "1.5.0",
|
||||
label: "2.4.0",
|
||||
isMandatory: false,
|
||||
isAvailable: true,
|
||||
updateAppVersion: false,
|
||||
packageHash: "hash123",
|
||||
packageSize: 1024
|
||||
};
|
||||
|
||||
var NewUpdateTest = createTestCaseComponent(
|
||||
"NewUpdateTest",
|
||||
"should return an update when server has a package that is newer than the current one",
|
||||
() => {
|
||||
var mockAcquisitionSdk = createMockAcquisitionSdk(serverPackage, localPackage);
|
||||
var mockConfiguration = { appVersion : "1.5.0" };
|
||||
CodePush.setUpTestDependencies(mockAcquisitionSdk, mockConfiguration, NativeCodePush);
|
||||
CodePush.getCurrentPackage = function () {
|
||||
return Promise.resolve(localPackage);
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
() => {
|
||||
return CodePush.checkForUpdate()
|
||||
.then((update) => {
|
||||
if (update) {
|
||||
assert.deepEqual(update, Object.assign(serverPackage, PackageMixins.remote));
|
||||
} else {
|
||||
throw new Error("checkForUpdate did not return the update from the server");
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
module.exports = NewUpdateTest;
|
||||
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
|
||||
var React = require("react-native");
|
||||
var CodePush = require("react-native-code-push");
|
||||
var NativeCodePush = React.NativeModules.CodePush;
|
||||
var createTestCaseComponent = require("../../utils/createTestCaseComponent");
|
||||
var PackageMixins = require("react-native-code-push/package-mixins.js")(NativeCodePush);
|
||||
var assert = require("assert");
|
||||
var createMockAcquisitionSdk = require("../../utils/mockAcquisitionSdk");
|
||||
|
||||
var serverPackage = null;
|
||||
var localPackage = {};
|
||||
|
||||
var NoRemotePackageTest = createTestCaseComponent(
|
||||
"NoRemotePackageTest",
|
||||
"should not return an update when the server has none",
|
||||
() => {
|
||||
var mockAcquisitionSdk = createMockAcquisitionSdk(serverPackage, localPackage);
|
||||
var mockConfiguration = { appVersion : "1.5.0" };
|
||||
CodePush.setUpTestDependencies(mockAcquisitionSdk, mockConfiguration, NativeCodePush);
|
||||
CodePush.getCurrentPackage = function () {
|
||||
return Promise.resolve(localPackage);
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
() => {
|
||||
return CodePush.checkForUpdate()
|
||||
.then((update) => {
|
||||
if (update) {
|
||||
throw new Error("checkForUpdate should not return an update if there is none on the server");
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
module.exports = NoRemotePackageTest;
|
||||
@@ -0,0 +1,47 @@
|
||||
"use strict";
|
||||
|
||||
var React = require("react-native");
|
||||
var CodePush = require("react-native-code-push");
|
||||
var NativeCodePush = React.NativeModules.CodePush;
|
||||
var createTestCaseComponent = require("../../utils/createTestCaseComponent");
|
||||
var PackageMixins = require("react-native-code-push/package-mixins.js")(NativeCodePush);
|
||||
var assert = require("assert");
|
||||
var createMockAcquisitionSdk = require("../../utils/mockAcquisitionSdk");
|
||||
|
||||
var serverPackage = {
|
||||
appVersion: "1.5.0",
|
||||
description: "",
|
||||
downloadUrl: "",
|
||||
isAvailable: false,
|
||||
isMandatory: false,
|
||||
packageHash: "",
|
||||
updateAppVersion: true
|
||||
};
|
||||
|
||||
var localPackage = {};
|
||||
|
||||
var RemotePackageAppVersionNewerTest = createTestCaseComponent(
|
||||
"RemotePackageAppVersionNewerTest",
|
||||
"should drop the update when the server reports one with a newer binary version",
|
||||
() => {
|
||||
return new Promise((resolve, reject) => {
|
||||
var mockAcquisitionSdk = createMockAcquisitionSdk(serverPackage, localPackage);
|
||||
var mockConfiguration = { appVersion : "1.0.0" };
|
||||
CodePush.setUpTestDependencies(mockAcquisitionSdk, mockConfiguration, NativeCodePush);
|
||||
CodePush.getCurrentPackage = function () {
|
||||
return Promise.resolve(localPackage);
|
||||
}
|
||||
resolve();
|
||||
});
|
||||
},
|
||||
() => {
|
||||
return CodePush.checkForUpdate()
|
||||
.then((update) => {
|
||||
if (update) {
|
||||
throw new Error("checkForUpdate should not return an update if remote package is of a different binary version");
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
module.exports = RemotePackageAppVersionNewerTest;
|
||||
@@ -0,0 +1,46 @@
|
||||
"use strict";
|
||||
|
||||
var React = require("react-native");
|
||||
var CodePush = require("react-native-code-push");
|
||||
var NativeCodePush = React.NativeModules.CodePush;
|
||||
var createTestCaseComponent = require("../../utils/createTestCaseComponent");
|
||||
var PackageMixins = require("react-native-code-push/package-mixins.js")(NativeCodePush);
|
||||
var assert = require("assert");
|
||||
var createMockAcquisitionSdk = require("../../utils/mockAcquisitionSdk");
|
||||
|
||||
var serverPackage = {
|
||||
appVersion: "1.5.0",
|
||||
description: "Angry flappy birds",
|
||||
downloadUrl: "http://www.windowsazure.com/blobs/awperoiuqpweru",
|
||||
isAvailable: true,
|
||||
isMandatory: false,
|
||||
packageHash: "hash240",
|
||||
packageSize: 1024,
|
||||
updateAppVersion: false
|
||||
};
|
||||
|
||||
var localPackage = serverPackage;
|
||||
|
||||
var SamePackageTest = createTestCaseComponent(
|
||||
"SamePackageTest",
|
||||
"should not return an update when the server's version is the same as the local version",
|
||||
() => {
|
||||
var mockAcquisitionSdk = createMockAcquisitionSdk(serverPackage, localPackage);
|
||||
var mockConfiguration = { appVersion : "1.5.0" };
|
||||
CodePush.setUpTestDependencies(mockAcquisitionSdk, mockConfiguration, NativeCodePush);
|
||||
CodePush.getCurrentPackage = function () {
|
||||
return Promise.resolve(localPackage);
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
() => {
|
||||
return CodePush.checkForUpdate()
|
||||
.then((update) => {
|
||||
if (update) {
|
||||
throw new Error("checkForUpdate should not return a package when local package is identical");
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
module.exports = SamePackageTest;
|
||||
@@ -0,0 +1,48 @@
|
||||
"use strict";
|
||||
|
||||
var React = require("react-native");
|
||||
var CodePush = require("react-native-code-push");
|
||||
var NativeCodePush = React.NativeModules.CodePush;
|
||||
var createTestCaseComponent = require("../../utils/createTestCaseComponent");
|
||||
var PackageMixins = require("react-native-code-push/package-mixins.js")(NativeCodePush);
|
||||
var assert = require("assert");
|
||||
var createMockAcquisitionSdk = require("../../utils/mockAcquisitionSdk");
|
||||
|
||||
var serverPackage = {
|
||||
appVersion: "1.5.0",
|
||||
description: "Angry flappy birds",
|
||||
downloadUrl: "http://www.windowsazure.com/blobs/awperoiuqpweru",
|
||||
isAvailable: true,
|
||||
isMandatory: false,
|
||||
packageHash: "hash240",
|
||||
packageSize: 1024,
|
||||
updateAppVersion: false
|
||||
};
|
||||
var localPackage = {};
|
||||
var deploymentKey = "myKey123";
|
||||
|
||||
var SwitchDeploymentKeyTest = createTestCaseComponent(
|
||||
"SwitchDeploymentKeyTest",
|
||||
"should check for an update under the specified deployment key",
|
||||
() => {
|
||||
var mockAcquisitionSdk = createMockAcquisitionSdk(serverPackage, localPackage, deploymentKey);
|
||||
var mockConfiguration = { appVersion : "1.5.0" };
|
||||
CodePush.setUpTestDependencies(mockAcquisitionSdk, mockConfiguration, NativeCodePush);
|
||||
CodePush.getCurrentPackage = function () {
|
||||
return Promise.resolve(localPackage);
|
||||
}
|
||||
return Promise.resolve();
|
||||
},
|
||||
() => {
|
||||
return CodePush.checkForUpdate(deploymentKey)
|
||||
.then((update) => {
|
||||
if (update) {
|
||||
assert.deepEqual(update, Object.assign(serverPackage, PackageMixins.remote));
|
||||
} else {
|
||||
throw new Error("checkForUpdate did not return the update from the server");
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
module.exports = SwitchDeploymentKeyTest;
|
||||
Reference in New Issue
Block a user