Add schedule fields to program
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
e2c06f03a5
commit
a56da9b9e0
@ -1,5 +1,6 @@
|
||||
use std::{time::Duration, sync::Arc};
|
||||
use super::section::SectionId;
|
||||
use crate::schedule::Schedule;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct ProgramItem {
|
||||
@ -16,6 +17,8 @@ pub struct Program {
|
||||
pub id: ProgramId,
|
||||
pub name: String,
|
||||
pub sequence: ProgramSequence,
|
||||
pub enabled: bool,
|
||||
pub schedule: Schedule,
|
||||
}
|
||||
|
||||
pub type ProgramRef = Arc<Program>;
|
||||
|
@ -373,6 +373,7 @@ mod test {
|
||||
use crate::section_interface::{MockSectionInterface, SectionInterface};
|
||||
use crate::{
|
||||
model::{Program, ProgramItem, Section},
|
||||
schedule::Schedule,
|
||||
trace_listeners::{EventListener, Filters, SpanFilters, SpanListener},
|
||||
};
|
||||
use im::ordmap;
|
||||
@ -428,6 +429,17 @@ mod test {
|
||||
(sections, sec_runner, interface)
|
||||
}
|
||||
|
||||
fn make_program(num: ProgramId, sequence: Vec<ProgramItem>) -> ProgramRef {
|
||||
Program {
|
||||
id: num,
|
||||
name: format!("Program {}", num),
|
||||
sequence,
|
||||
enabled: false,
|
||||
schedule: Schedule::default(),
|
||||
}
|
||||
.into()
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_run_program() {
|
||||
let (sections, mut sec_runner, interface) = make_sections_and_runner();
|
||||
@ -435,10 +447,9 @@ mod test {
|
||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||
let mut prog_events = runner.subscribe().await.unwrap();
|
||||
|
||||
let program: ProgramRef = Program {
|
||||
id: 1,
|
||||
name: "Program 1".into(),
|
||||
sequence: vec![
|
||||
let program = make_program(
|
||||
1,
|
||||
vec![
|
||||
ProgramItem {
|
||||
section_id: 1,
|
||||
duration: Duration::from_secs(10),
|
||||
@ -448,8 +459,7 @@ mod test {
|
||||
duration: Duration::from_secs(10),
|
||||
},
|
||||
],
|
||||
}
|
||||
.into();
|
||||
);
|
||||
|
||||
runner.update_sections(sections.clone()).await.unwrap();
|
||||
|
||||
@ -497,25 +507,20 @@ mod test {
|
||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||
let mut prog_events = runner.subscribe().await.unwrap();
|
||||
|
||||
let program1: ProgramRef = Program {
|
||||
id: 1,
|
||||
name: "Program 1".into(),
|
||||
sequence: vec![ProgramItem {
|
||||
let program1 = make_program(
|
||||
1,
|
||||
vec![ProgramItem {
|
||||
section_id: 3,
|
||||
duration: Duration::from_secs(10),
|
||||
}],
|
||||
}
|
||||
.into();
|
||||
let program2: ProgramRef = Program {
|
||||
id: 2,
|
||||
name: "Program 2".into(),
|
||||
sequence: vec![ProgramItem {
|
||||
);
|
||||
let program2 = make_program(
|
||||
2,
|
||||
vec![ProgramItem {
|
||||
section_id: 1,
|
||||
duration: Duration::from_secs(10),
|
||||
}],
|
||||
}
|
||||
.into();
|
||||
|
||||
);
|
||||
runner.update_sections(sections.clone()).await.unwrap();
|
||||
|
||||
runner.run_program(program1).await.unwrap();
|
||||
@ -559,12 +564,7 @@ mod test {
|
||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||
let mut prog_events = runner.subscribe().await.unwrap();
|
||||
|
||||
let program: ProgramRef = Program {
|
||||
id: 1,
|
||||
name: "Program 1".into(),
|
||||
sequence: vec![],
|
||||
}
|
||||
.into();
|
||||
let program = make_program(1, vec![]);
|
||||
|
||||
runner.update_sections(sections.clone()).await.unwrap();
|
||||
|
||||
@ -588,24 +588,20 @@ mod test {
|
||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||
let mut prog_events = runner.subscribe().await.unwrap();
|
||||
|
||||
let program1: ProgramRef = Program {
|
||||
id: 1,
|
||||
name: "Program 1".into(),
|
||||
sequence: vec![ProgramItem {
|
||||
let program1 = make_program(
|
||||
1,
|
||||
vec![ProgramItem {
|
||||
section_id: 2,
|
||||
duration: Duration::from_secs(10),
|
||||
}],
|
||||
}
|
||||
.into();
|
||||
let program2: ProgramRef = Program {
|
||||
id: 2,
|
||||
name: "Program 2".into(),
|
||||
sequence: vec![ProgramItem {
|
||||
);
|
||||
let program2 = make_program(
|
||||
2,
|
||||
vec![ProgramItem {
|
||||
section_id: 2,
|
||||
duration: Duration::from_secs(10),
|
||||
}],
|
||||
}
|
||||
.into();
|
||||
);
|
||||
let programs = ordmap![ 1 => program1, 2 => program2 ];
|
||||
|
||||
runner.update_sections(sections.clone()).await.unwrap();
|
||||
@ -659,10 +655,9 @@ mod test {
|
||||
let mut runner = ProgramRunner::new(sec_runner.clone());
|
||||
let mut prog_events = runner.subscribe().await.unwrap();
|
||||
|
||||
let program: ProgramRef = Program {
|
||||
id: 1,
|
||||
name: "Program 1".into(),
|
||||
sequence: vec![
|
||||
let program = make_program(
|
||||
1,
|
||||
vec![
|
||||
ProgramItem {
|
||||
section_id: 1,
|
||||
duration: Duration::from_secs(10),
|
||||
@ -672,8 +667,7 @@ mod test {
|
||||
duration: Duration::from_secs(10),
|
||||
},
|
||||
],
|
||||
}
|
||||
.into();
|
||||
);
|
||||
|
||||
runner.update_sections(sections.clone()).await.unwrap();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user