Skip to content

Commit 365928d

Browse files
committed
Auto merge of #3067 - Turbo87:top-version-tests, r=jtgeibel
models/version: Add tests for `Version::top()` function While this can be tested through API tests it's much more convenient to have a unit tests for this functionality. This PR is in preparation for fixing #2710, by introducing a `max_stable_version` property on the `crate` resource. r? `@jtgeibel`
2 parents f1aea90 + ad10cdd commit 365928d

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

src/models/version.rs

+57-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ pub struct NewVersion {
3939

4040
/// The highest version (semver order) and the most recently updated version.
4141
/// Typically used for a single crate.
42-
#[derive(Debug, Clone)]
42+
#[derive(Debug, Clone, Eq, PartialEq)]
4343
pub struct TopVersions {
4444
pub highest: semver::Version,
4545
pub newest: semver::Version,
@@ -252,3 +252,59 @@ impl NewVersion {
252252
Ok(())
253253
}
254254
}
255+
256+
#[cfg(test)]
257+
mod tests {
258+
use super::{TopVersions, Version};
259+
use chrono::NaiveDateTime;
260+
261+
#[track_caller]
262+
fn date(str: &str) -> NaiveDateTime {
263+
str.parse().unwrap()
264+
}
265+
266+
#[track_caller]
267+
fn version(str: &str) -> semver::Version {
268+
semver::Version::parse(str).unwrap()
269+
}
270+
271+
#[test]
272+
fn top_versions_empty() {
273+
let versions = vec![];
274+
assert_eq!(
275+
Version::top(versions),
276+
TopVersions {
277+
highest: version("0.0.0"),
278+
newest: version("0.0.0"),
279+
}
280+
);
281+
}
282+
283+
#[test]
284+
fn top_versions_single() {
285+
let versions = vec![(date("2020-12-03T12:34:56"), version("1.0.0"))];
286+
assert_eq!(
287+
Version::top(versions),
288+
TopVersions {
289+
highest: version("1.0.0"),
290+
newest: version("1.0.0"),
291+
}
292+
);
293+
}
294+
295+
#[test]
296+
fn top_versions_multiple() {
297+
let versions = vec![
298+
(date("2018-12-03T12:34:56"), version("1.0.0")),
299+
(date("2019-12-03T12:34:56"), version("2.0.0-alpha.1")),
300+
(date("2020-12-03T12:34:56"), version("1.1.0")),
301+
];
302+
assert_eq!(
303+
Version::top(versions),
304+
TopVersions {
305+
highest: version("2.0.0-alpha.1"),
306+
newest: version("1.1.0"),
307+
}
308+
);
309+
}
310+
}

0 commit comments

Comments
 (0)