darkwing/server/services/browser_profile_services/config/
synchronize.rsuse crate::server::{
dtos::{
browser_profile_dto::BrowserProfileFullData, start_dto::StartRequest,
},
error::Error,
};
use serde::{Deserialize, Serialize};
use super::{screen::Screen, FromStartRequest, Navigator};
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct Synchronize {
#[serde(rename = "name_session")]
pub(super) session_name: String,
pub(crate) is_owned: bool,
}
impl FromStartRequest<Synchronize> for Synchronize {
fn from_start_request(
_bp: &BrowserProfileFullData,
request: &StartRequest,
_navigator: &Navigator,
_screen: &Screen,
_token: &str,
) -> Result<Self, Error> {
Ok(Self {
session_name: match &request.action_synchronizator_session_name {
Some(name) => name.clone(),
None => String::new(),
},
is_owned: request.action_synchronizator_is_owned.unwrap_or(false),
})
}
}
#[cfg(test)]
mod tests {
use crate::server::services::browser_profile_services::config::consts::LINUX_MOCK_PROFILE;
use super::*;
#[test]
fn test_with_no_session_name() -> Result<(), Error> {
let profile = LINUX_MOCK_PROFILE.clone();
let request = StartRequest::get_mock();
let navigator = Navigator::default();
let screen = Screen::default();
let token = String::new();
let result = Synchronize::from_start_request(
&profile, &request, &navigator, &screen, &token,
)?;
assert_eq!(result.session_name, "");
Ok(())
}
#[test]
fn test_with_session_name() -> Result<(), Error> {
let profile = LINUX_MOCK_PROFILE.clone();
let mut request = StartRequest::get_mock();
request.action_synchronizator_session_name = Some("test".to_string());
let navigator = Navigator::default();
let screen = Screen::default();
let token = String::new();
let result = Synchronize::from_start_request(
&profile, &request, &navigator, &screen, &token,
)?;
assert_eq!(result.session_name, "test");
Ok(())
}
}