kxio 0.1.0

Provides injectable Filesystem and Network resources to make code more testable
Documentation
use super::{RequestBody, RequestMethod};

#[derive(Clone, Debug, PartialEq, Eq)]
pub struct SavedRequest {
    method: RequestMethod,
    url: String,
    body: RequestBody,
}
impl SavedRequest {
    pub fn new(method: RequestMethod, url: &str, body: RequestBody) -> Self {
        Self {
            method,
            url: url.to_string(),
            body,
        }
    }
    pub const fn method(&self) -> RequestMethod {
        self.method
    }
    pub fn url(&self) -> &str {
        &self.url
    }
    pub const fn body(&self) -> &RequestBody {
        &self.body
    }
}

#[cfg(test)]
mod tests {
    use assert2::let_assert;

    use super::*;

    #[test_log::test]
    fn test_saved_request() {
        let request =
            SavedRequest::new(RequestMethod::Get, "https://httpbin.org", RequestBody::None);
        assert_eq!(request.method, RequestMethod::Get);
        assert_eq!(request.url, "https://httpbin.org");
        assert_eq!(request.body, RequestBody::None);
    }

    #[test_log::test]
    fn test_saved_request_body() {
        let request = SavedRequest::new(
            RequestMethod::Get,
            "https://httpbin.org",
            RequestBody::String("body".to_string()),
        );
        let_assert!(RequestBody::String(body) = request.body());
        assert_eq!(body, "body");
    }

    #[test_log::test]
    fn test_saved_request_eq() {
        let request1 = SavedRequest::new(
            RequestMethod::Get,
            "https://httpbin.org",
            RequestBody::String("body".to_string()),
        );
        let request2 = SavedRequest::new(
            RequestMethod::Get,
            "https://httpbin.org",
            RequestBody::String("body".to_string()),
        );
        assert_eq!(request1, request2);
    }

    #[test_log::test]
    fn test_saved_request_ne_method() {
        let request1 = SavedRequest::new(
            RequestMethod::Get,
            "https://httpbin.org",
            RequestBody::String("body".to_string()),
        );
        let request2 = SavedRequest::new(
            RequestMethod::Post,
            "https://httpbin.org",
            RequestBody::String("body".to_string()),
        );
        assert_ne!(request1, request2);
    }

    #[test_log::test]
    fn test_saved_request_ne_url() {
        let request1 = SavedRequest::new(
            RequestMethod::Get,
            "https://httpbin.org",
            RequestBody::String("body".to_string()),
        );
        let request2 = SavedRequest::new(
            RequestMethod::Get,
            "https://httpbin.org2",
            RequestBody::String("body".to_string()),
        );
        assert_ne!(request1, request2);
    }

    #[test_log::test]
    fn test_saved_request_ne_body() {
        let request1 = SavedRequest::new(
            RequestMethod::Get,
            "https://httpbin.org",
            RequestBody::String("body".to_string()),
        );
        let request2 = SavedRequest::new(
            RequestMethod::Get,
            "https://httpbin.org",
            RequestBody::String("body2".to_string()),
        );
        assert_ne!(request1, request2);
    }
}