use crate::prelude::*;
use crate::tests::test_client;
use anyhow::Result;
#[tokio::test]
async fn test_gallery() -> Result<()> {
let client = test_client::testwp_client();
let code = client.get("Mwbot-rs/Gallery").await?.into_mutable();
let galleries: Vec<_> = code
.inclusive_descendants()
.filter_map(|node| node.as_gallery())
.collect();
assert_eq!(galleries.len(), 1);
assert_eq!(galleries[0].caption().unwrap(), "caption1");
galleries[0].set_caption("test".to_string())?;
assert_eq!(galleries[0].caption().unwrap(), "test");
let images = galleries[0].images();
assert_eq!(images.len(), 3);
assert_eq!(images[0].title(), "File:Image.jpg");
assert_eq!(images[1].title(), "File:Foobar.jpg");
assert_eq!(
images[2].title(),
"File:Drop of water on water-resistant textile (100% polyester).jpg"
);
let code = client.get("Mwbot-rs/Gallery2").await?.into_mutable();
let galleries: Vec<_> = code
.inclusive_descendants()
.filter_map(|node| node.as_gallery())
.collect();
assert_eq!(galleries.len(), 1);
assert_eq!(galleries[0].caption(), None);
galleries[0].set_caption("test2".to_string())?;
assert_eq!(galleries[0].caption().unwrap(), "test2");
Ok(())
}