From bd10e8582a6108edc117641c2ee8b2c3bca1a555 Mon Sep 17 00:00:00 2001 From: Abraham Toriz Date: Tue, 29 Jun 2021 12:04:54 -0500 Subject: [PATCH] test display with old databases --- assets/test_old_db.db | Bin 0 -> 16384 bytes src/commands/display.rs | 39 +++++++++++++++++++++++++++++++++++++++ src/formatters.rs | 6 ++++++ 3 files changed, 45 insertions(+) create mode 100644 assets/test_old_db.db diff --git a/assets/test_old_db.db b/assets/test_old_db.db new file mode 100644 index 0000000000000000000000000000000000000000..2972cc87bfb5300ac044ca0373de9e92331440a8 GIT binary patch literal 16384 zcmeI(&u-c<90zbaiOM>u%`S*ZTzng-g+bPY{<$ohI8>$3F?!%cvf!48khG3dX@?!y z^Xy&r4882K2bgx7gQx@?cIc_ozE&JNKgX8+xmiv=e&~dfv#UhRe97LB7lcysmN7y| zL1jbbhoq^>>N9<4_)A$J_1>2q^@6@Dh3k~vPZ6JS>F3#a-*3BvHXFF_I&J3VA&*tOaO|-#mi(Fv*6j^g_p;Mr7yZ+7 zw?AZO?ICk72ffp->U`er4)&Qh<)1xv=Zj$Ci;892RTaDQql~Xds~6fX4X7n4YD zBee@2rTjMIalkho^|h&OG*)6Y{e9K5I=5({R4&u6CyOz8EJeuEWudK&;Vq+&T49{X zjm4-XrqUPEV=|m^Rh`|a5RaAJY9O6(uHIS2spflgYJMZ?LV^GUAOHafKmY;|fB*y_ z009U<;0Xxy=@xnIy5)$=l#LUXCNs`NmP)H(HERv0W*xDHb8I=s2S;`Luwgs)YD+6` zv90=H(`g;F#{A09BDrJ!BAR(m%zN|a6Iddq009U<00Izz00bZa0SG_<0uX?}V+5X2 zy-4$~DYWOBUfy1Qc%VkwUW}HX|7+%VV*XG!BnUtN0uX=z1Rwwb2tWV=5P$##{sn=e mW{{d0`KcTQ6CO;HOpd~F^CdONt8$PDq4xiy#eV?H^Z!3&BfGu; literal 0 HcmV?d00001 diff --git a/src/commands/display.rs b/src/commands/display.rs index 358c58b..f6dd352 100644 --- a/src/commands/display.rs +++ b/src/commands/display.rs @@ -39,6 +39,7 @@ impl FromStr for Sheet { } } +#[derive(Default)] pub struct Args { ids: bool, start: Option>, @@ -96,3 +97,41 @@ impl<'a> Command<'a> for DisplayCommand { ) } } + +#[cfg(test)] +mod tests { + use super::*; + + use crate::database::SqliteDatabase; + use crate::test_utils::PrettyString; + + #[test] + fn display_as_local_time_if_previous_version() { + let args = Default::default(); + let mut db = SqliteDatabase::from_path("assets/test_old_db.db").unwrap(); + let mut out = Vec::new(); + let mut err = Vec::new(); + let config = Default::default(); + + DisplayCommand::handle(args, &mut db, &mut out, &mut err, &config).unwrap(); + + assert_eq!(PrettyString(&String::from_utf8_lossy(&out)), PrettyString("Timesheet: default + Day Start End Duration Notes + Tue Jun 29, 2021 06:26:49 - 07:26:52 1:00:03 lets do some rust + 1:00:03 + --------------------------------------------------------------------- + Total 1:00:03 +")); + + assert_eq!( + PrettyString(&String::from_utf8_lossy(&err)), + PrettyString("[WARNING] You are using the old timetrap format, it is advised that you update your database using t migrate") + ); + } + + #[test] + fn correctly_use_utc_if_new_version() { + assert!(false, "start with a newly created database"); + assert!(false, "correctly display times in local timezone"); + } +} diff --git a/src/formatters.rs b/src/formatters.rs index 2921ae9..cbf6e39 100644 --- a/src/formatters.rs +++ b/src/formatters.rs @@ -57,6 +57,12 @@ pub enum Formatter { Custom(String), } +impl Default for Formatter { + fn default() -> Formatter { + Formatter::Text + } +} + impl Formatter { /// Prints the given entries to the specified output device. ///