rjango 0.1.1

A full-stack Rust backend framework inspired by Django
Documentation
use std::fmt;

pub const LOOKUP_SEP: &str = "__";
pub const DEFERRED: &str = "DEFERRED";
pub const IMMEDIATE: &str = "IMMEDIATE";

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OnConflict {
    DoNothing,
    Update,
    Raise,
}

impl fmt::Display for OnConflict {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Self::DoNothing => write!(f, "DO NOTHING"),
            Self::Update => write!(f, "UPDATE"),
            Self::Raise => write!(f, "RAISE"),
        }
    }
}

#[cfg(test)]
mod tests {
    use super::{DEFERRED, IMMEDIATE, LOOKUP_SEP, OnConflict};

    #[test]
    fn lookup_sep_matches_django_separator() {
        assert_eq!(LOOKUP_SEP, "__");
    }

    #[test]
    fn on_conflict_display_do_nothing() {
        assert_eq!(OnConflict::DoNothing.to_string(), "DO NOTHING");
    }

    #[test]
    fn on_conflict_display_update() {
        assert_eq!(OnConflict::Update.to_string(), "UPDATE");
    }

    #[test]
    fn on_conflict_display_raise() {
        assert_eq!(OnConflict::Raise.to_string(), "RAISE");
    }

    #[test]
    fn transaction_mode_constants_match_expected_values() {
        assert_eq!(DEFERRED, "DEFERRED");
        assert_eq!(IMMEDIATE, "IMMEDIATE");
    }
}