Files
sta/backend/src/domain/relay/entity.rs

64 lines
1.9 KiB
Rust
Raw Normal View History

//! Relay entity representing a relay aggregate in the domain model.
use super::types::{RelayId, RelayState};
#[cfg(test)]
mod tests {
use super::*;
use crate::domain::relay::controler::ControllerError;
#[test]
fn test_relay_new_creates_relay() {
// Test: Relay::new(RelayId(1), RelayState::Off, None) creates relay
let relay_id = RelayId::new(1).unwrap();
let relay = Relay::new(relay_id, RelayState::Off, None);
assert_eq!(relay.id(), relay_id);
assert_eq!(relay.state(), RelayState::Off);
assert_eq!(relay.label(), None);
}
#[test]
fn test_relay_toggle_flips_state() {
// Test: relay.toggle() flips state
let relay_id = RelayId::new(1).unwrap();
let mut relay = Relay::new(relay_id, RelayState::Off, None);
// Toggle from Off to On
relay.toggle();
assert_eq!(relay.state(), RelayState::On);
// Toggle from On to Off
relay.toggle();
assert_eq!(relay.state(), RelayState::Off);
}
#[test]
fn test_relay_turn_on_sets_state_to_on() {
// Test: relay.turn_on() sets state to On
let relay_id = RelayId::new(1).unwrap();
let mut relay = Relay::new(relay_id, RelayState::Off, None);
relay.turn_on();
assert_eq!(relay.state(), RelayState::On);
// Calling turn_on when already on should keep it on
relay.turn_on();
assert_eq!(relay.state(), RelayState::On);
}
#[test]
fn test_relay_turn_off_sets_state_to_off() {
// Test: relay.turn_off() sets state to Off
let relay_id = RelayId::new(1).unwrap();
let mut relay = Relay::new(relay_id, RelayState::On, None);
relay.turn_off();
assert_eq!(relay.state(), RelayState::Off);
// Calling turn_off when already off should keep it off
relay.turn_off();
assert_eq!(relay.state(), RelayState::Off);
}
}