add version rc compare
parent
1f3102a8ab
commit
edceb18569
|
@ -1,10 +1,8 @@
|
|||
const mockDevice = {
|
||||
checkUpdates: jest.fn(() => { return Promise.resolve(); }),
|
||||
updateConfig: jest.fn(() => { return Promise.resolve(); }),
|
||||
checkUpdates: jest.fn(() => Promise.resolve()),
|
||||
updateConfig: jest.fn(() => Promise.resolve()),
|
||||
};
|
||||
jest.mock("../../../../device", () => ({
|
||||
getDevice: () => (mockDevice)
|
||||
}));
|
||||
jest.mock("../../../../device", () => ({ getDevice: () => mockDevice }));
|
||||
|
||||
import * as React from "react";
|
||||
import { mount } from "enzyme";
|
||||
|
@ -17,6 +15,7 @@ import { Content } from "../../../../constants";
|
|||
describe("<OsUpdateButton/>", () => {
|
||||
beforeEach(() => {
|
||||
bot.currentOSVersion = "6.1.6";
|
||||
bot.hardware.informational_settings.controller_version = "6.1.6";
|
||||
bot.hardware.configuration.beta_opt_in = false;
|
||||
});
|
||||
|
||||
|
@ -250,6 +249,15 @@ describe("<OsUpdateButton/>", () => {
|
|||
testButtonState(testProps, expectedResults);
|
||||
});
|
||||
|
||||
it("on latest beta update: already has beta suffix", () => {
|
||||
const testProps = defaultTestProps();
|
||||
testProps.installedVersion = "6.1.7-beta";
|
||||
testProps.availableBetaVersion = "6.1.7-beta";
|
||||
testProps.betaOptIn = true;
|
||||
const expectedResults = upToDate("6.1.7-beta");
|
||||
testButtonState(testProps, expectedResults);
|
||||
});
|
||||
|
||||
it("beta update has same numeric version: newer commit", () => {
|
||||
const testProps = defaultTestProps();
|
||||
testProps.installedVersion = "7.0.0";
|
||||
|
@ -310,6 +318,28 @@ describe("<OsUpdateButton/>", () => {
|
|||
testButtonState(testProps, expectedResults);
|
||||
});
|
||||
|
||||
it("compares release candidates: newer", () => {
|
||||
const testProps = defaultTestProps();
|
||||
testProps.availableVersion = "6.1.5";
|
||||
testProps.installedVersion = "6.1.6-rc1";
|
||||
testProps.shouldDisplay = () => true;
|
||||
testProps.update_channel = "beta";
|
||||
testProps.availableBetaVersion = "6.1.6-rc2";
|
||||
const expectedResults = updateNeeded("6.1.6-rc2");
|
||||
testButtonState(testProps, expectedResults);
|
||||
});
|
||||
|
||||
it("compares release candidates: older", () => {
|
||||
const testProps = defaultTestProps();
|
||||
testProps.availableVersion = "6.1.5";
|
||||
testProps.installedVersion = "6.1.6-rc2";
|
||||
testProps.shouldDisplay = () => true;
|
||||
testProps.update_channel = "beta";
|
||||
testProps.availableBetaVersion = "6.1.6-rc1";
|
||||
const expectedResults = upToDate("6.1.6-rc1");
|
||||
testButtonState(testProps, expectedResults);
|
||||
});
|
||||
|
||||
it("calls checkUpdates", () => {
|
||||
const buttons = mount(<OsUpdateButton {...fakeProps()} />);
|
||||
const osUpdateButton = buttons.find("button").first();
|
||||
|
|
|
@ -77,6 +77,7 @@ const getInstalledVersion = (
|
|||
currentlyOnBeta: boolean,
|
||||
): string | undefined => {
|
||||
if (!isString(controllerVersion)) { return undefined; }
|
||||
if (controllerVersion.includes("beta")) { return controllerVersion; }
|
||||
return currentlyOnBeta ? controllerVersion + "-beta" : controllerVersion;
|
||||
};
|
||||
|
||||
|
|
|
@ -39,6 +39,15 @@ describe("semver compare", () => {
|
|||
|
||||
expect(semverCompare("1.1.1-beta", "1.1.1"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("1.1.1-rc2", "1.1.1-rc11"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("1.1.1-rc1", "1.1.1"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("1.1.1-rc2", "1.1.2-rc1"))
|
||||
.toBe(SemverResult.RIGHT_IS_GREATER);
|
||||
});
|
||||
|
||||
it("knows when LEFT_IS_GREATER: numeric", () => {
|
||||
|
@ -69,6 +78,15 @@ describe("semver compare", () => {
|
|||
|
||||
expect(semverCompare("1.1.1", "1.1.1-beta"))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("1.1.1-RC99", "1.1.1-rc10"))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("1.1.1", "1.1.1-rc1"))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
|
||||
expect(semverCompare("1.1.1-rc2-", "1.1.1-rc1"))
|
||||
.toBe(SemverResult.LEFT_IS_GREATER);
|
||||
});
|
||||
|
||||
it("knows when EQUAL", () => {
|
||||
|
@ -80,6 +98,9 @@ describe("semver compare", () => {
|
|||
|
||||
expect(semverCompare("1.1.1-beta", "1.1.1-beta"))
|
||||
.toBe(SemverResult.EQUAL);
|
||||
|
||||
expect(semverCompare("1.1.1-rc100", "1.1.1-rc100"))
|
||||
.toBe(SemverResult.EQUAL);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -26,6 +26,8 @@ export function semverCompare(left: string, right: string): SemverResult {
|
|||
const rightSemVer = right.split("-")[0];
|
||||
const leftHasSuffix = left.includes("-");
|
||||
const rightHasSuffix = right.includes("-");
|
||||
const leftRc = parseInt(left.toLowerCase().split("rc")[1]);
|
||||
const rightRc = parseInt(right.toLowerCase().split("rc")[1]);
|
||||
const pa: Array<string | undefined> = leftSemVer.split(".");
|
||||
const pb: Array<string | undefined> = rightSemVer.split(".");
|
||||
for (let i = 0; i < 3; i++) {
|
||||
|
@ -59,6 +61,14 @@ export function semverCompare(left: string, right: string): SemverResult {
|
|||
return SemverResult.RIGHT_IS_GREATER;
|
||||
}
|
||||
|
||||
if (leftRc > rightRc) {
|
||||
return SemverResult.LEFT_IS_GREATER;
|
||||
}
|
||||
|
||||
if (rightRc > leftRc) {
|
||||
return SemverResult.RIGHT_IS_GREATER;
|
||||
}
|
||||
|
||||
return SemverResult.EQUAL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue