summaryrefslogtreecommitdiffstats
path: root/src/actions/copy.rs
blob: 811bcc586bb939b0ef304d9bd08c780985b1951d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use crate::input;
use crate::utils::fileutil;
use crate::utils::misc;

use crate::KhResult;

pub fn do_copy() -> KhResult<()> {
  let khline = input::default_input_khline()?;

  let uid = &misc::make_new_uid();
  let cal = khline.to_cal()?;
  let new_cal = cal.with_uid(uid)?.with_dtstamp_now();

  fileutil::write_cal(&new_cal)?;

  info!("Successfully wrote file: {}", new_cal.get_path().unwrap().display());

  Ok(())
}


#[cfg(test)]
mod integration {
  use super::*;

  use assert_fs::prelude::*;
  use crate::khline::KhLine;
  use crate::testutils::prepare_testdir;
  use crate::utils::stdioutils;
  use predicates::prelude::*;

  #[test]
  fn copy_test() {
    let testdir = prepare_testdir("testdir");
    stdioutils::test_stdin_write("twodaysacrossbuckets.ics");

    do_copy().unwrap();

    let child = testdir.child(".khaleesi/cal/11111111-2222-3333-4444-444444444444@khaleesi.ics");
    child.assert(predicate::path::exists());

    let khline = "11111111-2222-3333-4444-444444444444@khaleesi.ics".parse::<KhLine>().unwrap();
    assert_eq!("11111111-2222-3333-4444-444444444444@khaleesi", khline.to_event().unwrap().get_uid());
  }
}