test(domain): write failing tests for Relay aggregate
Created test suite for Relay entity covering construction, state toggling, and explicit state control methods. Tests intentionally fail as Relay struct is not yet implemented. Tests cover: - Relay::new() with id, state, and optional label - toggle() flipping state between On/Off - turn_on() setting state to On - turn_off() setting state to Off TDD phase: RED - Tests written, implementation pending (T022) Ref: T021 (specs/001-modbus-relay-control/tasks.md)
This commit is contained in:
63
backend/src/domain/relay/entity.rs
Normal file
63
backend/src/domain/relay/entity.rs
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
//! 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,3 +9,5 @@ pub mod repository;
|
|||||||
pub mod types;
|
pub mod types;
|
||||||
/// Controller error types for relay operations.
|
/// Controller error types for relay operations.
|
||||||
pub mod controler;
|
pub mod controler;
|
||||||
|
/// Relay entity representing the relay aggregate.
|
||||||
|
pub mod entity;
|
||||||
|
|||||||
@@ -231,7 +231,7 @@
|
|||||||
- **File**: src/domain/relay.rs
|
- **File**: src/domain/relay.rs
|
||||||
- **Complexity**: Low | **Uncertainty**: Low
|
- **Complexity**: Low | **Uncertainty**: Low
|
||||||
|
|
||||||
- [ ] **T021** [US1] [TDD] Write tests for Relay aggregate
|
- [x] **T021** [US1] [TDD] Write tests for Relay aggregate
|
||||||
- Test: Relay::new(RelayId(1), RelayState::Off, None) creates relay
|
- Test: Relay::new(RelayId(1), RelayState::Off, None) creates relay
|
||||||
- Test: relay.toggle() flips state
|
- Test: relay.toggle() flips state
|
||||||
- Test: relay.turn_on() sets state to On
|
- Test: relay.turn_on() sets state to On
|
||||||
|
|||||||
Reference in New Issue
Block a user