torrust-actix 4.2.3

A rich, fast and efficient Bittorrent Tracker.
#[cfg(test)]
mod database_tests {
    use crate::database::database;
    use crate::database::enums::database_drivers::DatabaseDrivers;

    mod helpers_tests {
        use super::*;

        #[test]
        fn test_format_hash_value_binary() {
            let hash = "0123456789abcdef0123456789abcdef01234567";
            assert_eq!(
                database::format_hash_value(DatabaseDrivers::sqlite3, hash, true),
                "X'0123456789abcdef0123456789abcdef01234567'"
            );
            assert_eq!(
                database::format_hash_value(DatabaseDrivers::mysql, hash, true),
                "UNHEX('0123456789abcdef0123456789abcdef01234567')"
            );
            assert_eq!(
                database::format_hash_value(DatabaseDrivers::pgsql, hash, true),
                "decode('0123456789abcdef0123456789abcdef01234567', 'hex')"
            );
        }

        #[test]
        fn test_format_hash_value_text() {
            let hash = "0123456789abcdef0123456789abcdef01234567";
            assert_eq!(
                database::format_hash_value(DatabaseDrivers::sqlite3, hash, false),
                "'0123456789abcdef0123456789abcdef01234567'"
            );
            assert_eq!(
                database::format_hash_value(DatabaseDrivers::mysql, hash, false),
                "'0123456789abcdef0123456789abcdef01234567'"
            );
            assert_eq!(
                database::format_hash_value(DatabaseDrivers::pgsql, hash, false),
                "'0123456789abcdef0123456789abcdef01234567'"
            );
        }

        #[test]
        fn test_upsert_conflict_clause() {
            let columns = &["seeds", "peers"];
            assert_eq!(
                database::upsert_conflict_clause(DatabaseDrivers::sqlite3, "info_hash", columns),
                "ON CONFLICT (`info_hash`) DO UPDATE SET `seeds`=excluded.`seeds`, `peers`=excluded.`peers`"
            );
            assert_eq!(
                database::upsert_conflict_clause(DatabaseDrivers::mysql, "info_hash", columns),
                "ON DUPLICATE KEY UPDATE `seeds`=VALUES(`seeds`), `peers`=VALUES(`peers`)"
            );
            assert_eq!(
                database::upsert_conflict_clause(DatabaseDrivers::pgsql, "info_hash", columns),
                "ON CONFLICT (info_hash) DO UPDATE SET seeds=excluded.seeds, peers=excluded.peers"
            );
        }

        #[test]
        fn test_limit_offset() {
            assert_eq!(database::limit_offset(DatabaseDrivers::sqlite3, 0, 100), "LIMIT 0, 100");
            assert_eq!(database::limit_offset(DatabaseDrivers::mysql, 100, 50), "LIMIT 100, 50");
            assert_eq!(database::limit_offset(DatabaseDrivers::pgsql, 100, 50), "LIMIT 50 OFFSET 100");
        }
    }
}