refactor: Refactored to use more idiomatic let-else statements where applicable
This commit is contained in:
@@ -158,27 +158,23 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn is_ready(&self) -> bool {
|
fn is_ready(&self) -> bool {
|
||||||
if let Some(movie_details_modal) = &self.app.data.radarr_data.movie_details_modal {
|
let Some(movie_details_modal) = &self.app.data.radarr_data.movie_details_modal else {
|
||||||
match self.active_radarr_block {
|
return false;
|
||||||
ActiveRadarrBlock::MovieDetails => {
|
};
|
||||||
!self.app.is_loading && !movie_details_modal.movie_details.is_empty()
|
|
||||||
}
|
match self.active_radarr_block {
|
||||||
ActiveRadarrBlock::MovieHistory => {
|
ActiveRadarrBlock::MovieDetails => {
|
||||||
!self.app.is_loading && !movie_details_modal.movie_history.is_empty()
|
!self.app.is_loading && !movie_details_modal.movie_details.is_empty()
|
||||||
}
|
|
||||||
ActiveRadarrBlock::Cast => {
|
|
||||||
!self.app.is_loading && !movie_details_modal.movie_cast.is_empty()
|
|
||||||
}
|
|
||||||
ActiveRadarrBlock::Crew => {
|
|
||||||
!self.app.is_loading && !movie_details_modal.movie_crew.is_empty()
|
|
||||||
}
|
|
||||||
ActiveRadarrBlock::ManualSearch => {
|
|
||||||
!self.app.is_loading && !movie_details_modal.movie_releases.is_empty()
|
|
||||||
}
|
|
||||||
_ => !self.app.is_loading,
|
|
||||||
}
|
}
|
||||||
} else {
|
ActiveRadarrBlock::MovieHistory => {
|
||||||
false
|
!self.app.is_loading && !movie_details_modal.movie_history.is_empty()
|
||||||
|
}
|
||||||
|
ActiveRadarrBlock::Cast => !self.app.is_loading && !movie_details_modal.movie_cast.is_empty(),
|
||||||
|
ActiveRadarrBlock::Crew => !self.app.is_loading && !movie_details_modal.movie_crew.is_empty(),
|
||||||
|
ActiveRadarrBlock::ManualSearch => {
|
||||||
|
!self.app.is_loading && !movie_details_modal.movie_releases.is_empty()
|
||||||
|
}
|
||||||
|
_ => !self.app.is_loading,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -110,23 +110,23 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveSonarrBlock> for EpisodeDetailsHandle
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn is_ready(&self) -> bool {
|
fn is_ready(&self) -> bool {
|
||||||
!self.app.is_loading
|
if self.app.is_loading {
|
||||||
&& if let Some(season_details_modal) = self.app.data.sonarr_data.season_details_modal.as_ref()
|
return false;
|
||||||
{
|
}
|
||||||
if let Some(episode_details_modal) = &season_details_modal.episode_details_modal {
|
|
||||||
match self.active_sonarr_block {
|
let Some(season_details_modal) = self.app.data.sonarr_data.season_details_modal.as_ref() else {
|
||||||
ActiveSonarrBlock::EpisodeHistory => !episode_details_modal.episode_history.is_empty(),
|
return false;
|
||||||
ActiveSonarrBlock::ManualEpisodeSearch => {
|
};
|
||||||
!episode_details_modal.episode_releases.is_empty()
|
|
||||||
}
|
let Some(episode_details_modal) = &season_details_modal.episode_details_modal else {
|
||||||
_ => true,
|
return false;
|
||||||
}
|
};
|
||||||
} else {
|
|
||||||
false
|
match self.active_sonarr_block {
|
||||||
}
|
ActiveSonarrBlock::EpisodeHistory => !episode_details_modal.episode_history.is_empty(),
|
||||||
} else {
|
ActiveSonarrBlock::ManualEpisodeSearch => !episode_details_modal.episode_releases.is_empty(),
|
||||||
false
|
_ => true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_scroll_up(&mut self) {}
|
fn handle_scroll_up(&mut self) {}
|
||||||
|
|||||||
@@ -162,17 +162,20 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveSonarrBlock> for SeasonDetailsHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn is_ready(&self) -> bool {
|
fn is_ready(&self) -> bool {
|
||||||
!self.app.is_loading
|
if self.app.is_loading {
|
||||||
&& if let Some(season_details_modal) = &self.app.data.sonarr_data.season_details_modal {
|
return false;
|
||||||
match self.active_sonarr_block {
|
}
|
||||||
ActiveSonarrBlock::SeasonDetails => !season_details_modal.episodes.is_empty(),
|
|
||||||
ActiveSonarrBlock::SeasonHistory => !season_details_modal.season_history.is_empty(),
|
let Some(season_details_modal) = &self.app.data.sonarr_data.season_details_modal else {
|
||||||
ActiveSonarrBlock::ManualSeasonSearch => !season_details_modal.season_releases.is_empty(),
|
return false;
|
||||||
_ => true,
|
};
|
||||||
}
|
|
||||||
} else {
|
match self.active_sonarr_block {
|
||||||
false
|
ActiveSonarrBlock::SeasonDetails => !season_details_modal.episodes.is_empty(),
|
||||||
}
|
ActiveSonarrBlock::SeasonHistory => !season_details_modal.season_history.is_empty(),
|
||||||
|
ActiveSonarrBlock::ManualSeasonSearch => !season_details_modal.season_releases.is_empty(),
|
||||||
|
_ => true,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_scroll_up(&mut self) {}
|
fn handle_scroll_up(&mut self) {}
|
||||||
|
|||||||
@@ -195,19 +195,20 @@ mod tests {
|
|||||||
}
|
}
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::BlocklistResponse(blocklist) = network
|
let RadarrSerdeable::BlocklistResponse(blocklist) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetBlocklist)
|
.handle_radarr_event(RadarrEvent::GetBlocklist)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected BlocklistResponse")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.blocklist.items,
|
mock.assert_async().await;
|
||||||
expected_blocklist
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.blocklist.items,
|
||||||
assert!(app.lock().await.data.radarr_data.blocklist.sort_asc);
|
expected_blocklist
|
||||||
assert_eq!(blocklist, response);
|
);
|
||||||
}
|
assert!(app.lock().await.data.radarr_data.blocklist.sort_asc);
|
||||||
|
assert_eq!(blocklist, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|||||||
@@ -277,19 +277,20 @@ mod tests {
|
|||||||
}
|
}
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::Collections(collections) = network
|
let RadarrSerdeable::Collections(collections) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetCollections)
|
.handle_radarr_event(RadarrEvent::GetCollections)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected Collections")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.collections.items,
|
mock.assert_async().await;
|
||||||
expected_collections
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.collections.items,
|
||||||
assert!(app.lock().await.data.radarr_data.collections.sort_asc);
|
expected_collections
|
||||||
assert_eq!(collections, response);
|
);
|
||||||
}
|
assert!(app.lock().await.data.radarr_data.collections.sort_asc);
|
||||||
|
assert_eq!(collections, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|||||||
@@ -48,18 +48,19 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::DownloadsResponse(downloads) = network
|
let RadarrSerdeable::DownloadsResponse(downloads) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetDownloads(500))
|
.handle_radarr_event(RadarrEvent::GetDownloads(500))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected DownloadsResponse")
|
||||||
pretty_assertions::assert_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.downloads.items,
|
mock.assert_async().await;
|
||||||
downloads_response().records
|
pretty_assertions::assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.downloads.items,
|
||||||
pretty_assertions::assert_eq!(downloads, response);
|
downloads_response().records
|
||||||
}
|
);
|
||||||
|
pretty_assertions::assert_eq!(downloads, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|||||||
@@ -623,18 +623,19 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::Indexers(indexers) = network
|
let RadarrSerdeable::Indexers(indexers) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetIndexers)
|
.handle_radarr_event(RadarrEvent::GetIndexers)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Indexers")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.indexers.items,
|
async_server.assert_async().await;
|
||||||
vec![indexer()]
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.indexers.items,
|
||||||
assert_eq!(indexers, response);
|
vec![indexer()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(indexers, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -658,18 +659,19 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::IndexerSettings(settings) = network
|
let RadarrSerdeable::IndexerSettings(settings) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetAllIndexerSettings)
|
.handle_radarr_event(RadarrEvent::GetAllIndexerSettings)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected IndexerSettings")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.indexer_settings,
|
async_server.assert_async().await;
|
||||||
Some(indexer_settings())
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.indexer_settings,
|
||||||
assert_eq!(settings, response);
|
Some(indexer_settings())
|
||||||
}
|
);
|
||||||
|
assert_eq!(settings, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -755,19 +757,20 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::Value(value) = network
|
let RadarrSerdeable::Value(value) = network
|
||||||
.handle_radarr_event(RadarrEvent::TestIndexer(1))
|
.handle_radarr_event(RadarrEvent::TestIndexer(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_details_server.assert_async().await;
|
panic!("Expected Value")
|
||||||
async_test_server.assert_async().await;
|
};
|
||||||
assert_eq!(
|
async_details_server.assert_async().await;
|
||||||
app.lock().await.data.radarr_data.indexer_test_errors,
|
async_test_server.assert_async().await;
|
||||||
Some("\"test failure\"".to_owned())
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.indexer_test_errors,
|
||||||
assert_eq!(value, response_json)
|
Some("\"test failure\"".to_owned())
|
||||||
}
|
);
|
||||||
|
assert_eq!(value, response_json);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -812,19 +815,20 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::Value(value) = network
|
let RadarrSerdeable::Value(value) = network
|
||||||
.handle_radarr_event(RadarrEvent::TestIndexer(1))
|
.handle_radarr_event(RadarrEvent::TestIndexer(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_details_server.assert_async().await;
|
panic!("Expected Value")
|
||||||
async_test_server.assert_async().await;
|
};
|
||||||
assert_eq!(
|
async_details_server.assert_async().await;
|
||||||
app.lock().await.data.radarr_data.indexer_test_errors,
|
async_test_server.assert_async().await;
|
||||||
Some(String::new())
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.indexer_test_errors,
|
||||||
assert_eq!(value, json!({}));
|
Some(String::new())
|
||||||
}
|
);
|
||||||
|
assert_eq!(value, json!({}));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -890,34 +894,35 @@ mod tests {
|
|||||||
.set_items(indexers);
|
.set_items(indexers);
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::IndexerTestResults(results) = network
|
let RadarrSerdeable::IndexerTestResults(results) = network
|
||||||
.handle_radarr_event(RadarrEvent::TestAllIndexers)
|
.handle_radarr_event(RadarrEvent::TestAllIndexers)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected IndexerTestResults")
|
||||||
assert!(
|
};
|
||||||
app
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.radarr_data
|
.await
|
||||||
.indexer_test_all_results
|
.data
|
||||||
.is_some()
|
.radarr_data
|
||||||
);
|
.indexer_test_all_results
|
||||||
assert_eq!(
|
.is_some()
|
||||||
app
|
);
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.radarr_data
|
.await
|
||||||
.indexer_test_all_results
|
.data
|
||||||
.as_ref()
|
.radarr_data
|
||||||
.unwrap()
|
.indexer_test_all_results
|
||||||
.items,
|
.as_ref()
|
||||||
indexer_test_results_modal_items
|
.unwrap()
|
||||||
);
|
.items,
|
||||||
assert_eq!(results, response);
|
indexer_test_results_modal_items
|
||||||
}
|
);
|
||||||
|
assert_eq!(results, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -382,19 +382,20 @@ mod tests {
|
|||||||
app_arc.lock().await.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default());
|
app_arc.lock().await.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default());
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let RadarrSerdeable::Credits(credits) = network
|
let RadarrSerdeable::Credits(credits) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetMovieCredits(1))
|
.handle_radarr_event(RadarrEvent::GetMovieCredits(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
let app = app_arc.lock().await;
|
panic!("Expected Credits")
|
||||||
let movie_details_modal = app.data.radarr_data.movie_details_modal.as_ref().unwrap();
|
};
|
||||||
|
let app = app_arc.lock().await;
|
||||||
|
let movie_details_modal = app.data.radarr_data.movie_details_modal.as_ref().unwrap();
|
||||||
|
|
||||||
async_server.assert_async().await;
|
async_server.assert_async().await;
|
||||||
assert_eq!(movie_details_modal.movie_cast.items, vec![cast_credit()]);
|
assert_eq!(movie_details_modal.movie_cast.items, vec![cast_credit()]);
|
||||||
assert_eq!(movie_details_modal.movie_crew.items, vec![crew_credit()]);
|
assert_eq!(movie_details_modal.movie_crew.items, vec![crew_credit()]);
|
||||||
assert_eq!(credits, response);
|
assert_eq!(credits, response);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -570,77 +571,78 @@ mod tests {
|
|||||||
BiMap::from_iter([(2222, "HD - 1080p".to_owned())]);
|
BiMap::from_iter([(2222, "HD - 1080p".to_owned())]);
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let RadarrSerdeable::Movie(movie) = network
|
let RadarrSerdeable::Movie(movie) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetMovieDetails(1))
|
.handle_radarr_event(RadarrEvent::GetMovieDetails(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Movie")
|
||||||
assert!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.radarr_data
|
.await
|
||||||
.movie_details_modal
|
.data
|
||||||
.is_some()
|
.radarr_data
|
||||||
);
|
.movie_details_modal
|
||||||
assert_eq!(movie, response);
|
.is_some()
|
||||||
|
);
|
||||||
|
assert_eq!(movie, response);
|
||||||
|
|
||||||
let app = app_arc.lock().await;
|
let app = app_arc.lock().await;
|
||||||
let movie_details_modal = app.data.radarr_data.movie_details_modal.as_ref().unwrap();
|
let movie_details_modal = app.data.radarr_data.movie_details_modal.as_ref().unwrap();
|
||||||
assert_str_eq!(
|
assert_str_eq!(
|
||||||
movie_details_modal.movie_details.get_text(),
|
movie_details_modal.movie_details.get_text(),
|
||||||
formatdoc!(
|
formatdoc!(
|
||||||
"Title: Test
|
"Title: Test
|
||||||
Year: 2023
|
Year: 2023
|
||||||
Runtime: 2h 0m
|
Runtime: 2h 0m
|
||||||
Rating: R
|
Rating: R
|
||||||
Collection: Test Collection
|
Collection: Test Collection
|
||||||
Status: Downloaded
|
Status: Downloaded
|
||||||
Description: Blah blah blah
|
Description: Blah blah blah
|
||||||
TMDB: 99%
|
TMDB: 99%
|
||||||
IMDB: 9.9
|
IMDB: 9.9
|
||||||
Rotten Tomatoes:
|
Rotten Tomatoes:
|
||||||
Quality Profile: HD - 1080p
|
Quality Profile: HD - 1080p
|
||||||
Size: 3.30 GB
|
|
||||||
Path: /nfs/movies
|
|
||||||
Studio: 21st Century Alex
|
|
||||||
Genres: cool, family, fun"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
assert_str_eq!(
|
|
||||||
movie_details_modal.file_details,
|
|
||||||
formatdoc!(
|
|
||||||
"Relative Path: Test.mkv
|
|
||||||
Absolute Path: /nfs/movies/Test.mkv
|
|
||||||
Size: 3.30 GB
|
Size: 3.30 GB
|
||||||
Date Added: 2022-12-30 07:37:56 UTC"
|
Path: /nfs/movies
|
||||||
)
|
Studio: 21st Century Alex
|
||||||
);
|
Genres: cool, family, fun"
|
||||||
assert_str_eq!(
|
)
|
||||||
movie_details_modal.audio_details,
|
);
|
||||||
formatdoc!(
|
assert_str_eq!(
|
||||||
"Bitrate: 0
|
movie_details_modal.file_details,
|
||||||
Channels: 7.1
|
formatdoc!(
|
||||||
Codec: AAC
|
"Relative Path: Test.mkv
|
||||||
Languages: eng
|
Absolute Path: /nfs/movies/Test.mkv
|
||||||
Stream Count: 1"
|
Size: 3.30 GB
|
||||||
)
|
Date Added: 2022-12-30 07:37:56 UTC"
|
||||||
);
|
)
|
||||||
assert_str_eq!(
|
);
|
||||||
movie_details_modal.video_details,
|
assert_str_eq!(
|
||||||
formatdoc!(
|
movie_details_modal.audio_details,
|
||||||
"Bit Depth: 10
|
formatdoc!(
|
||||||
Bitrate: 0
|
"Bitrate: 0
|
||||||
Codec: x265
|
Channels: 7.1
|
||||||
FPS: 23.976
|
Codec: AAC
|
||||||
Resolution: 1920x804
|
Languages: eng
|
||||||
Scan Type: Progressive
|
Stream Count: 1"
|
||||||
Runtime: 2:00:00"
|
)
|
||||||
)
|
);
|
||||||
);
|
assert_str_eq!(
|
||||||
}
|
movie_details_modal.video_details,
|
||||||
|
formatdoc!(
|
||||||
|
"Bit Depth: 10
|
||||||
|
Bitrate: 0
|
||||||
|
Codec: x265
|
||||||
|
FPS: 23.976
|
||||||
|
Resolution: 1920x804
|
||||||
|
Scan Type: Progressive
|
||||||
|
Runtime: 2:00:00"
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -741,27 +743,28 @@ mod tests {
|
|||||||
app_arc.lock().await.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default());
|
app_arc.lock().await.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default());
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let RadarrSerdeable::MovieHistoryItems(history) = network
|
let RadarrSerdeable::MovieHistoryItems(history) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetMovieHistory(1))
|
.handle_radarr_event(RadarrEvent::GetMovieHistory(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected MovieHistoryItems")
|
||||||
assert_eq!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.radarr_data
|
.await
|
||||||
.movie_details_modal
|
.data
|
||||||
.as_ref()
|
.radarr_data
|
||||||
.unwrap()
|
.movie_details_modal
|
||||||
.movie_history
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
vec![movie_history_item()]
|
.movie_history
|
||||||
);
|
.items,
|
||||||
assert_eq!(history, response);
|
vec![movie_history_item()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(history, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -828,27 +831,28 @@ mod tests {
|
|||||||
app_arc.lock().await.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default());
|
app_arc.lock().await.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default());
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let RadarrSerdeable::Releases(releases_vec) = network
|
let RadarrSerdeable::Releases(releases_vec) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetReleases(1))
|
.handle_radarr_event(RadarrEvent::GetReleases(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Releases")
|
||||||
assert_eq!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.radarr_data
|
.await
|
||||||
.movie_details_modal
|
.data
|
||||||
.as_ref()
|
.radarr_data
|
||||||
.unwrap()
|
.movie_details_modal
|
||||||
.movie_releases
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
vec![release()]
|
.movie_releases
|
||||||
);
|
.items,
|
||||||
assert_eq!(releases_vec, vec![release()]);
|
vec![release()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(releases_vec, vec![release()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -928,35 +932,36 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let RadarrSerdeable::AddMovieSearchResults(add_movie_search_results) = network
|
let RadarrSerdeable::AddMovieSearchResults(add_movie_search_results) = network
|
||||||
.handle_radarr_event(RadarrEvent::SearchNewMovie("test term".into()))
|
.handle_radarr_event(RadarrEvent::SearchNewMovie("test term".into()))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected AddMovieSearchResults")
|
||||||
assert!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.radarr_data
|
.await
|
||||||
.add_searched_movies
|
.data
|
||||||
.is_some()
|
.radarr_data
|
||||||
);
|
.add_searched_movies
|
||||||
assert_eq!(
|
.is_some()
|
||||||
app_arc
|
);
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.radarr_data
|
.await
|
||||||
.add_searched_movies
|
.data
|
||||||
.as_ref()
|
.radarr_data
|
||||||
.unwrap()
|
.add_searched_movies
|
||||||
.items,
|
.as_ref()
|
||||||
vec![add_movie_search_result()]
|
.unwrap()
|
||||||
);
|
.items,
|
||||||
assert_eq!(add_movie_search_results, vec![add_movie_search_result()]);
|
vec![add_movie_search_result()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(add_movie_search_results, vec![add_movie_search_result()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|||||||
@@ -194,8 +194,9 @@ mod test {
|
|||||||
mock.assert_async().await;
|
mock.assert_async().await;
|
||||||
|
|
||||||
let RadarrSerdeable::QualityProfiles(quality_profiles) = result.unwrap() else {
|
let RadarrSerdeable::QualityProfiles(quality_profiles) = result.unwrap() else {
|
||||||
panic!("Expected QualityProfiles variant");
|
panic!("Expected QualityProfiles");
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(quality_profiles, expected);
|
assert_eq!(quality_profiles, expected);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
app.lock().await.data.radarr_data.quality_profile_map,
|
app.lock().await.data.radarr_data.quality_profile_map,
|
||||||
@@ -225,8 +226,9 @@ mod test {
|
|||||||
mock.assert_async().await;
|
mock.assert_async().await;
|
||||||
|
|
||||||
let RadarrSerdeable::Tags(tags) = result.unwrap() else {
|
let RadarrSerdeable::Tags(tags) = result.unwrap() else {
|
||||||
panic!("Expected Tags variant");
|
panic!("Expected Tags");
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(tags, expected);
|
assert_eq!(tags, expected);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
app.lock().await.data.radarr_data.tags_map,
|
app.lock().await.data.radarr_data.tags_map,
|
||||||
@@ -259,8 +261,9 @@ mod test {
|
|||||||
mock.assert_async().await;
|
mock.assert_async().await;
|
||||||
|
|
||||||
let RadarrSerdeable::Tag(tag) = result.unwrap() else {
|
let RadarrSerdeable::Tag(tag) = result.unwrap() else {
|
||||||
panic!("Expected Tag variant");
|
panic!("Expected Tag");
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(tag, expected);
|
assert_eq!(tag, expected);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
app.lock().await.data.radarr_data.tags_map,
|
app.lock().await.data.radarr_data.tags_map,
|
||||||
|
|||||||
@@ -65,17 +65,18 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::RootFolders(root_folders) = network
|
let RadarrSerdeable::RootFolders(root_folders) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetRootFolders)
|
.handle_radarr_event(RadarrEvent::GetRootFolders)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected RootFolders")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.root_folders.items,
|
mock.assert_async().await;
|
||||||
vec![root_folder()]
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.root_folders.items,
|
||||||
assert_eq!(root_folders, response);
|
vec![root_folder()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(root_folders, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,18 +39,19 @@ mod tests {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
if let RadarrSerdeable::DiskSpaces(disk_space) = network
|
let RadarrSerdeable::DiskSpaces(disk_space) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetDiskSpace)
|
.handle_radarr_event(RadarrEvent::GetDiskSpace)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected DiskSpaces")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.disk_space_vec,
|
mock.assert_async().await;
|
||||||
disk_space_vec
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.disk_space_vec,
|
||||||
assert_eq!(disk_space, disk_space_vec);
|
disk_space_vec
|
||||||
}
|
);
|
||||||
|
assert_eq!(disk_space, disk_space_vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -73,14 +74,15 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::HostConfig(host_config) = network
|
let RadarrSerdeable::HostConfig(host_config) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetHostConfig)
|
.handle_radarr_event(RadarrEvent::GetHostConfig)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected HostConfig")
|
||||||
assert_eq!(host_config, response);
|
};
|
||||||
}
|
mock.assert_async().await;
|
||||||
|
assert_eq!(host_config, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -123,26 +125,27 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::LogResponse(logs) = network
|
let RadarrSerdeable::LogResponse(logs) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetLogs(500))
|
.handle_radarr_event(RadarrEvent::GetLogs(500))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected LogResponse")
|
||||||
assert_eq!(app.lock().await.data.radarr_data.logs.items, expected_logs);
|
};
|
||||||
assert!(
|
mock.assert_async().await;
|
||||||
app
|
assert_eq!(app.lock().await.data.radarr_data.logs.items, expected_logs);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.radarr_data
|
.await
|
||||||
.logs
|
.data
|
||||||
.current_selection()
|
.radarr_data
|
||||||
.text
|
.logs
|
||||||
.contains("INFO")
|
.current_selection()
|
||||||
);
|
.text
|
||||||
assert_eq!(logs, response);
|
.contains("INFO")
|
||||||
}
|
);
|
||||||
|
assert_eq!(logs, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -176,18 +179,19 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::QueueEvents(events) = network
|
let RadarrSerdeable::QueueEvents(events) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetQueuedEvents)
|
.handle_radarr_event(RadarrEvent::GetQueuedEvents)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected QueueEvents")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.queued_events.items,
|
mock.assert_async().await;
|
||||||
vec![expected_event]
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.queued_events.items,
|
||||||
assert_eq!(events, response);
|
vec![expected_event]
|
||||||
}
|
);
|
||||||
|
assert_eq!(events, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -208,14 +212,15 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::SecurityConfig(security_config) = network
|
let RadarrSerdeable::SecurityConfig(security_config) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetSecurityConfig)
|
.handle_radarr_event(RadarrEvent::GetSecurityConfig)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected SecurityConfig")
|
||||||
assert_eq!(security_config, response);
|
};
|
||||||
}
|
mock.assert_async().await;
|
||||||
|
assert_eq!(security_config, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -230,22 +235,23 @@ mod tests {
|
|||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
let date_time = DateTime::from(DateTime::parse_from_rfc3339("2023-02-25T20:16:43Z").unwrap());
|
let date_time = DateTime::from(DateTime::parse_from_rfc3339("2023-02-25T20:16:43Z").unwrap());
|
||||||
|
|
||||||
if let RadarrSerdeable::SystemStatus(status) = network
|
let RadarrSerdeable::SystemStatus(status) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetStatus)
|
.handle_radarr_event(RadarrEvent::GetStatus)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected SystemStatus")
|
||||||
assert_str_eq!(app.lock().await.data.radarr_data.version, "v1");
|
};
|
||||||
assert_eq!(app.lock().await.data.radarr_data.start_time, date_time);
|
async_server.assert_async().await;
|
||||||
assert_eq!(
|
assert_str_eq!(app.lock().await.data.radarr_data.version, "v1");
|
||||||
status,
|
assert_eq!(app.lock().await.data.radarr_data.start_time, date_time);
|
||||||
SystemStatus {
|
assert_eq!(
|
||||||
version: "v1".to_owned(),
|
status,
|
||||||
start_time: date_time
|
SystemStatus {
|
||||||
}
|
version: "v1".to_owned(),
|
||||||
);
|
start_time: date_time
|
||||||
}
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -323,18 +329,19 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::Updates(updates) = network
|
let RadarrSerdeable::Updates(updates) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetUpdates)
|
.handle_radarr_event(RadarrEvent::GetUpdates)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Updates")
|
||||||
assert_str_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.updates.get_text(),
|
async_server.assert_async().await;
|
||||||
expected_text.get_text()
|
assert_str_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.updates.get_text(),
|
||||||
assert_eq!(updates, response);
|
expected_text.get_text()
|
||||||
}
|
);
|
||||||
|
assert_eq!(updates, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -381,18 +388,19 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::Tasks(tasks) = network
|
let RadarrSerdeable::Tasks(tasks) = network
|
||||||
.handle_radarr_event(RadarrEvent::GetTasks)
|
.handle_radarr_event(RadarrEvent::GetTasks)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Tasks")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.radarr_data.tasks.items,
|
async_server.assert_async().await;
|
||||||
expected_tasks
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.radarr_data.tasks.items,
|
||||||
assert_eq!(tasks, response);
|
expected_tasks
|
||||||
}
|
);
|
||||||
|
assert_eq!(tasks, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -409,15 +417,16 @@ mod tests {
|
|||||||
.await;
|
.await;
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let RadarrSerdeable::Value(value) = network
|
let RadarrSerdeable::Value(value) = network
|
||||||
.handle_radarr_event(RadarrEvent::StartTask(
|
.handle_radarr_event(RadarrEvent::StartTask(
|
||||||
RadarrTaskName::ApplicationCheckUpdate,
|
RadarrTaskName::ApplicationCheckUpdate,
|
||||||
))
|
))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Value")
|
||||||
assert_eq!(value, response);
|
};
|
||||||
}
|
async_server.assert_async().await;
|
||||||
|
assert_eq!(value, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -163,19 +163,20 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::BlocklistResponse(blocklist) = network
|
let SonarrSerdeable::BlocklistResponse(blocklist) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetBlocklist)
|
.handle_sonarr_event(SonarrEvent::GetBlocklist)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected BlocklistResponse")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.sonarr_data.blocklist.items,
|
mock.assert_async().await;
|
||||||
expected_blocklist
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.blocklist.items,
|
||||||
assert!(app.lock().await.data.sonarr_data.blocklist.sort_asc);
|
expected_blocklist
|
||||||
assert_eq!(blocklist, response);
|
);
|
||||||
}
|
assert!(app.lock().await.data.sonarr_data.blocklist.sort_asc);
|
||||||
|
assert_eq!(blocklist, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -233,15 +234,16 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::BlocklistResponse(blocklist) = network
|
let SonarrSerdeable::BlocklistResponse(blocklist) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetBlocklist)
|
.handle_sonarr_event(SonarrEvent::GetBlocklist)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected BlocklistResponse")
|
||||||
assert!(app.lock().await.data.sonarr_data.blocklist.is_empty());
|
};
|
||||||
assert!(app.lock().await.data.sonarr_data.blocklist.sort_asc);
|
mock.assert_async().await;
|
||||||
assert_eq!(blocklist, response);
|
assert!(app.lock().await.data.sonarr_data.blocklist.is_empty());
|
||||||
}
|
assert!(app.lock().await.data.sonarr_data.blocklist.sort_asc);
|
||||||
|
assert_eq!(blocklist, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,18 +60,19 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::DownloadsResponse(downloads) = network
|
let SonarrSerdeable::DownloadsResponse(downloads) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetDownloads(500))
|
.handle_sonarr_event(SonarrEvent::GetDownloads(500))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected DownloadsResponse")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.sonarr_data.downloads.items,
|
mock.assert_async().await;
|
||||||
downloads_response().records
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.downloads.items,
|
||||||
assert_eq!(downloads, response);
|
downloads_response().records
|
||||||
}
|
);
|
||||||
|
assert_eq!(downloads, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|||||||
@@ -84,19 +84,20 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetHistory(500))
|
.handle_sonarr_event(SonarrEvent::GetHistory(500))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected SonarrHistoryWrapper")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.sonarr_data.history.items,
|
mock.assert_async().await;
|
||||||
expected_history_items
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.history.items,
|
||||||
assert!(app.lock().await.data.sonarr_data.history.sort_asc);
|
expected_history_items
|
||||||
assert_eq!(history, response);
|
);
|
||||||
}
|
assert!(app.lock().await.data.sonarr_data.history.sort_asc);
|
||||||
|
assert_eq!(history, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -158,16 +159,17 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetHistory(500))
|
.handle_sonarr_event(SonarrEvent::GetHistory(500))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected SonarrHistoryWrapper")
|
||||||
assert!(app.lock().await.data.sonarr_data.history.is_empty());
|
};
|
||||||
assert!(app.lock().await.data.sonarr_data.history.sort_asc);
|
mock.assert_async().await;
|
||||||
assert_eq!(history, response);
|
assert!(app.lock().await.data.sonarr_data.history.is_empty());
|
||||||
}
|
assert!(app.lock().await.data.sonarr_data.history.sort_asc);
|
||||||
|
assert_eq!(history, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|||||||
@@ -635,18 +635,19 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::Indexers(indexers) = network
|
let SonarrSerdeable::Indexers(indexers) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetIndexers)
|
.handle_sonarr_event(SonarrEvent::GetIndexers)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Indexers")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.sonarr_data.indexers.items,
|
async_server.assert_async().await;
|
||||||
vec![indexer()]
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.indexers.items,
|
||||||
assert_eq!(indexers, response);
|
vec![indexer()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(indexers, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -706,19 +707,20 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::Value(value) = network
|
let SonarrSerdeable::Value(value) = network
|
||||||
.handle_sonarr_event(SonarrEvent::TestIndexer(1))
|
.handle_sonarr_event(SonarrEvent::TestIndexer(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_details_server.assert_async().await;
|
panic!("Expected Value")
|
||||||
async_test_server.assert_async().await;
|
};
|
||||||
assert_eq!(
|
async_details_server.assert_async().await;
|
||||||
app.lock().await.data.sonarr_data.indexer_test_errors,
|
async_test_server.assert_async().await;
|
||||||
Some("\"test failure\"".to_owned())
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.indexer_test_errors,
|
||||||
assert_eq!(value, response_json)
|
Some("\"test failure\"".to_owned())
|
||||||
}
|
);
|
||||||
|
assert_eq!(value, response_json);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -771,19 +773,20 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::Value(value) = network
|
let SonarrSerdeable::Value(value) = network
|
||||||
.handle_sonarr_event(SonarrEvent::TestIndexer(1))
|
.handle_sonarr_event(SonarrEvent::TestIndexer(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_details_server.assert_async().await;
|
panic!("Expected Value")
|
||||||
async_test_server.assert_async().await;
|
};
|
||||||
assert_eq!(
|
async_details_server.assert_async().await;
|
||||||
app.lock().await.data.sonarr_data.indexer_test_errors,
|
async_test_server.assert_async().await;
|
||||||
Some(String::new())
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.indexer_test_errors,
|
||||||
assert_eq!(value, json!({}));
|
Some(String::new())
|
||||||
}
|
);
|
||||||
|
assert_eq!(value, json!({}));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -850,34 +853,35 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::IndexerTestResults(results) = network
|
let SonarrSerdeable::IndexerTestResults(results) = network
|
||||||
.handle_sonarr_event(SonarrEvent::TestAllIndexers)
|
.handle_sonarr_event(SonarrEvent::TestAllIndexers)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected IndexerTestResults")
|
||||||
assert!(
|
};
|
||||||
app
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.indexer_test_all_results
|
.data
|
||||||
.is_some()
|
.sonarr_data
|
||||||
);
|
.indexer_test_all_results
|
||||||
assert_eq!(
|
.is_some()
|
||||||
app
|
);
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.indexer_test_all_results
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.indexer_test_all_results
|
||||||
.items,
|
.as_ref()
|
||||||
indexer_test_results_modal_items
|
.unwrap()
|
||||||
);
|
.items,
|
||||||
assert_eq!(results, response);
|
indexer_test_results_modal_items
|
||||||
}
|
);
|
||||||
|
assert_eq!(results, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -253,27 +253,28 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::Episodes(episodes) = network
|
let SonarrSerdeable::Episodes(episodes) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodes(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodes(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Episodes")
|
||||||
assert_eq!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episodes
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
vec![episode()]
|
.episodes
|
||||||
);
|
.items,
|
||||||
assert_eq!(episodes, vec![episode()]);
|
vec![episode()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(episodes, vec![episode()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -353,38 +354,39 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::Episodes(episodes) = network
|
let SonarrSerdeable::Episodes(episodes) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodes(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodes(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Episodes")
|
||||||
assert!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episodes
|
.as_ref()
|
||||||
.is_empty()
|
.unwrap()
|
||||||
);
|
.episodes
|
||||||
assert!(
|
.is_empty()
|
||||||
app_arc
|
);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episodes
|
.as_ref()
|
||||||
.sort_asc
|
.unwrap()
|
||||||
);
|
.episodes
|
||||||
assert_eq!(episodes, expected_episodes);
|
.sort_asc
|
||||||
}
|
);
|
||||||
|
assert_eq!(episodes, expected_episodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -409,27 +411,28 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::EpisodeFiles(episode_files) = network
|
let SonarrSerdeable::EpisodeFiles(episode_files) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeFiles(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeFiles(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected EpisodeFiles")
|
||||||
assert_eq!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_files
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
vec![episode_file()]
|
.episode_files
|
||||||
);
|
.items,
|
||||||
assert_eq!(episode_files, vec![episode_file()]);
|
vec![episode_file()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(episode_files, vec![episode_file()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -452,36 +455,37 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::EpisodeFiles(episode_files) = network
|
let SonarrSerdeable::EpisodeFiles(episode_files) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeFiles(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeFiles(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected EpisodeFiles")
|
||||||
assert!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.is_some()
|
.sonarr_data
|
||||||
);
|
.season_details_modal
|
||||||
assert_eq!(
|
.is_some()
|
||||||
app_arc
|
);
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_files
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
vec![episode_file()]
|
.episode_files
|
||||||
);
|
.items,
|
||||||
assert_eq!(episode_files, vec![episode_file()]);
|
vec![episode_file()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(episode_files, vec![episode_file()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -569,45 +573,46 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeHistory(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeHistory(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected SonarrHistoryWrapper")
|
||||||
assert_eq!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_details_modal
|
.as_ref()
|
||||||
.as_ref()
|
.unwrap()
|
||||||
.unwrap()
|
.episode_details_modal
|
||||||
.episode_history
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
expected_history_items
|
.episode_history
|
||||||
);
|
.items,
|
||||||
assert!(
|
expected_history_items
|
||||||
app_arc
|
);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_details_modal
|
.as_ref()
|
||||||
.as_ref()
|
.unwrap()
|
||||||
.unwrap()
|
.episode_details_modal
|
||||||
.episode_history
|
.as_ref()
|
||||||
.sort_asc
|
.unwrap()
|
||||||
);
|
.episode_history
|
||||||
assert_eq!(history, response);
|
.sort_asc
|
||||||
}
|
);
|
||||||
|
assert_eq!(history, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -673,45 +678,46 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeHistory(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeHistory(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected SonarrHistoryWrapper")
|
||||||
assert_eq!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_details_modal
|
.as_ref()
|
||||||
.as_ref()
|
.unwrap()
|
||||||
.unwrap()
|
.episode_details_modal
|
||||||
.episode_history
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
expected_history_items
|
.episode_history
|
||||||
);
|
.items,
|
||||||
assert!(
|
expected_history_items
|
||||||
!app_arc
|
);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
!app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_details_modal
|
.as_ref()
|
||||||
.as_ref()
|
.unwrap()
|
||||||
.unwrap()
|
.episode_details_modal
|
||||||
.episode_history
|
.as_ref()
|
||||||
.sort_asc
|
.unwrap()
|
||||||
);
|
.episode_history
|
||||||
assert_eq!(history, response);
|
.sort_asc
|
||||||
}
|
);
|
||||||
|
assert_eq!(history, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -765,45 +771,46 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
let SonarrSerdeable::SonarrHistoryWrapper(history) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeHistory(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeHistory(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected SonarrHistoryWrapper")
|
||||||
assert_eq!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_details_modal
|
.as_ref()
|
||||||
.as_ref()
|
.unwrap()
|
||||||
.unwrap()
|
.episode_details_modal
|
||||||
.episode_history
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
expected_history_items
|
.episode_history
|
||||||
);
|
.items,
|
||||||
assert!(
|
expected_history_items
|
||||||
!app_arc
|
);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
!app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_details_modal
|
.as_ref()
|
||||||
.as_ref()
|
.unwrap()
|
||||||
.unwrap()
|
.episode_details_modal
|
||||||
.episode_history
|
.as_ref()
|
||||||
.sort_asc
|
.unwrap()
|
||||||
);
|
.episode_history
|
||||||
assert_eq!(history, response);
|
.sort_asc
|
||||||
}
|
);
|
||||||
|
assert_eq!(history, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -827,44 +834,30 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::Episode(episode) = network
|
let SonarrSerdeable::Episode(episode) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeDetails(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeDetails(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Episode")
|
||||||
assert!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_details_modal
|
.as_ref()
|
||||||
.is_some()
|
.unwrap()
|
||||||
);
|
.episode_details_modal
|
||||||
assert_eq!(
|
.is_some()
|
||||||
app_arc
|
);
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.episode_details_modal
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.episode_details_tabs
|
|
||||||
.get_active_route(),
|
|
||||||
ActiveSonarrBlock::EpisodeHistory.into()
|
|
||||||
);
|
|
||||||
assert_eq!(episode, response);
|
|
||||||
|
|
||||||
let app = app_arc.lock().await;
|
|
||||||
let episode_details_modal = app
|
|
||||||
.data
|
.data
|
||||||
.sonarr_data
|
.sonarr_data
|
||||||
.season_details_modal
|
.season_details_modal
|
||||||
@@ -872,52 +865,67 @@ mod tests {
|
|||||||
.unwrap()
|
.unwrap()
|
||||||
.episode_details_modal
|
.episode_details_modal
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.unwrap();
|
.unwrap()
|
||||||
assert_str_eq!(
|
.episode_details_tabs
|
||||||
episode_details_modal.episode_details.get_text(),
|
.get_active_route(),
|
||||||
formatdoc!(
|
ActiveSonarrBlock::EpisodeHistory.into()
|
||||||
"Title: Something cool
|
);
|
||||||
Season: 1
|
assert_eq!(episode, response);
|
||||||
Episode Number: 1
|
|
||||||
Air Date: 2024-02-10 07:28:45 UTC
|
let app = app_arc.lock().await;
|
||||||
Status: Downloaded
|
let episode_details_modal = app
|
||||||
Description: Okay so this one time at band camp..."
|
.data
|
||||||
)
|
.sonarr_data
|
||||||
);
|
.season_details_modal
|
||||||
assert_str_eq!(
|
.as_ref()
|
||||||
episode_details_modal.file_details,
|
.unwrap()
|
||||||
formatdoc!(
|
.episode_details_modal
|
||||||
"Relative Path: /season 1/episode 1.mkv
|
.as_ref()
|
||||||
Absolute Path: /nfs/tv/series/season 1/episode 1.mkv
|
.unwrap();
|
||||||
Size: 3.30 GB
|
assert_str_eq!(
|
||||||
Language: English
|
episode_details_modal.episode_details.get_text(),
|
||||||
Date Added: 2024-02-10 07:28:45 UTC"
|
formatdoc!(
|
||||||
)
|
"Title: Something cool
|
||||||
);
|
Season: 1
|
||||||
assert_str_eq!(
|
Episode Number: 1
|
||||||
episode_details_modal.audio_details,
|
Air Date: 2024-02-10 07:28:45 UTC
|
||||||
formatdoc!(
|
Status: Downloaded
|
||||||
"Bitrate: 0
|
Description: Okay so this one time at band camp..."
|
||||||
Channels: 7.1
|
)
|
||||||
Codec: AAC
|
);
|
||||||
Languages: eng
|
assert_str_eq!(
|
||||||
Stream Count: 1"
|
episode_details_modal.file_details,
|
||||||
)
|
formatdoc!(
|
||||||
);
|
"Relative Path: /season 1/episode 1.mkv
|
||||||
assert_str_eq!(
|
Absolute Path: /nfs/tv/series/season 1/episode 1.mkv
|
||||||
episode_details_modal.video_details,
|
Size: 3.30 GB
|
||||||
formatdoc!(
|
Language: English
|
||||||
"Bit Depth: 10
|
Date Added: 2024-02-10 07:28:45 UTC"
|
||||||
Bitrate: 0
|
)
|
||||||
Codec: x265
|
);
|
||||||
FPS: 23.976
|
assert_str_eq!(
|
||||||
Resolution: 1920x1080
|
episode_details_modal.audio_details,
|
||||||
Scan Type: Progressive
|
formatdoc!(
|
||||||
Runtime: 23:51
|
"Bitrate: 0
|
||||||
Subtitles: English"
|
Channels: 7.1
|
||||||
)
|
Codec: AAC
|
||||||
);
|
Languages: eng
|
||||||
}
|
Stream Count: 1"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
assert_str_eq!(
|
||||||
|
episode_details_modal.video_details,
|
||||||
|
formatdoc!(
|
||||||
|
"Bit Depth: 10
|
||||||
|
Bitrate: 0
|
||||||
|
Codec: x265
|
||||||
|
FPS: 23.976
|
||||||
|
Resolution: 1920x1080
|
||||||
|
Scan Type: Progressive
|
||||||
|
Runtime: 23:51
|
||||||
|
Subtitles: English"
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -938,81 +946,82 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::Episode(episode) = network
|
let SonarrSerdeable::Episode(episode) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeDetails(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeDetails(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Episode")
|
||||||
assert!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
|
||||||
.as_ref()
|
|
||||||
.unwrap()
|
|
||||||
.episode_details_modal
|
|
||||||
.is_some()
|
|
||||||
);
|
|
||||||
assert_eq!(episode, response);
|
|
||||||
|
|
||||||
let app = app_arc.lock().await;
|
|
||||||
let episode_details_modal = app
|
|
||||||
.data
|
.data
|
||||||
.sonarr_data
|
.sonarr_data
|
||||||
.season_details_modal
|
.season_details_modal
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.episode_details_modal
|
.episode_details_modal
|
||||||
.as_ref()
|
.is_some()
|
||||||
.unwrap();
|
);
|
||||||
assert_str_eq!(
|
assert_eq!(episode, response);
|
||||||
episode_details_modal.episode_details.get_text(),
|
|
||||||
formatdoc!(
|
let app = app_arc.lock().await;
|
||||||
"Title: Something cool
|
let episode_details_modal = app
|
||||||
Season: 1
|
.data
|
||||||
Episode Number: 1
|
.sonarr_data
|
||||||
Air Date: 2024-02-10 07:28:45 UTC
|
.season_details_modal
|
||||||
Status: Downloaded
|
.as_ref()
|
||||||
Description: Okay so this one time at band camp..."
|
.unwrap()
|
||||||
)
|
.episode_details_modal
|
||||||
);
|
.as_ref()
|
||||||
assert_str_eq!(
|
.unwrap();
|
||||||
episode_details_modal.file_details,
|
assert_str_eq!(
|
||||||
formatdoc!(
|
episode_details_modal.episode_details.get_text(),
|
||||||
"Relative Path: /season 1/episode 1.mkv
|
formatdoc!(
|
||||||
Absolute Path: /nfs/tv/series/season 1/episode 1.mkv
|
"Title: Something cool
|
||||||
Size: 3.30 GB
|
Season: 1
|
||||||
Language: English
|
Episode Number: 1
|
||||||
Date Added: 2024-02-10 07:28:45 UTC"
|
Air Date: 2024-02-10 07:28:45 UTC
|
||||||
)
|
Status: Downloaded
|
||||||
);
|
Description: Okay so this one time at band camp..."
|
||||||
assert_str_eq!(
|
)
|
||||||
episode_details_modal.audio_details,
|
);
|
||||||
formatdoc!(
|
assert_str_eq!(
|
||||||
"Bitrate: 0
|
episode_details_modal.file_details,
|
||||||
Channels: 7.1
|
formatdoc!(
|
||||||
Codec: AAC
|
"Relative Path: /season 1/episode 1.mkv
|
||||||
Languages: eng
|
Absolute Path: /nfs/tv/series/season 1/episode 1.mkv
|
||||||
Stream Count: 1"
|
Size: 3.30 GB
|
||||||
)
|
Language: English
|
||||||
);
|
Date Added: 2024-02-10 07:28:45 UTC"
|
||||||
assert_str_eq!(
|
)
|
||||||
episode_details_modal.video_details,
|
);
|
||||||
formatdoc!(
|
assert_str_eq!(
|
||||||
"Bit Depth: 10
|
episode_details_modal.audio_details,
|
||||||
Bitrate: 0
|
formatdoc!(
|
||||||
Codec: x265
|
"Bitrate: 0
|
||||||
FPS: 23.976
|
Channels: 7.1
|
||||||
Resolution: 1920x1080
|
Codec: AAC
|
||||||
Scan Type: Progressive
|
Languages: eng
|
||||||
Runtime: 23:51
|
Stream Count: 1"
|
||||||
Subtitles: English"
|
)
|
||||||
)
|
);
|
||||||
);
|
assert_str_eq!(
|
||||||
}
|
episode_details_modal.video_details,
|
||||||
|
formatdoc!(
|
||||||
|
"Bit Depth: 10
|
||||||
|
Bitrate: 0
|
||||||
|
Codec: x265
|
||||||
|
FPS: 23.976
|
||||||
|
Resolution: 1920x1080
|
||||||
|
Scan Type: Progressive
|
||||||
|
Runtime: 23:51
|
||||||
|
Subtitles: English"
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -1027,14 +1036,15 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::Episode(episode) = network
|
let SonarrSerdeable::Episode(episode) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeDetails(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeDetails(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Episode")
|
||||||
assert_eq!(episode, response);
|
};
|
||||||
}
|
async_server.assert_async().await;
|
||||||
|
assert_eq!(episode, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -1092,30 +1102,31 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::Releases(releases_vec) = network
|
let SonarrSerdeable::Releases(releases_vec) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeReleases(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeReleases(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Releases")
|
||||||
assert_eq!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_details_modal
|
.as_ref()
|
||||||
.as_ref()
|
.unwrap()
|
||||||
.unwrap()
|
.episode_details_modal
|
||||||
.episode_releases
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
vec![release()]
|
.episode_releases
|
||||||
);
|
.items,
|
||||||
assert_eq!(releases_vec, vec![release()]);
|
vec![release()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(releases_vec, vec![release()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -1146,30 +1157,31 @@ mod tests {
|
|||||||
app_arc.lock().await.server_tabs.next();
|
app_arc.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app_arc);
|
let mut network = test_network(&app_arc);
|
||||||
|
|
||||||
if let SonarrSerdeable::Releases(releases_vec) = network
|
let SonarrSerdeable::Releases(releases_vec) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetEpisodeReleases(1))
|
.handle_sonarr_event(SonarrEvent::GetEpisodeReleases(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Releases")
|
||||||
assert_eq!(
|
};
|
||||||
app_arc
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app_arc
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.episode_details_modal
|
.as_ref()
|
||||||
.as_ref()
|
.unwrap()
|
||||||
.unwrap()
|
.episode_details_modal
|
||||||
.episode_releases
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
vec![release()]
|
.episode_releases
|
||||||
);
|
.items,
|
||||||
assert_eq!(releases_vec, vec![release()]);
|
vec![release()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(releases_vec, vec![release()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|||||||
@@ -136,27 +136,28 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::Releases(releases_vec) = network
|
let SonarrSerdeable::Releases(releases_vec) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetSeasonReleases((1, 1)))
|
.handle_sonarr_event(SonarrEvent::GetSeasonReleases((1, 1)))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected Releases")
|
||||||
assert_eq!(
|
};
|
||||||
app
|
mock.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.season_releases
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
vec![expected_filtered_sonarr_release]
|
.season_releases
|
||||||
);
|
.items,
|
||||||
assert_eq!(releases_vec, expected_raw_sonarr_releases);
|
vec![expected_filtered_sonarr_release]
|
||||||
}
|
);
|
||||||
|
assert_eq!(releases_vec, expected_raw_sonarr_releases);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -319,39 +320,40 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryItems(history) = network
|
let SonarrSerdeable::SonarrHistoryItems(history) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetSeasonHistory((1, 1)))
|
.handle_sonarr_event(SonarrEvent::GetSeasonHistory((1, 1)))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected SonarrHistoryItems")
|
||||||
assert_eq!(
|
};
|
||||||
app
|
mock.assert_async().await;
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.season_history
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
expected_history_items
|
.season_history
|
||||||
);
|
.items,
|
||||||
assert!(
|
expected_history_items
|
||||||
app
|
);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.season_history
|
.as_ref()
|
||||||
.sort_asc
|
.unwrap()
|
||||||
);
|
.season_history
|
||||||
assert_eq!(history, response);
|
.sort_asc
|
||||||
}
|
);
|
||||||
|
assert_eq!(history, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -419,48 +421,49 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryItems(history) = network
|
let SonarrSerdeable::SonarrHistoryItems(history) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetSeasonHistory((1, 1)))
|
.handle_sonarr_event(SonarrEvent::GetSeasonHistory((1, 1)))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected SonarrHistoryItems")
|
||||||
assert!(
|
};
|
||||||
app
|
mock.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.is_some()
|
.sonarr_data
|
||||||
);
|
.season_details_modal
|
||||||
assert_eq!(
|
.is_some()
|
||||||
app
|
);
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.season_history
|
.as_ref()
|
||||||
.items,
|
.unwrap()
|
||||||
expected_history_items
|
.season_history
|
||||||
);
|
.items,
|
||||||
assert!(
|
expected_history_items
|
||||||
!app
|
);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
!app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.season_details_modal
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.season_details_modal
|
||||||
.season_history
|
.as_ref()
|
||||||
.sort_asc
|
.unwrap()
|
||||||
);
|
.season_history
|
||||||
assert_eq!(history, response);
|
.sort_asc
|
||||||
}
|
);
|
||||||
|
assert_eq!(history, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|||||||
@@ -409,14 +409,15 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::Series(series) = network
|
let SonarrSerdeable::Series(series) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetSeriesDetails(1))
|
.handle_sonarr_event(SonarrEvent::GetSeriesDetails(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected Series")
|
||||||
assert_eq!(series, expected_series);
|
};
|
||||||
}
|
async_server.assert_async().await;
|
||||||
|
assert_eq!(series, expected_series);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
@@ -500,38 +501,39 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryItems(history_items) = network
|
let SonarrSerdeable::SonarrHistoryItems(history_items) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetSeriesHistory(1))
|
.handle_sonarr_event(SonarrEvent::GetSeriesHistory(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected SonarrHistoryItems")
|
||||||
assert!(app.lock().await.data.sonarr_data.series_history.is_some());
|
};
|
||||||
assert_eq!(
|
async_server.assert_async().await;
|
||||||
app
|
assert!(app.lock().await.data.sonarr_data.series_history.is_some());
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.series_history
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.series_history
|
||||||
.items,
|
.as_ref()
|
||||||
expected_history_items
|
.unwrap()
|
||||||
);
|
.items,
|
||||||
assert!(
|
expected_history_items
|
||||||
app
|
);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.series_history
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.series_history
|
||||||
.sort_asc
|
.as_ref()
|
||||||
);
|
.unwrap()
|
||||||
assert_eq!(history_items, response);
|
.sort_asc
|
||||||
}
|
);
|
||||||
|
assert_eq!(history_items, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -592,38 +594,39 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryItems(history_items) = network
|
let SonarrSerdeable::SonarrHistoryItems(history_items) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetSeriesHistory(1))
|
.handle_sonarr_event(SonarrEvent::GetSeriesHistory(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected SonarrHistoryItems")
|
||||||
assert!(app.lock().await.data.sonarr_data.series_history.is_some());
|
};
|
||||||
assert_eq!(
|
async_server.assert_async().await;
|
||||||
app
|
assert!(app.lock().await.data.sonarr_data.series_history.is_some());
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.series_history
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.series_history
|
||||||
.items,
|
.as_ref()
|
||||||
expected_history_items
|
.unwrap()
|
||||||
);
|
.items,
|
||||||
assert!(
|
expected_history_items
|
||||||
!app
|
);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
!app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.series_history
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.series_history
|
||||||
.sort_asc
|
.as_ref()
|
||||||
);
|
.unwrap()
|
||||||
assert_eq!(history_items, response);
|
.sort_asc
|
||||||
}
|
);
|
||||||
|
assert_eq!(history_items, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -690,37 +693,38 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::SonarrHistoryItems(history_items) = network
|
let SonarrSerdeable::SonarrHistoryItems(history_items) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetSeriesHistory(1))
|
.handle_sonarr_event(SonarrEvent::GetSeriesHistory(1))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected SonarrHistoryItems")
|
||||||
assert!(app.lock().await.data.sonarr_data.series_history.is_some());
|
};
|
||||||
assert!(
|
async_server.assert_async().await;
|
||||||
app
|
assert!(app.lock().await.data.sonarr_data.series_history.is_some());
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.series_history
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.series_history
|
||||||
.is_empty()
|
.as_ref()
|
||||||
);
|
.unwrap()
|
||||||
assert!(
|
.is_empty()
|
||||||
app
|
);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.series_history
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.series_history
|
||||||
.sort_asc
|
.as_ref()
|
||||||
);
|
.unwrap()
|
||||||
assert_eq!(history_items, response);
|
.sort_asc
|
||||||
}
|
);
|
||||||
|
assert_eq!(history_items, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
@@ -784,19 +788,20 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::SeriesVec(series) = network
|
let SonarrSerdeable::SeriesVec(series) = network
|
||||||
.handle_sonarr_event(SonarrEvent::ListSeries)
|
.handle_sonarr_event(SonarrEvent::ListSeries)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected SeriesVec")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.sonarr_data.series.items,
|
async_server.assert_async().await;
|
||||||
expected_sorted_series
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.series.items,
|
||||||
assert!(app.lock().await.data.sonarr_data.series.sort_asc);
|
expected_sorted_series
|
||||||
assert_eq!(series, expected_series);
|
);
|
||||||
}
|
assert!(app.lock().await.data.sonarr_data.series.sort_asc);
|
||||||
|
assert_eq!(series, expected_series);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -872,35 +877,36 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::AddSeriesSearchResults(add_series_search_results) = network
|
let SonarrSerdeable::AddSeriesSearchResults(add_series_search_results) = network
|
||||||
.handle_sonarr_event(SonarrEvent::SearchNewSeries("test term".into()))
|
.handle_sonarr_event(SonarrEvent::SearchNewSeries("test term".into()))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
async_server.assert_async().await;
|
panic!("Expected AddSeriesSearchResults")
|
||||||
assert!(
|
};
|
||||||
app
|
async_server.assert_async().await;
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.add_searched_series
|
.data
|
||||||
.is_some()
|
.sonarr_data
|
||||||
);
|
.add_searched_series
|
||||||
assert_eq!(
|
.is_some()
|
||||||
app
|
);
|
||||||
.lock()
|
assert_eq!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.add_searched_series
|
.data
|
||||||
.as_ref()
|
.sonarr_data
|
||||||
.unwrap()
|
.add_searched_series
|
||||||
.items,
|
.as_ref()
|
||||||
vec![add_series_search_result()]
|
.unwrap()
|
||||||
);
|
.items,
|
||||||
assert_eq!(add_series_search_results, vec![add_series_search_result()]);
|
vec![add_series_search_result()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(add_series_search_results, vec![add_series_search_result()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|||||||
@@ -71,17 +71,18 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::RootFolders(root_folders) = network
|
let SonarrSerdeable::RootFolders(root_folders) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetRootFolders)
|
.handle_sonarr_event(SonarrEvent::GetRootFolders)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected RootFolders")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.sonarr_data.root_folders.items,
|
mock.assert_async().await;
|
||||||
vec![root_folder()]
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.root_folders.items,
|
||||||
assert_eq!(root_folders, response);
|
vec![root_folder()]
|
||||||
}
|
);
|
||||||
|
assert_eq!(root_folders, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -212,8 +212,9 @@ mod test {
|
|||||||
mock.assert_async().await;
|
mock.assert_async().await;
|
||||||
|
|
||||||
let SonarrSerdeable::Tag(tag) = result.unwrap() else {
|
let SonarrSerdeable::Tag(tag) = result.unwrap() else {
|
||||||
panic!("Expected Tag variant");
|
panic!("Expected Tag");
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(tag, expected);
|
assert_eq!(tag, expected);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
app.lock().await.data.sonarr_data.tags_map,
|
app.lock().await.data.sonarr_data.tags_map,
|
||||||
@@ -278,8 +279,9 @@ mod test {
|
|||||||
mock.assert_async().await;
|
mock.assert_async().await;
|
||||||
|
|
||||||
let SonarrSerdeable::LanguageProfiles(language_profiles) = result.unwrap() else {
|
let SonarrSerdeable::LanguageProfiles(language_profiles) = result.unwrap() else {
|
||||||
panic!("Expected the LanguageProfiles variant")
|
panic!("Expected LanguageProfiles")
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
app.lock().await.data.sonarr_data.language_profiles_map,
|
app.lock().await.data.sonarr_data.language_profiles_map,
|
||||||
BiMap::from_iter([(2222i64, "English".to_owned())])
|
BiMap::from_iter([(2222i64, "English".to_owned())])
|
||||||
@@ -309,8 +311,9 @@ mod test {
|
|||||||
mock.assert_async().await;
|
mock.assert_async().await;
|
||||||
|
|
||||||
let SonarrSerdeable::QualityProfiles(quality_profiles) = result.unwrap() else {
|
let SonarrSerdeable::QualityProfiles(quality_profiles) = result.unwrap() else {
|
||||||
panic!("Expected the QualityProfiles variant")
|
panic!("Expected QualityProfiles")
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
app.lock().await.data.sonarr_data.quality_profile_map,
|
app.lock().await.data.sonarr_data.quality_profile_map,
|
||||||
BiMap::from_iter([(2222i64, "HD - 1080p".to_owned())])
|
BiMap::from_iter([(2222i64, "HD - 1080p".to_owned())])
|
||||||
@@ -337,8 +340,9 @@ mod test {
|
|||||||
mock.assert_async().await;
|
mock.assert_async().await;
|
||||||
|
|
||||||
let SonarrSerdeable::Tags(tags) = result.unwrap() else {
|
let SonarrSerdeable::Tags(tags) = result.unwrap() else {
|
||||||
panic!("Expected the Tag variant")
|
panic!("Expected Tags")
|
||||||
};
|
};
|
||||||
|
|
||||||
mock.assert_async().await;
|
mock.assert_async().await;
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
app.lock().await.data.sonarr_data.tags_map,
|
app.lock().await.data.sonarr_data.tags_map,
|
||||||
|
|||||||
@@ -33,14 +33,15 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::HostConfig(host_config) = network
|
let SonarrSerdeable::HostConfig(host_config) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetHostConfig)
|
.handle_sonarr_event(SonarrEvent::GetHostConfig)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected HostConfig")
|
||||||
assert_eq!(host_config, response);
|
};
|
||||||
}
|
mock.assert_async().await;
|
||||||
|
assert_eq!(host_config, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -84,26 +85,27 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::LogResponse(logs) = network
|
let SonarrSerdeable::LogResponse(logs) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetLogs(500))
|
.handle_sonarr_event(SonarrEvent::GetLogs(500))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected LogResponse")
|
||||||
assert_eq!(app.lock().await.data.sonarr_data.logs.items, expected_logs);
|
};
|
||||||
assert!(
|
mock.assert_async().await;
|
||||||
app
|
assert_eq!(app.lock().await.data.sonarr_data.logs.items, expected_logs);
|
||||||
.lock()
|
assert!(
|
||||||
.await
|
app
|
||||||
.data
|
.lock()
|
||||||
.sonarr_data
|
.await
|
||||||
.logs
|
.data
|
||||||
.current_selection()
|
.sonarr_data
|
||||||
.text
|
.logs
|
||||||
.contains("INFO")
|
.current_selection()
|
||||||
);
|
.text
|
||||||
assert_eq!(logs, response);
|
.contains("INFO")
|
||||||
}
|
);
|
||||||
|
assert_eq!(logs, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -134,18 +136,19 @@ mod tests {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
if let SonarrSerdeable::DiskSpaces(disk_space) = network
|
let SonarrSerdeable::DiskSpaces(disk_space) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetDiskSpace)
|
.handle_sonarr_event(SonarrEvent::GetDiskSpace)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected DiskSpaces")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.sonarr_data.disk_space_vec,
|
mock.assert_async().await;
|
||||||
disk_space_vec
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.disk_space_vec,
|
||||||
assert_eq!(disk_space, disk_space_vec);
|
disk_space_vec
|
||||||
}
|
);
|
||||||
|
assert_eq!(disk_space, disk_space_vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -180,18 +183,19 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::QueueEvents(events) = network
|
let SonarrSerdeable::QueueEvents(events) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetQueuedEvents)
|
.handle_sonarr_event(SonarrEvent::GetQueuedEvents)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected QueueEvents")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.sonarr_data.queued_events.items,
|
mock.assert_async().await;
|
||||||
vec![expected_event]
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.queued_events.items,
|
||||||
assert_eq!(events, response);
|
vec![expected_event]
|
||||||
}
|
);
|
||||||
|
assert_eq!(events, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -213,14 +217,15 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::SecurityConfig(security_config) = network
|
let SonarrSerdeable::SecurityConfig(security_config) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetSecurityConfig)
|
.handle_sonarr_event(SonarrEvent::GetSecurityConfig)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected SecurityConfig")
|
||||||
assert_eq!(security_config, response);
|
};
|
||||||
}
|
mock.assert_async().await;
|
||||||
|
assert_eq!(security_config, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -236,22 +241,23 @@ mod tests {
|
|||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
let date_time = DateTime::from(DateTime::parse_from_rfc3339("2023-02-25T20:16:43Z").unwrap());
|
let date_time = DateTime::from(DateTime::parse_from_rfc3339("2023-02-25T20:16:43Z").unwrap());
|
||||||
|
|
||||||
if let SonarrSerdeable::SystemStatus(status) = network
|
let SonarrSerdeable::SystemStatus(status) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetStatus)
|
.handle_sonarr_event(SonarrEvent::GetStatus)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected SystemStatus")
|
||||||
assert_str_eq!(app.lock().await.data.sonarr_data.version, "v1");
|
};
|
||||||
assert_eq!(app.lock().await.data.sonarr_data.start_time, date_time);
|
mock.assert_async().await;
|
||||||
assert_eq!(
|
assert_str_eq!(app.lock().await.data.sonarr_data.version, "v1");
|
||||||
status,
|
assert_eq!(app.lock().await.data.sonarr_data.start_time, date_time);
|
||||||
SystemStatus {
|
assert_eq!(
|
||||||
version: "v1".to_owned(),
|
status,
|
||||||
start_time: date_time
|
SystemStatus {
|
||||||
}
|
version: "v1".to_owned(),
|
||||||
);
|
start_time: date_time
|
||||||
}
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -295,18 +301,19 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::Tasks(tasks) = network
|
let SonarrSerdeable::Tasks(tasks) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetTasks)
|
.handle_sonarr_event(SonarrEvent::GetTasks)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected Tasks")
|
||||||
assert_eq!(
|
};
|
||||||
app.lock().await.data.sonarr_data.tasks.items,
|
mock.assert_async().await;
|
||||||
expected_tasks
|
assert_eq!(
|
||||||
);
|
app.lock().await.data.sonarr_data.tasks.items,
|
||||||
assert_eq!(tasks, response);
|
expected_tasks
|
||||||
}
|
);
|
||||||
|
assert_eq!(tasks, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -385,25 +392,26 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::Updates(updates) = network
|
let SonarrSerdeable::Updates(updates) = network
|
||||||
.handle_sonarr_event(SonarrEvent::GetUpdates)
|
.handle_sonarr_event(SonarrEvent::GetUpdates)
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected Updates")
|
||||||
let actual_text = app.lock().await.data.sonarr_data.updates.get_text();
|
};
|
||||||
let expected = expected_text.get_text();
|
mock.assert_async().await;
|
||||||
|
let actual_text = app.lock().await.data.sonarr_data.updates.get_text();
|
||||||
|
let expected = expected_text.get_text();
|
||||||
|
|
||||||
// Trim trailing whitespace from each line for comparison
|
// Trim trailing whitespace from each line for comparison
|
||||||
let actual_trimmed: Vec<&str> = actual_text.lines().map(|l| l.trim_end()).collect();
|
let actual_trimmed: Vec<&str> = actual_text.lines().map(|l| l.trim_end()).collect();
|
||||||
let expected_trimmed: Vec<&str> = expected.lines().map(|l| l.trim_end()).collect();
|
let expected_trimmed: Vec<&str> = expected.lines().map(|l| l.trim_end()).collect();
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
actual_trimmed, expected_trimmed,
|
actual_trimmed, expected_trimmed,
|
||||||
"Updates text mismatch (after trimming trailing whitespace)"
|
"Updates text mismatch (after trimming trailing whitespace)"
|
||||||
);
|
);
|
||||||
assert_eq!(updates, response);
|
assert_eq!(updates, response);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@@ -431,15 +439,16 @@ mod tests {
|
|||||||
app.lock().await.server_tabs.next();
|
app.lock().await.server_tabs.next();
|
||||||
let mut network = test_network(&app);
|
let mut network = test_network(&app);
|
||||||
|
|
||||||
if let SonarrSerdeable::Value(value) = network
|
let SonarrSerdeable::Value(value) = network
|
||||||
.handle_sonarr_event(SonarrEvent::StartTask(
|
.handle_sonarr_event(SonarrEvent::StartTask(
|
||||||
SonarrTaskName::ApplicationUpdateCheck,
|
SonarrTaskName::ApplicationUpdateCheck,
|
||||||
))
|
))
|
||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
{
|
else {
|
||||||
mock.assert_async().await;
|
panic!("Expected Value")
|
||||||
assert_eq!(value, response);
|
};
|
||||||
}
|
mock.assert_async().await;
|
||||||
|
assert_eq!(value, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,11 +23,10 @@ pub(super) struct BlocklistUi;
|
|||||||
|
|
||||||
impl DrawUi for BlocklistUi {
|
impl DrawUi for BlocklistUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return BLOCKLIST_BLOCKS.contains(&active_radarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
BLOCKLIST_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||||
|
|||||||
@@ -25,13 +25,12 @@ pub(super) struct CollectionsUi;
|
|||||||
|
|
||||||
impl DrawUi for CollectionsUi {
|
impl DrawUi for CollectionsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return CollectionDetailsUi::accepts(route)
|
return false;
|
||||||
|| EditCollectionUi::accepts(route)
|
};
|
||||||
|| COLLECTIONS_BLOCKS.contains(&active_radarr_block);
|
CollectionDetailsUi::accepts(route)
|
||||||
}
|
|| EditCollectionUi::accepts(route)
|
||||||
|
|| COLLECTIONS_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||||
|
|||||||
@@ -22,11 +22,10 @@ pub(super) struct DownloadsUi;
|
|||||||
|
|
||||||
impl DrawUi for DownloadsUi {
|
impl DrawUi for DownloadsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return DOWNLOADS_BLOCKS.contains(&active_radarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
DOWNLOADS_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||||
|
|||||||
@@ -26,11 +26,10 @@ pub(super) struct IndexerSettingsUi;
|
|||||||
|
|
||||||
impl DrawUi for IndexerSettingsUi {
|
impl DrawUi for IndexerSettingsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return INDEXER_SETTINGS_BLOCKS.contains(&active_radarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
INDEXER_SETTINGS_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -19,11 +19,10 @@ pub(super) struct TestAllIndexersUi;
|
|||||||
|
|
||||||
impl DrawUi for TestAllIndexersUi {
|
impl DrawUi for TestAllIndexersUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return active_radarr_block == ActiveRadarrBlock::TestAllIndexers;
|
return false;
|
||||||
}
|
};
|
||||||
|
active_radarr_block == ActiveRadarrBlock::TestAllIndexers
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -31,11 +31,10 @@ pub(super) struct AddMovieUi;
|
|||||||
|
|
||||||
impl DrawUi for AddMovieUi {
|
impl DrawUi for AddMovieUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return ADD_MOVIE_BLOCKS.contains(&active_radarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
ADD_MOVIE_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||||
|
|||||||
@@ -17,11 +17,10 @@ pub(super) struct DeleteMovieUi;
|
|||||||
|
|
||||||
impl DrawUi for DeleteMovieUi {
|
impl DrawUi for DeleteMovieUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return DELETE_MOVIE_BLOCKS.contains(&active_radarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
DELETE_MOVIE_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -31,11 +31,10 @@ pub(super) struct EditMovieUi;
|
|||||||
|
|
||||||
impl DrawUi for EditMovieUi {
|
impl DrawUi for EditMovieUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return EDIT_MOVIE_BLOCKS.contains(&active_radarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
EDIT_MOVIE_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -32,11 +32,10 @@ pub(super) struct MovieDetailsUi;
|
|||||||
|
|
||||||
impl DrawUi for MovieDetailsUi {
|
impl DrawUi for MovieDetailsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return MOVIE_DETAILS_BLOCKS.contains(&active_radarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
MOVIE_DETAILS_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -22,11 +22,10 @@ pub(super) struct RootFoldersUi;
|
|||||||
|
|
||||||
impl DrawUi for RootFoldersUi {
|
impl DrawUi for RootFoldersUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return ROOT_FOLDERS_BLOCKS.contains(&active_radarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
ROOT_FOLDERS_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||||
|
|||||||
@@ -52,11 +52,10 @@ pub(super) struct SystemUi;
|
|||||||
|
|
||||||
impl DrawUi for SystemUi {
|
impl DrawUi for SystemUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return SystemDetailsUi::accepts(route) || active_radarr_block == ActiveRadarrBlock::System;
|
return false;
|
||||||
}
|
};
|
||||||
|
SystemDetailsUi::accepts(route) || active_radarr_block == ActiveRadarrBlock::System
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||||
|
|||||||
@@ -27,11 +27,10 @@ pub(super) struct SystemDetailsUi;
|
|||||||
|
|
||||||
impl DrawUi for SystemDetailsUi {
|
impl DrawUi for SystemDetailsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Radarr(active_radarr_block, _) = route {
|
let Route::Radarr(active_radarr_block, _) = route else {
|
||||||
return SYSTEM_DETAILS_BLOCKS.contains(&active_radarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
SYSTEM_DETAILS_BLOCKS.contains(&active_radarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -23,11 +23,10 @@ pub(super) struct EditIndexerUi;
|
|||||||
|
|
||||||
impl DrawUi for EditIndexerUi {
|
impl DrawUi for EditIndexerUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return EDIT_INDEXER_BLOCKS.contains(&active_sonarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
EDIT_INDEXER_BLOCKS.contains(&active_sonarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -23,11 +23,10 @@ pub(super) struct IndexerSettingsUi;
|
|||||||
|
|
||||||
impl DrawUi for IndexerSettingsUi {
|
impl DrawUi for IndexerSettingsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return INDEXER_SETTINGS_BLOCKS.contains(&active_sonarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
INDEXER_SETTINGS_BLOCKS.contains(&active_sonarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -30,11 +30,10 @@ pub(super) struct AddSeriesUi;
|
|||||||
|
|
||||||
impl DrawUi for AddSeriesUi {
|
impl DrawUi for AddSeriesUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return ADD_SERIES_BLOCKS.contains(&active_sonarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
ADD_SERIES_BLOCKS.contains(&active_sonarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -17,11 +17,10 @@ pub(super) struct DeleteSeriesUi;
|
|||||||
|
|
||||||
impl DrawUi for DeleteSeriesUi {
|
impl DrawUi for DeleteSeriesUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return DELETE_SERIES_BLOCKS.contains(&active_sonarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
DELETE_SERIES_BLOCKS.contains(&active_sonarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -32,11 +32,10 @@ pub(super) struct EditSeriesUi;
|
|||||||
|
|
||||||
impl DrawUi for EditSeriesUi {
|
impl DrawUi for EditSeriesUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return EDIT_SERIES_BLOCKS.contains(&active_sonarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
EDIT_SERIES_BLOCKS.contains(&active_sonarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -39,11 +39,10 @@ pub(super) struct EpisodeDetailsUi;
|
|||||||
|
|
||||||
impl DrawUi for EpisodeDetailsUi {
|
impl DrawUi for EpisodeDetailsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return EPISODE_DETAILS_BLOCKS.contains(&active_sonarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
EPISODE_DETAILS_BLOCKS.contains(&active_sonarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -38,12 +38,10 @@ pub(super) struct SeasonDetailsUi;
|
|||||||
|
|
||||||
impl DrawUi for SeasonDetailsUi {
|
impl DrawUi for SeasonDetailsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return EpisodeDetailsUi::accepts(route)
|
return false;
|
||||||
|| SEASON_DETAILS_BLOCKS.contains(&active_sonarr_block);
|
};
|
||||||
}
|
EpisodeDetailsUi::accepts(route) || SEASON_DETAILS_BLOCKS.contains(&active_sonarr_block)
|
||||||
|
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
@@ -42,13 +42,12 @@ pub(super) struct SeriesDetailsUi;
|
|||||||
|
|
||||||
impl DrawUi for SeriesDetailsUi {
|
impl DrawUi for SeriesDetailsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return SeasonDetailsUi::accepts(route)
|
return false;
|
||||||
|| EpisodeDetailsUi::accepts(route)
|
};
|
||||||
|| SERIES_DETAILS_BLOCKS.contains(&active_sonarr_block);
|
SeasonDetailsUi::accepts(route)
|
||||||
}
|
|| EpisodeDetailsUi::accepts(route)
|
||||||
|
|| SERIES_DETAILS_BLOCKS.contains(&active_sonarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||||
|
|||||||
@@ -46,11 +46,10 @@ pub(super) struct SystemUi;
|
|||||||
|
|
||||||
impl DrawUi for SystemUi {
|
impl DrawUi for SystemUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return SystemDetailsUi::accepts(route) || active_sonarr_block == ActiveSonarrBlock::System;
|
return false;
|
||||||
}
|
};
|
||||||
|
SystemDetailsUi::accepts(route) || active_sonarr_block == ActiveSonarrBlock::System
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||||
|
|||||||
@@ -27,11 +27,10 @@ pub(super) struct SystemDetailsUi;
|
|||||||
|
|
||||||
impl DrawUi for SystemDetailsUi {
|
impl DrawUi for SystemDetailsUi {
|
||||||
fn accepts(route: Route) -> bool {
|
fn accepts(route: Route) -> bool {
|
||||||
if let Route::Sonarr(active_sonarr_block, _) = route {
|
let Route::Sonarr(active_sonarr_block, _) = route else {
|
||||||
return SYSTEM_DETAILS_BLOCKS.contains(&active_sonarr_block);
|
return false;
|
||||||
}
|
};
|
||||||
|
SYSTEM_DETAILS_BLOCKS.contains(&active_sonarr_block)
|
||||||
false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
fn draw(f: &mut Frame<'_>, app: &mut App<'_>, _area: Rect) {
|
||||||
|
|||||||
Reference in New Issue
Block a user