aboutsummaryrefslogtreecommitdiff
path: root/examples/save.rs
diff options
context:
space:
mode:
authorpml68 <contact@pml68.dev>2025-07-23 01:33:32 +0200
committerpml68 <contact@pml68.dev>2025-07-23 01:44:48 +0200
commitac6a60347a2d044926ec200665cea430f12b34fe (patch)
tree662da341972abb5134e9ab6f03d5956548288f01 /examples/save.rs
parentstyle: organize imports (diff)
downloadiced_dialog-ac6a60347a2d044926ec200665cea430f12b34fe.tar.gz
ci: add unit test(s) for `save` example
Diffstat (limited to '')
-rw-r--r--examples/save.rs69
1 files changed, 60 insertions, 9 deletions
diff --git a/examples/save.rs b/examples/save.rs
index 6eb31b6..060b1c1 100644
--- a/examples/save.rs
+++ b/examples/save.rs
@@ -1,6 +1,6 @@
#![allow(missing_docs)]
use iced::{
- Element, Length, Task,
+ Element, Task,
widget::{button, center, column, text},
};
use iced_dialog::dialog;
@@ -8,7 +8,7 @@ use iced_dialog::dialog;
#[derive(Default)]
struct State {
is_open: bool,
- action_text: String,
+ action_text: &'static str,
}
#[derive(Debug, Clone)]
@@ -27,11 +27,11 @@ impl State {
match message {
Message::OpenDialog => self.is_open = true,
Message::Saved => {
- self.action_text = "User saved their work".to_owned();
+ self.action_text = "User saved their work";
self.is_open = false;
}
Message::Cancelled => {
- self.action_text = "User cancelled the dialog".to_owned();
+ self.action_text = "User cancelled the dialog";
self.is_open = false;
}
}
@@ -41,19 +41,17 @@ impl State {
fn view(&self) -> Element<'_, Message> {
let base = center(
column![
- text(&self.action_text),
+ text(self.action_text),
button("Open Dialog").on_press(Message::OpenDialog)
]
.spacing(14.0),
- )
- .width(Length::Fill)
- .height(Length::Fill);
+ );
let dialog_content = text("Do you want to save?");
dialog(self.is_open, base, dialog_content)
.title("Save")
- .push_button(iced_dialog::button("Save", Message::Saved))
+ .push_button(iced_dialog::button("Save work", Message::Saved))
.push_button(iced_dialog::button("Cancel", Message::Cancelled))
.width(350)
.height(234)
@@ -61,3 +59,56 @@ impl State {
.into()
}
}
+
+#[cfg(test)]
+mod tests {
+ use iced_test::{Error, simulator};
+
+ use super::*;
+
+ #[test]
+ fn dialog_opens() -> Result<(), Error> {
+ let mut save = State {
+ action_text: "",
+ is_open: false,
+ };
+ let mut ui = simulator(save.view());
+
+ let _ = ui.click("Open Dialog")?;
+ for message in ui.into_messages() {
+ let _ = save.update(message);
+ }
+
+ let mut ui = simulator(save.view());
+ assert!(save.is_open);
+ assert!(
+ ui.find("Do you want to save?").is_ok(),
+ "Dialog should be open"
+ );
+
+ Ok(())
+ }
+
+ #[test]
+ fn dialog_closes() -> Result<(), Error> {
+ let mut save = State {
+ action_text: "",
+ is_open: true,
+ };
+ let mut ui = simulator(save.view());
+
+ let _ = ui.click("Save work")?;
+ for message in ui.into_messages() {
+ let _ = save.update(message);
+ }
+
+ let mut ui = simulator(save.view());
+ assert_eq!(save.action_text, "User saved their work");
+ assert!(
+ ui.find("User saved their work").is_ok(),
+ "Dialog should be closed"
+ );
+
+ Ok(())
+ }
+}