aboutsummaryrefslogtreecommitdiff
path: root/src/models/properties
diff options
context:
space:
mode:
authorGravatar Jake Swenson <jake@jakeswenson.com> 2021-08-29 12:59:04 -0700
committerGravatar Jake Swenson <jake@jakeswenson.com> 2021-08-29 12:59:04 -0700
commit1c22088640e5deeadd61017bd90920b652685b5f (patch)
tree59d110a7c8792c39e0c1ea180fa972eee1c4662d /src/models/properties
parent8d5779a661f4537ef7d87a44bdfbf240eb054ff1 (diff)
downloadnotion-1c22088640e5deeadd61017bd90920b652685b5f.tar.gz
notion-1c22088640e5deeadd61017bd90920b652685b5f.tar.zst
notion-1c22088640e5deeadd61017bd90920b652685b5f.zip
Notion API Version 2021-08-16 support; fix a bunch of modling errors as well
Diffstat (limited to 'src/models/properties')
-rw-r--r--src/models/properties/formulas.rs27
-rw-r--r--src/models/properties/tests.rs28
-rw-r--r--src/models/properties/tests/date_property.json8
-rw-r--r--src/models/properties/tests/formula_date_value.json11
-rw-r--r--src/models/properties/tests/formula_number_value.json8
-rw-r--r--src/models/properties/tests/null_select_property.json5
-rw-r--r--src/models/properties/tests/select_property.json9
7 files changed, 96 insertions, 0 deletions
diff --git a/src/models/properties/formulas.rs b/src/models/properties/formulas.rs
new file mode 100644
index 0000000..20bc7f4
--- /dev/null
+++ b/src/models/properties/formulas.rs
@@ -0,0 +1,27 @@
+#[cfg(test)]
+mod tests {
+ use crate::models::properties::{FormulaResultValue, PropertyValue};
+
+ #[test]
+ fn parse_number_formula_prop() {
+ let _property: PropertyValue =
+ serde_json::from_str(include_str!("tests/formula_number_value.json")).unwrap();
+ }
+
+ #[test]
+ fn parse_date_formula_prop() {
+ let _property: PropertyValue =
+ serde_json::from_str(include_str!("tests/formula_date_value.json")).unwrap();
+ }
+
+ #[test]
+ fn parse_number_formula() {
+ let _value: FormulaResultValue = serde_json::from_str(
+ r#"{
+ "type": "number",
+ "number": 0
+ }"#,
+ )
+ .unwrap();
+ }
+}
diff --git a/src/models/properties/tests.rs b/src/models/properties/tests.rs
new file mode 100644
index 0000000..23b376d
--- /dev/null
+++ b/src/models/properties/tests.rs
@@ -0,0 +1,28 @@
+use super::{DateOrDateTime, PropertyValue};
+use chrono::NaiveDate;
+
+#[test]
+fn verify_date_parsing() {
+ let date = NaiveDate::from_ymd(2021, 01, 02);
+ let result = serde_json::to_string(&DateOrDateTime::Date(date)).unwrap();
+ let parsed: DateOrDateTime = serde_json::from_str(&result).unwrap();
+ println!("{:?}", parsed);
+}
+
+#[test]
+fn parse_date_property() {
+ let _property: PropertyValue =
+ serde_json::from_str(include_str!("tests/date_property.json")).unwrap();
+}
+
+#[test]
+fn parse_null_select_property() {
+ let _property: PropertyValue =
+ serde_json::from_str(include_str!("tests/null_select_property.json")).unwrap();
+}
+
+#[test]
+fn parse_select_property() {
+ let _property: PropertyValue =
+ serde_json::from_str(include_str!("tests/select_property.json")).unwrap();
+}
diff --git a/src/models/properties/tests/date_property.json b/src/models/properties/tests/date_property.json
new file mode 100644
index 0000000..fe2b04f
--- /dev/null
+++ b/src/models/properties/tests/date_property.json
@@ -0,0 +1,8 @@
+{
+ "id": "VXfM",
+ "type": "date",
+ "date": {
+ "start": "2021-09-30",
+ "end": null
+ }
+}
diff --git a/src/models/properties/tests/formula_date_value.json b/src/models/properties/tests/formula_date_value.json
new file mode 100644
index 0000000..84728c5
--- /dev/null
+++ b/src/models/properties/tests/formula_date_value.json
@@ -0,0 +1,11 @@
+{
+ "id": "7*%269",
+ "type": "formula",
+ "formula": {
+ "type": "date",
+ "date": {
+ "start": "2021-09-30",
+ "end": null
+ }
+ }
+}
diff --git a/src/models/properties/tests/formula_number_value.json b/src/models/properties/tests/formula_number_value.json
new file mode 100644
index 0000000..2a831e3
--- /dev/null
+++ b/src/models/properties/tests/formula_number_value.json
@@ -0,0 +1,8 @@
+{
+ "id": "abc",
+ "type": "formula",
+ "formula": {
+ "type": "number",
+ "number": 0
+ }
+}
diff --git a/src/models/properties/tests/null_select_property.json b/src/models/properties/tests/null_select_property.json
new file mode 100644
index 0000000..e0ed24e
--- /dev/null
+++ b/src/models/properties/tests/null_select_property.json
@@ -0,0 +1,5 @@
+{
+ "id": "uX",
+ "type": "select",
+ "select": null
+}
diff --git a/src/models/properties/tests/select_property.json b/src/models/properties/tests/select_property.json
new file mode 100644
index 0000000..db65bdf
--- /dev/null
+++ b/src/models/properties/tests/select_property.json
@@ -0,0 +1,9 @@
+{
+ "id": "uX",
+ "type": "select",
+ "select": {
+ "id": "9c",
+ "name": "Reserved",
+ "color": "green"
+ }
+}