Skip to content

Commit c74111a

Browse files
committed
increased code coverage for sql_doc
1 parent 29fbf4d commit c74111a

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

src/sql_doc.rs

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ pub struct SqlDoc {
2020
}
2121

2222
/// Builder structure for the [`SqlDoc`]
23+
#[derive(Debug, Eq, PartialEq)]
2324
pub struct SqlDocBuilder {
2425
/// The source for implementing the [`SqlDoc`] to be built
2526
source: SqlFileDocSource,
@@ -30,6 +31,7 @@ pub struct SqlDocBuilder {
3031
}
3132

3233
/// Enum for specifying a file doc source as a `directory` or a specific `file`
34+
#[derive(Debug, Eq, PartialEq)]
3335
enum SqlFileDocSource {
3436
Dir(PathBuf),
3537
File(PathBuf),
@@ -198,12 +200,12 @@ fn generate_docs_from_file<P: AsRef<Path>>(source: P) -> Result<(PathBuf, SqlFil
198200

199201
#[cfg(test)]
200202
mod tests {
201-
use std::{env, fs, path::PathBuf};
203+
use std::{env, fs, path::PathBuf, vec};
202204

203205
use crate::{
204206
SqlDoc,
205207
docs::{ColumnDoc, SqlFileDoc, TableDoc},
206-
error::DocError,
208+
error::DocError, sql_doc::SqlDocBuilder,
207209
};
208210

209211
#[test]
@@ -435,4 +437,33 @@ mod tests {
435437
assert_eq!(sql_doc.files().iter().len(), 1);
436438
assert_eq!(sql_doc.files(), Some(files).as_deref());
437439
}
440+
441+
#[test]
442+
fn test_sql_builder_deny_from_path() {
443+
let actual_builder = SqlDoc::from_path("path").deny("path1").deny("path2").retain_files();
444+
let expected_builder = SqlDocBuilder{
445+
source: crate::sql_doc::SqlFileDocSource::File(PathBuf::from("path")),
446+
deny: vec!["path1".to_string(), "path2".to_string()],
447+
retain_files: true
448+
};
449+
assert_eq!(actual_builder, expected_builder);
450+
}
451+
#[test]
452+
fn test_sql_builder_to_sql_doc() -> Result<(), Box<dyn std::error::Error>> {
453+
let base = env::temp_dir().join("sql_builder_to_sql_doc");
454+
let _ = fs::remove_dir_all(&base);
455+
fs::create_dir_all(&base)?;
456+
let file = base.join("test_file.sql");
457+
let sample = sample_sql();
458+
let (contents, expected): (Vec<_>, Vec<_>) = sample.into_iter().unzip();
459+
fs::write(&file, contents.join(""))?;
460+
let sql_doc = SqlDoc::from_path(&file).build()?;
461+
let sql_doc_deny = SqlDoc::from_dir(&base).deny(file.to_str().map_or_else(|| panic!("could not find path"), |val| val)).retain_files().build()?;
462+
let doc_deny = SqlDoc::new(vec![], Some(vec![]));
463+
let doc = SqlDoc::new(expected.into_iter().flat_map(SqlDoc::into_tables).collect(), None);
464+
assert_eq!(sql_doc, doc);
465+
assert_eq!(sql_doc_deny, doc_deny);
466+
let _ = fs::remove_dir_all(&base);
467+
Ok(())
468+
}
438469
}

0 commit comments

Comments
 (0)