diff --git a/crates/ely_browser_core/tests/tabs.rs b/crates/ely_browser_core/tests/tabs.rs index 4c541ba..5c29991 100644 --- a/crates/ely_browser_core/tests/tabs.rs +++ b/crates/ely_browser_core/tests/tabs.rs @@ -1,9 +1,7 @@ use std::error::Error; use ely_browser_core::{BrowserCore, CoreError, InitialBrowserConfig}; -use ely_domain::{ - CommandIntent, CommandScope, FavoriteLimit, NewTabDestination, SearchEngine, TabState, UrlText, -}; +use ely_domain::{CommandIntent, CommandScope, NewTabDestination, SearchEngine, TabState, UrlText}; #[test] fn opens_new_tab_below_active_tab() -> Result<(), Box> { @@ -408,99 +406,3 @@ fn closing_active_tab_selects_neighbor_in_same_space() -> Result<(), Box Result<(), Box> { - let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; - - let favorite = core.toggle_active_tab_favorite()?; - let snapshot = core.snapshot()?; - - assert!(favorite); - assert_eq!(snapshot.favorites.len(), 1); - assert_eq!(snapshot.favorites[0].id(), &snapshot.active_tab_id); - - let favorite = core.toggle_active_tab_favorite()?; - let snapshot = core.snapshot()?; - - assert!(!favorite); - assert!(snapshot.favorites.is_empty()); - Ok(()) -} - -#[test] -fn toggles_active_tab_pinned() -> Result<(), Box> { - let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; - - let pinned = core.toggle_active_tab_pinned()?; - let snapshot = core.snapshot()?; - - assert!(pinned); - assert_eq!(snapshot.pinned_tabs.len(), 1); - assert_eq!(snapshot.pinned_tabs[0].id(), &snapshot.active_tab_id); - - let pinned = core.toggle_active_tab_pinned()?; - let snapshot = core.snapshot()?; - - assert!(!pinned); - assert!(snapshot.pinned_tabs.is_empty()); - Ok(()) -} - -#[test] -fn favorite_tabs_are_omitted_from_pinned_section() -> Result<(), Box> { - let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; - - core.toggle_active_tab_pinned()?; - core.toggle_active_tab_favorite()?; - - let snapshot = core.snapshot()?; - assert_eq!(snapshot.favorites.len(), 1); - assert!(snapshot.pinned_tabs.is_empty()); - Ok(()) -} - -#[test] -fn enforces_default_favorite_limit() -> Result<(), Box> { - let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; - - core.toggle_active_tab_favorite()?; - for index in 1..12 { - core.open_tab(UrlText::parse(format!("https://example.com/{index}"))?); - core.toggle_active_tab_favorite()?; - } - - core.open_tab(UrlText::parse("https://example.com/overflow")?); - let error = match core.toggle_active_tab_favorite() { - Err(error) => error, - Ok(_) => return Err("favorite limit should apply".into()), - }; - - assert_eq!(error, CoreError::FavoriteLimitReached { limit: 12 }); - assert_eq!(core.snapshot()?.favorites.len(), 12); - Ok(()) -} - -#[test] -fn enforces_configured_favorite_limit() -> Result<(), Box> { - let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; - core.set_favorite_limit(FavoriteLimit::Six); - - core.toggle_active_tab_favorite()?; - for index in 1..6 { - core.open_tab(UrlText::parse(format!("https://example.com/{index}"))?); - core.toggle_active_tab_favorite()?; - } - - core.open_tab(UrlText::parse("https://example.com/overflow")?); - let error = match core.toggle_active_tab_favorite() { - Err(error) => error, - Ok(_) => return Err("configured favorite limit should apply".into()), - }; - - let snapshot = core.snapshot()?; - assert_eq!(error, CoreError::FavoriteLimitReached { limit: 6 }); - assert_eq!(snapshot.favorite_limit, FavoriteLimit::Six); - assert_eq!(snapshot.favorites.len(), 6); - Ok(()) -} diff --git a/crates/ely_browser_core/tests/tabs_favorites.rs b/crates/ely_browser_core/tests/tabs_favorites.rs new file mode 100644 index 0000000..720b498 --- /dev/null +++ b/crates/ely_browser_core/tests/tabs_favorites.rs @@ -0,0 +1,100 @@ +use std::error::Error; + +use ely_browser_core::{BrowserCore, CoreError, InitialBrowserConfig}; +use ely_domain::{FavoriteLimit, UrlText}; + +#[test] +fn toggles_active_tab_favorite() -> Result<(), Box> { + let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; + + let favorite = core.toggle_active_tab_favorite()?; + let snapshot = core.snapshot()?; + + assert!(favorite); + assert_eq!(snapshot.favorites.len(), 1); + assert_eq!(snapshot.favorites[0].id(), &snapshot.active_tab_id); + + let favorite = core.toggle_active_tab_favorite()?; + let snapshot = core.snapshot()?; + + assert!(!favorite); + assert!(snapshot.favorites.is_empty()); + Ok(()) +} + +#[test] +fn toggles_active_tab_pinned() -> Result<(), Box> { + let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; + + let pinned = core.toggle_active_tab_pinned()?; + let snapshot = core.snapshot()?; + + assert!(pinned); + assert_eq!(snapshot.pinned_tabs.len(), 1); + assert_eq!(snapshot.pinned_tabs[0].id(), &snapshot.active_tab_id); + + let pinned = core.toggle_active_tab_pinned()?; + let snapshot = core.snapshot()?; + + assert!(!pinned); + assert!(snapshot.pinned_tabs.is_empty()); + Ok(()) +} + +#[test] +fn favorite_tabs_are_omitted_from_pinned_section() -> Result<(), Box> { + let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; + + core.toggle_active_tab_pinned()?; + core.toggle_active_tab_favorite()?; + + let snapshot = core.snapshot()?; + assert_eq!(snapshot.favorites.len(), 1); + assert!(snapshot.pinned_tabs.is_empty()); + Ok(()) +} + +#[test] +fn enforces_default_favorite_limit() -> Result<(), Box> { + let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; + + core.toggle_active_tab_favorite()?; + for index in 1..12 { + core.open_tab(UrlText::parse(format!("https://example.com/{index}"))?); + core.toggle_active_tab_favorite()?; + } + + core.open_tab(UrlText::parse("https://example.com/overflow")?); + let error = match core.toggle_active_tab_favorite() { + Err(error) => error, + Ok(_) => return Err("favorite limit should apply".into()), + }; + + assert_eq!(error, CoreError::FavoriteLimitReached { limit: 12 }); + assert_eq!(core.snapshot()?.favorites.len(), 12); + Ok(()) +} + +#[test] +fn enforces_configured_favorite_limit() -> Result<(), Box> { + let mut core = BrowserCore::new(InitialBrowserConfig::ely_defaults()?)?; + core.set_favorite_limit(FavoriteLimit::Six); + + core.toggle_active_tab_favorite()?; + for index in 1..6 { + core.open_tab(UrlText::parse(format!("https://example.com/{index}"))?); + core.toggle_active_tab_favorite()?; + } + + core.open_tab(UrlText::parse("https://example.com/overflow")?); + let error = match core.toggle_active_tab_favorite() { + Err(error) => error, + Ok(_) => return Err("configured favorite limit should apply".into()), + }; + + let snapshot = core.snapshot()?; + assert_eq!(error, CoreError::FavoriteLimitReached { limit: 6 }); + assert_eq!(snapshot.favorite_limit, FavoriteLimit::Six); + assert_eq!(snapshot.favorites.len(), 6); + Ok(()) +}