Browse Source

Test post parsing

master
Dylan Baker 5 years ago
parent
commit
4cfa3b276d
4 changed files with 96 additions and 0 deletions
  1. 63
    0
      Cargo.lock
  2. 1
    0
      Cargo.toml
  3. 1
    0
      src/main.rs
  4. 31
    0
      src/post.rs

+ 63
- 0
Cargo.lock View File

@@ -48,6 +48,28 @@ dependencies = [
48 48
  "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
49 49
 ]
50 50
 
51
+[[package]]
52
+name = "cloudabi"
53
+version = "0.0.3"
54
+source = "registry+https://github.com/rust-lang/crates.io-index"
55
+dependencies = [
56
+ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
57
+]
58
+
59
+[[package]]
60
+name = "fuchsia-zircon"
61
+version = "0.3.3"
62
+source = "registry+https://github.com/rust-lang/crates.io-index"
63
+dependencies = [
64
+ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
65
+ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
66
+]
67
+
68
+[[package]]
69
+name = "fuchsia-zircon-sys"
70
+version = "0.3.3"
71
+source = "registry+https://github.com/rust-lang/crates.io-index"
72
+
51 73
 [[package]]
52 74
 name = "lazy_static"
53 75
 version = "1.2.0"
@@ -68,6 +90,31 @@ dependencies = [
68 90
  "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
69 91
 ]
70 92
 
93
+[[package]]
94
+name = "rand"
95
+version = "0.5.5"
96
+source = "registry+https://github.com/rust-lang/crates.io-index"
97
+dependencies = [
98
+ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
99
+ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
100
+ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
101
+ "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
102
+ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
103
+]
104
+
105
+[[package]]
106
+name = "rand_core"
107
+version = "0.2.2"
108
+source = "registry+https://github.com/rust-lang/crates.io-index"
109
+dependencies = [
110
+ "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
111
+]
112
+
113
+[[package]]
114
+name = "rand_core"
115
+version = "0.3.0"
116
+source = "registry+https://github.com/rust-lang/crates.io-index"
117
+
71 118
 [[package]]
72 119
 name = "redox_syscall"
73 120
 version = "0.1.42"
@@ -139,6 +186,7 @@ dependencies = [
139 186
  "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
140 187
  "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
141 188
  "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
189
+ "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
142 190
 ]
143 191
 
144 192
 [[package]]
@@ -156,6 +204,14 @@ name = "utf8-ranges"
156 204
 version = "1.0.2"
157 205
 source = "registry+https://github.com/rust-lang/crates.io-index"
158 206
 
207
+[[package]]
208
+name = "uuid"
209
+version = "0.7.1"
210
+source = "registry+https://github.com/rust-lang/crates.io-index"
211
+dependencies = [
212
+ "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
213
+]
214
+
159 215
 [[package]]
160 216
 name = "vec_map"
161 217
 version = "0.8.1"
@@ -192,9 +248,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
192 248
 "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12"
193 249
 "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4"
194 250
 "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e"
251
+"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
252
+"checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
253
+"checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
195 254
 "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1"
196 255
 "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d"
197 256
 "checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16"
257
+"checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c"
258
+"checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372"
259
+"checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db"
198 260
 "checksum redox_syscall 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "cf8fb82a4d1c9b28f1c26c574a5b541f5ffb4315f6c9a791fa47b6a04438fe93"
199 261
 "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
200 262
 "checksum regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467"
@@ -206,6 +268,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
206 268
 "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86"
207 269
 "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
208 270
 "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737"
271
+"checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6"
209 272
 "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
210 273
 "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
211 274
 "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0"

+ 1
- 0
Cargo.toml View File

@@ -7,3 +7,4 @@ authors = ["Dylan Baker"]
7 7
 clap = "2.32.0"
8 8
 lazy_static = "1.2.0"
9 9
 regex = "1"
10
+uuid = { version = "0.7", features = ["v4"] }

+ 1
- 0
src/main.rs View File

@@ -2,6 +2,7 @@ extern crate clap;
2 2
 #[macro_use]
3 3
 extern crate lazy_static;
4 4
 extern crate regex;
5
+extern crate uuid;
5 6
 
6 7
 use std::env;
7 8
 use std::fs;

+ 31
- 0
src/post.rs View File

@@ -29,3 +29,34 @@ pub fn parse_post(path: path::PathBuf) -> Post {
29 29
         slug: String::from(slug),
30 30
     }
31 31
 }
32
+
33
+mod tests {
34
+    use super::*;
35
+    use std::{env, fs};
36
+    use uuid::Uuid;
37
+
38
+    #[test]
39
+    fn test_parse_post() {
40
+        let temp_dir = env::temp_dir();
41
+        let working_dir = temp_dir.join(&Uuid::new_v4().to_string());
42
+        fs::create_dir(&working_dir).unwrap();
43
+        env::set_current_dir(&working_dir).unwrap();
44
+
45
+        let cwd = env::current_dir().unwrap();
46
+        fs::create_dir(cwd.join("posts")).unwrap();
47
+
48
+        let slug = Uuid::new_v4().to_string();
49
+        let filename = format!("{}.md", slug);
50
+        fs::write(
51
+            cwd.join("posts").join(&filename),
52
+            "# This is a post\n\nHere is some content that goes in the post",
53
+        ).unwrap();
54
+
55
+        let post = parse_post(cwd.join("posts").join(&filename));
56
+        assert_eq!("This is a post", post.title);
57
+        assert_eq!("Here is some content that goes in the post", post.body);
58
+        assert_eq!(slug, post.slug);
59
+
60
+        fs::remove_dir_all(temp_dir.join(&working_dir)).unwrap();
61
+    }
62
+}

Loading…
Cancel
Save