notion-tools 0.1.7

Notion API tools
Documentation
use super::common::*;
use super::page::*;
use super::query_filter::FilterItem as DFItems;
use super::query_filter::*;

#[test]
fn test_build_query_filter() {
    let mut filter = QueryFilter::new();
    filter.or(vec![
        DFItems::checkbox(String::from("Property 1"), CheckboxFilterItem::equals()),
        DFItems::date(
            String::from("Property 2"),
            DateFilterItem::equals(String::from("2024-12-20")),
        ),
        DFItems::and(vec![
            DFItems::select(
                String::from("Property 3"),
                SelectFilterItem::equals(String::from("Option 1")),
            ),
            DFItems::rich_text(
                String::from("Property 4"),
                RichTextFilterItem::contains(String::from("Sample Text")),
            ),
        ]),
    ]);

    let filter = filter.build();
    println!("{}", filter);
    assert_eq!(
        filter,
        r#"{"filter":{"or":[{"property":"Property 1","checkbox":{"equals":true}},{"property":"Property 2","date":{"equals":"2024-12-20"}},{"and":[{"property":"Property 3","select":{"equals":"Option 1"}},{"property":"Property 4","rich_text":{"contains":"Sample Text"}}]}]}}"#,
    );
}

#[test]
fn test_page_property_get_value() {
    let porp = PageProperty::checkbox(true);
    assert_eq!(porp.get_value(), "true");

    let porp = PageProperty::date(String::from("2024-12-20"));
    assert_eq!(porp.get_value(), "2024-12-20");

    let porp = PageProperty::number(123.456);
    assert_eq!(porp.get_value(), "123.456");

    let porp = PageProperty::select(String::from("Option 1"));
    assert_eq!(porp.get_value(), "Option 1");

    let porp = PageProperty::title(RichText::from_str(String::from("Sample Title")));
    assert_eq!(porp.get_value(), "Sample Title");

    let porp = PageProperty::rich_text(vec![RichText::from_str(String::from("Sample Text"))]);
    assert_eq!(porp.get_value(), "Sample Text");

    let porp = PageProperty::url(String::from("https://example.com"));
    assert_eq!(porp.get_value(), "https://example.com");

    let porp = PageProperty::email(String::from("sample@sample.com"));
    assert_eq!(porp.get_value(), "sample@sample.com");

    let porp = PageProperty::phone_number(String::from("1234567890"));
    assert_eq!(porp.get_value(), "1234567890");

    let prop = PageProperty::multi_select(vec![String::from("Option 1"), String::from("Option 2")]);
    assert_eq!(prop.get_value(), "Option 1, Option 2");

    let prop = PageProperty::relation(vec![String::from("Page ID 1"), String::from("Page ID 2")]);
    assert_eq!(prop.get_value(), "Page ID 1, Page ID 2");
}