Some checks failed
CI / Check (pull_request) Has been cancelled
CI / Format (pull_request) Has been cancelled
CI / Clippy (pull_request) Has been cancelled
CI / Build (macos-latest) (pull_request) Has been cancelled
CI / Build (ubuntu-latest) (pull_request) Has been cancelled
CI / Build (windows-latest) (pull_request) Has been cancelled
120 lines
3.0 KiB
Rust
120 lines
3.0 KiB
Rust
// Screen snapshot tests
|
|
|
|
mod helpers;
|
|
|
|
use helpers::app_builder::TestAppBuilder;
|
|
use helpers::snapshot_utils::{render_to_buffer, buffer_to_string};
|
|
use helpers::test_data::create_test_chat;
|
|
use insta::assert_snapshot;
|
|
use tele_tui::app::AppScreen;
|
|
use tele_tui::tdlib::client::AuthState;
|
|
|
|
#[test]
|
|
fn snapshot_loading_screen_default() {
|
|
let mut app = TestAppBuilder::new()
|
|
.screen(AppScreen::Loading)
|
|
.build();
|
|
|
|
let buffer = render_to_buffer(80, 24, |f| {
|
|
tele_tui::ui::render(f, &mut app);
|
|
});
|
|
|
|
let output = buffer_to_string(&buffer);
|
|
assert_snapshot!("loading_screen_default", output);
|
|
}
|
|
|
|
#[test]
|
|
fn snapshot_loading_screen_with_status() {
|
|
let mut app = TestAppBuilder::new()
|
|
.screen(AppScreen::Loading)
|
|
.status_message("Подключение к Telegram...")
|
|
.build();
|
|
|
|
let buffer = render_to_buffer(80, 24, |f| {
|
|
tele_tui::ui::render(f, &mut app);
|
|
});
|
|
|
|
let output = buffer_to_string(&buffer);
|
|
assert_snapshot!("loading_screen_with_status", output);
|
|
}
|
|
|
|
#[test]
|
|
fn snapshot_auth_screen_phone() {
|
|
let mut app = TestAppBuilder::new()
|
|
.screen(AppScreen::Auth)
|
|
.auth_state(AuthState::WaitPhoneNumber)
|
|
.phone_input("+7")
|
|
.build();
|
|
|
|
let buffer = render_to_buffer(80, 24, |f| {
|
|
tele_tui::ui::render(f, &mut app);
|
|
});
|
|
|
|
let output = buffer_to_string(&buffer);
|
|
assert_snapshot!("auth_screen_phone", output);
|
|
}
|
|
|
|
#[test]
|
|
fn snapshot_auth_screen_code() {
|
|
let mut app = TestAppBuilder::new()
|
|
.screen(AppScreen::Auth)
|
|
.auth_state(AuthState::WaitCode)
|
|
.code_input("1234")
|
|
.build();
|
|
|
|
let buffer = render_to_buffer(80, 24, |f| {
|
|
tele_tui::ui::render(f, &mut app);
|
|
});
|
|
|
|
let output = buffer_to_string(&buffer);
|
|
assert_snapshot!("auth_screen_code", output);
|
|
}
|
|
|
|
#[test]
|
|
fn snapshot_auth_screen_password() {
|
|
let mut app = TestAppBuilder::new()
|
|
.screen(AppScreen::Auth)
|
|
.auth_state(AuthState::WaitPassword)
|
|
.password_input("pass")
|
|
.build();
|
|
|
|
let buffer = render_to_buffer(80, 24, |f| {
|
|
tele_tui::ui::render(f, &mut app);
|
|
});
|
|
|
|
let output = buffer_to_string(&buffer);
|
|
assert_snapshot!("auth_screen_password", output);
|
|
}
|
|
|
|
#[test]
|
|
fn snapshot_main_screen_empty() {
|
|
let mut app = TestAppBuilder::new()
|
|
.screen(AppScreen::Main)
|
|
.build();
|
|
|
|
let buffer = render_to_buffer(80, 24, |f| {
|
|
tele_tui::ui::render(f, &mut app);
|
|
});
|
|
|
|
let output = buffer_to_string(&buffer);
|
|
assert_snapshot!("main_screen_empty", output);
|
|
}
|
|
|
|
#[test]
|
|
fn snapshot_main_screen_terminal_too_small() {
|
|
let chat = create_test_chat("Mom", 123);
|
|
|
|
let mut app = TestAppBuilder::new()
|
|
.screen(AppScreen::Main)
|
|
.with_chat(chat)
|
|
.build();
|
|
|
|
// Use smaller terminal size (30x8) - below minimum 40x10
|
|
let buffer = render_to_buffer(30, 8, |f| {
|
|
tele_tui::ui::render(f, &mut app);
|
|
});
|
|
|
|
let output = buffer_to_string(&buffer);
|
|
assert_snapshot!("main_screen_terminal_too_small", output);
|
|
}
|