squad-quest/tests/main.rs
2ndbeam 0e8cdde697 feat!: Account features
- Bump version to 0.2.0
- Added trait SquadObject
- Implemented SquadObject for Quest and Account
- Implemented Config::load_accounts
- Removed src/quest/error.rs
- Added account tests in tests/main.rs

BREAKING CHANGE: Quest::{load,delete,save} are now provided by
SquadObject trait
2025-12-02 14:33:38 +03:00

83 lines
2.1 KiB
Rust

use squad_quest::{account::Account, config::Config, quest::Quest};
static CONFIG_PATH: &str = "./tests/main/config.toml";
#[test]
fn load_quests() {
let config = Config::load(CONFIG_PATH.into());
let quests = config.load_quests();
assert_eq!(quests.len(), 2);
}
#[test]
fn empty_quest_is_default() {
// First loaded quest should be 0.toml, which is empty
let config = Config::load(CONFIG_PATH.into());
let mut quests = config.load_quests();
quests.sort_by(|a,b| a.id.cmp(&b.id));
let quest = quests.first().unwrap();
let default = Quest::default();
assert_eq!(*quest, default);
}
#[test]
fn quest_one() {
let config = Config::load(CONFIG_PATH.into());
let quests = config.load_quests();
let quest = quests.iter().find(|q| q.id == 1).unwrap();
let expected = Quest {
id: 1,
difficulty: squad_quest::quest::QuestDifficulty::Easy,
reward: 100,
name: "Example easy quest".to_owned(),
description: "Answer this quest without any attachments or comments".to_owned(),
answer: "Accept the answer if it has no attachments and an empty comment".to_owned(),
public: false,
available_on: None,
deadline: None
};
assert_eq!(*quest, expected);
}
#[test]
fn load_accounts() {
let config = Config::load(CONFIG_PATH.into());
let accounts = config.load_accounts();
assert_eq!(accounts.len(), 2);
}
#[test]
fn empty_account_is_default() {
let config = Config::load(CONFIG_PATH.into());
let accounts = config.load_accounts();
let default = Account::default();
let account = accounts.iter().find(|a| a.id == default.id).unwrap();
assert_eq!(*account, default);
}
#[test]
fn account_test() {
let config = Config::load(CONFIG_PATH.into());
let expected = Account {
id: "test".to_string(),
balance: 150,
location: 0,
quests_completed: vec![0],
rooms_unlocked: Vec::new()
};
let accounts = config.load_accounts();
let account = accounts.iter().find(|a| a.id == expected.id).unwrap();
assert_eq!(*account, expected);
}