use kanban_persistence::FormatVersion;
use std::path::{Path, PathBuf};
pub(crate) fn pre_v7_backup_path_for(from: FormatVersion, path: &Path) -> Option<PathBuf> {
match from {
FormatVersion::V1 => Some(path.with_extension("v1.backup")),
FormatVersion::V2 => Some(path.with_extension("v2.backup")),
FormatVersion::V3 => Some(path.with_extension("v3.backup")),
FormatVersion::V4 => Some(path.with_extension("v4.backup")),
FormatVersion::V5 => Some(path.with_extension("v5.backup")),
FormatVersion::V6 => Some(path.with_extension("v6.backup")),
_ => None,
}
}
#[cfg(test)]
mod tests {
use super::*;
use std::path::PathBuf;
fn p() -> PathBuf {
PathBuf::from("/tmp/board.json")
}
#[test]
fn returns_some_for_v1() {
assert_eq!(
pre_v7_backup_path_for(FormatVersion::V1, &p()),
Some(PathBuf::from("/tmp/board.v1.backup"))
);
}
#[test]
fn returns_some_for_v2() {
assert_eq!(
pre_v7_backup_path_for(FormatVersion::V2, &p()),
Some(PathBuf::from("/tmp/board.v2.backup"))
);
}
#[test]
fn returns_some_for_v3() {
assert_eq!(
pre_v7_backup_path_for(FormatVersion::V3, &p()),
Some(PathBuf::from("/tmp/board.v3.backup"))
);
}
#[test]
fn returns_some_for_v4() {
assert_eq!(
pre_v7_backup_path_for(FormatVersion::V4, &p()),
Some(PathBuf::from("/tmp/board.v4.backup"))
);
}
#[test]
fn returns_some_for_v5() {
assert_eq!(
pre_v7_backup_path_for(FormatVersion::V5, &p()),
Some(PathBuf::from("/tmp/board.v5.backup"))
);
}
#[test]
fn returns_some_for_v6() {
assert_eq!(
pre_v7_backup_path_for(FormatVersion::V6, &p()),
Some(PathBuf::from("/tmp/board.v6.backup"))
);
}
#[test]
fn returns_none_for_v7() {
assert_eq!(pre_v7_backup_path_for(FormatVersion::V7, &p()), None);
}
}