feat: added database struct and tests

This commit is contained in:
Elias Renman
2023-04-02 15:40:18 +02:00
parent 72b3bd1558
commit fe8437de6c
4 changed files with 84 additions and 47 deletions

View File

@@ -1,14 +1,13 @@
#[cfg(test)]
mod tests {
use std::{fs, path::Path};
use crate::database::{table::Table, row::Row};
#[test]
fn should_find_two_rows() {
let mut table: Table = Table::new("Cats", "id");
table.insert_row(Row::new(hashmap!["id" => 1, "name" => "Ozzy"]));
table.insert_row(Row::new(hashmap!["id" => 2, "name" => "Simon"]));
table.insert_row(Row::new(hashmapJson!["id" => 1, "name" => "Ozzy"]));
table.insert_row(Row::new(hashmapJson!["id" => 2, "name" => "Simon"]));
let row = table.find_by_pk(&1u64);
assert_eq!(row.is_err(), false);
@@ -24,32 +23,12 @@ mod tests {
#[test]
fn should_fail_to_find_row() {
let mut table: Table = Table::new("Cats", "id");
table.insert_row(Row::new(hashmap!["id" => 1, "name" => "Ozzy"]));
table.insert_row(Row::new(hashmap!["id" => 2, "name" => "Simon"]));
table.insert_row(Row::new(hashmapJson!["id" => 1, "name" => "Ozzy"]));
table.insert_row(Row::new(hashmapJson!["id" => 2, "name" => "Simon"]));
let row = table.find_by_pk(&3u64);
assert_eq!(row.is_err(), true);
}
#[test]
fn should_write_and_read_to_file() {
let mut table: Table = Table::new("Cats", "id");
table.insert_row(Row::new(hashmap!["id" => 1, "name" => "Ozzy"]));
table.insert_row(Row::new(hashmap!["id" => 2, "name" => "Simon"]));
table.to_file("./db.json");
let exists = Path::try_exists(Path::new("./db.json"));
assert_eq!(exists.unwrap(), true);
let table = Table::from_file("./db.json".to_owned());
assert_eq!(table.is_ok(), true);
let binding = table.unwrap();
let row = binding.find_by_pk(&1u64);
assert_eq!(row.is_ok(), true);
// Cleanup file
fs::remove_file("./db.json");
}
}