add version rc compare

pull/1434/head
gabrielburnworth 2019-09-13 11:01:27 -07:00
parent 1f3102a8ab
commit edceb18569
4 changed files with 67 additions and 5 deletions

View File

@ -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();

View File

@ -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;
};

View File

@ -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);
});
});

View File

@ -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;
}