aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMelody Horn / boringcactus <melody@boringcactus.com>2021-06-23 21:07:56 -0600
committerMelody Horn / boringcactus <melody@boringcactus.com>2021-06-23 21:07:56 -0600
commit8852f0b7090c612f1d04a60becb55bbe56441eda (patch)
treef9fe2c8d3782ad2c09bb9fa4171ecb0653cc92b0 /examples
parent88d527d574567420d7aa72f37205bd6b345b8dd7 (diff)
downloadtosin-8852f0b7090c612f1d04a60becb55bbe56441eda.tar.gz
tosin-8852f0b7090c612f1d04a60becb55bbe56441eda.zip
start impling diesel::Queryable for Models
Diffstat (limited to 'examples')
-rw-r--r--examples/tutorial02/main.rs37
-rw-r--r--examples/tutorial02/polls/models.rs4
2 files changed, 39 insertions, 2 deletions
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<impl Connectable> {
}
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::<Question>(&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::<Question>(&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<Id>,
#[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<Id>,
#[model(Question, on_delete=Cascade)]