Draft iced_test crate and test todos example

This commit is contained in:
Héctor Ramón Jiménez 2024-12-03 22:03:06 +01:00
parent d6182299b9
commit d09d5d45ae
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
18 changed files with 640 additions and 63 deletions

View file

@ -26,6 +26,9 @@ uuid = { version = "1.0", features = ["js"] }
web-sys = { workspace = true, features = ["Window", "Storage"] }
wasm-timer.workspace = true
[dev-dependencies]
iced_test.workspace = true
[package.metadata.deb]
assets = [
["target/release-opt/todos", "usr/bin/iced-todos", "755"],

View file

@ -584,3 +584,36 @@ impl SavedState {
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
use iced::test;
use iced::test::selector;
#[test]
fn it_creates_a_new_task() {
let (mut todos, _command) = Todos::new();
let _command = todos.update(Message::Loaded(Err(LoadError::File)));
let mut interface = test::interface(todos.view());
let _input = interface
.click("new-task")
.expect("new-task input must be present");
interface.typewrite("Create the universe");
interface.press_key(keyboard::key::Named::Enter);
for message in interface.into_messages() {
let _command = todos.update(message);
}
let mut interface = test::interface(todos.view());
let _ = interface
.find(selector::text("Create the universe"))
.expect("New task must be present");
}
}