From 8852f0b7090c612f1d04a60becb55bbe56441eda Mon Sep 17 00:00:00 2001 From: Melody Horn / boringcactus Date: Wed, 23 Jun 2021 21:07:56 -0600 Subject: start impling diesel::Queryable for Models --- examples/tutorial02/main.rs | 37 +++++++++++++++++++++++++++++++++++++ examples/tutorial02/polls/models.rs | 4 ++-- 2 files changed, 39 insertions(+), 2 deletions(-) (limited to 'examples') diff --git a/examples/tutorial02/main.rs b/examples/tutorial02/main.rs index 8f0eebe..bac20e1 100644 --- a/examples/tutorial02/main.rs +++ b/examples/tutorial02/main.rs @@ -25,3 +25,40 @@ fn settings() -> Settings { } tosin::main!(urls(), settings()); + +#[cfg(test)] +mod test { + use super::*; + use diesel::prelude::*; + + #[test] + fn test_models() { + use polls::models::{Choice, Question, choice, question}; + + let settings = settings(); + let connection = settings.database.connect().unwrap(); + + // get the list of all questions + let all_questions = question::table.load::(&connection).unwrap(); + assert!(all_questions.is_empty()); + + // make a new one + let mut q = Question::new( + "What's new?".to_string(), + time::PrimitiveDateTime::now(), + ); + // save it + q.save_mut(); + // it's got an id now! + assert!(q.id().is_some()); + // it's still got all the same fields! + assert_eq!(q.question_text(), "What's new?"); + // we can change them! + q.set_question_text("What's up?"); + q.save_mut(); + + // it should be in the list now, too!! + let all_questions = question::table.load::(&connection).unwrap(); + assert_eq!(all_questions, vec![q]); + } +} diff --git a/examples/tutorial02/polls/models.rs b/examples/tutorial02/polls/models.rs index fb8be8f..d62f219 100644 --- a/examples/tutorial02/polls/models.rs +++ b/examples/tutorial02/polls/models.rs @@ -1,6 +1,6 @@ use tosin::db::models::{Model, Id, gather}; -#[derive(Model)] +#[derive(Model, PartialEq, Debug)] pub struct Question { id: Option, #[model(max_length=200)] @@ -9,7 +9,7 @@ pub struct Question { pub_date: time::PrimitiveDateTime, } -#[derive(Model)] +#[derive(Model, PartialEq, Debug)] pub struct Choice { id: Option, #[model(Question, on_delete=Cascade)] -- cgit v1.2.3