Skip to content

Commit

Permalink
first try
Browse files Browse the repository at this point in the history
  • Loading branch information
pvinis committed Jan 22, 2020
1 parent 7a44721 commit 7db71e7
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 33 deletions.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"antd": "3.26.7",
"markdown-to-jsx": "6.10.3",
"query-string": "6.10.1",
"ramda": "^0.26.1",
"react": "16.12.0",
"react-content-loader": "4.3.4",
"react-diff-view": "2.4.1",
Expand Down Expand Up @@ -51,4 +52,4 @@
"last 1 safari version"
]
}
}
}
74 changes: 42 additions & 32 deletions src/components/common/VersionSelector.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import styled from 'styled-components'
import { Button, Popover } from 'antd'
import semver from 'semver/preload'
import queryString from 'query-string'
import R from 'ramda'

import { RELEASES_URL } from '../../utils'
import { Select } from './'

Expand Down Expand Up @@ -106,23 +108,43 @@ const getReleasedVersionsWithCandidates = ({
})
}

const getReleasedVersions = ({ releasedVersions, minVersion, maxVersion }) => {
const latestMajorReleaseVersion = getLatestMajorReleaseVersion(
releasedVersions
)

const isVersionAReleaseAndOfLatest = version =>
version.includes('rc') &&
semver.valid(semver.coerce(version)) === latestMajorReleaseVersion
export const isRC = release => release.includes('rc')

export const filterReleases = (
releases,
{ showRCs = 'all', minVersion, maxVersion } // defaults should be whatever will return the same results as the input
) => {
let filteredReleases = releases

switch (showRCs) {
case 'all':
break
case 'latest': {
let latestRelease = filteredReleases[0]
let earliestLatestReleaseIndex = R.findIndex(
release =>
semver.compare(
semver.coerce(release),
semver.coerce(latestRelease)
) !== 0
)(filteredReleases)

let [latest, rest] = R.splitAt(
earliestLatestReleaseIndex,
filteredReleases
)
rest = R.reject(isRC)(rest)
filteredReleases = R.concat(latest, rest)
break
}
case 'none':
filteredReleases = R.reject(isRC)(filteredReleases)
break
default:
break
}

return releasedVersions.filter(
releasedVersion =>
releasedVersion.length > 0 &&
((maxVersion && semver.lt(releasedVersion, maxVersion)) ||
(minVersion &&
semver.gt(releasedVersion, minVersion) &&
!isVersionAReleaseAndOfLatest(releasedVersion)))
)
return filteredReleases
}

// Finds the first minor release (which in react-native is the major) when compared to another version
Expand Down Expand Up @@ -214,16 +236,10 @@ const VersionSelector = ({ showDiff, showReleaseCandidates }) => {
})

setFromVersionList(
getReleasedVersions({
releasedVersions: sanitizedVersions,
maxVersion: toVersionToBeSet
})
filterReleases(sanitizedVersions, { maxVersion: toVersionToBeSet })
)
setToVersionList(
getReleasedVersions({
releasedVersions: sanitizedVersions,
minVersion: fromVersionToBeSet
})
filterReleases(sanitizedVersions, { minVersion: fromVersionToBeSet })
)

setLocalFromVersion(fromVersionToBeSet)
Expand All @@ -249,16 +265,10 @@ const VersionSelector = ({ showDiff, showReleaseCandidates }) => {
}

setFromVersionList(
getReleasedVersions({
releasedVersions: allVersions,
maxVersion: localToVersion
})
filterReleases(allVersions, { maxVersion: localToVersion })
)
setToVersionList(
getReleasedVersions({
releasedVersions: allVersions,
minVersion: localFromVersion
})
filterReleases(allVersions, { minVersion: localFromVersion })
)
}, [
isLoading,
Expand Down
45 changes: 45 additions & 0 deletions src/components/common/VersionSelector.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import R from 'ramda'

import { filterReleases, isRC } from './VersionSelector'

describe('rc checker', () => {
it('should detect rc releases correctly', () => {
expect(isRC('0.62.0')).toBe(false)
expect(isRC('0.62.0-rc.0')).toBe(true)
})
})

const releases = [
'0.63.2-rc.1',
'0.63.2-rc.0',
'0.63.1',
'0.63.0',
'0.62.4',
'0.62.4-rc.1',
'0.62.4-rc.0',
'0.62.3',
'0.62.1',
'0.62.0',
'0.62.0-rc.1',
'0.61.3'
]
const releasesNoRCs = R.reject(isRC)(releases)
// console.log(releasesNoRCs)
const releasesNoRCsWithLatestReleaseRCs = [
'0.63.2-rc.1',
'0.63.2-rc.0',
...releasesNoRCs
]

describe('release filtering', () => {
it('should return the correct releases', () => {
// expect(filterReleases(releasesWithRCs)).toBe(releasesWithRCs)
expect(filterReleases(releases, {})).toEqual(releases)

expect(filterReleases(releases, { showRCs: 'all' })).toEqual(releases)
expect(filterReleases(releases, { showRCs: 'none' })).toEqual(releasesNoRCs)
expect(filterReleases(releases, { showRCs: 'latest' })).toEqual(
releasesNoRCsWithLatestReleaseRCs
)
})
})
5 changes: 5 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8648,6 +8648,11 @@ raf@^3.4.0, raf@^3.4.1:
dependencies:
performance-now "^2.1.0"

ramda@^0.26.1:
version "0.26.1"
resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06"
integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==

randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
Expand Down

0 comments on commit 7db71e7

Please sign in to comment.