use reqwest::Method;
use drive_v3_macros::{DriveRequestBuilder, request};
use super::DriveRequestBuilder;
use crate::{Credentials, objects};
#[request(
method=Method::GET,
url="https://www.googleapis.com/drive/v3/about",
returns=objects::About
)]
#[derive(DriveRequestBuilder)]
pub struct GetRequest {}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct About {
credentials: Credentials,
}
impl About {
pub fn new( credentials: &Credentials ) -> Self {
Self { credentials: credentials.clone() }
}
pub fn get( &self ) -> GetRequest {
GetRequest::new(&self.credentials)
}
}
#[cfg(test)]
mod tests {
use reqwest::Method;
use super::About;
use crate::ErrorKind;
use crate::utils::test::{VALID_CREDENTIALS, INVALID_CREDENTIALS};
fn get_resource() -> About {
About::new(&VALID_CREDENTIALS)
}
fn get_invalid_resource() -> About {
About::new(&INVALID_CREDENTIALS)
}
#[test]
fn new_test() {
let credentials = VALID_CREDENTIALS.clone();
let resource = About::new(&credentials);
assert_eq!(resource.credentials, credentials);
}
#[test]
fn get_test() {
let about_request = get_resource().get();
assert_eq!(about_request.method, Method::GET);
assert_eq!(&about_request.url, "https://www.googleapis.com/drive/v3/about");
}
#[test]
fn fields_test() {
let about_request = get_resource().get()
.fields("test-fields");
assert_eq!( about_request.fields, Some("test-fields".into()) );
}
#[test]
fn execute_test() {
let response = get_resource().get()
.fields("kind")
.execute();
assert!( response.is_ok() );
}
#[test]
fn execute_invalid_credentials_test() {
let response = get_invalid_resource().get()
.fields("kind")
.execute();
assert!( response.is_err() );
assert_eq!( response.unwrap_err().kind, ErrorKind::Response );
}
}