application: config_snapshots, admin, providers, iptv
This commit is contained in:
75
crates/application/src/config_snapshots/tests/save.rs
Normal file
75
crates/application/src/config_snapshots/tests/save.rs
Normal file
@@ -0,0 +1,75 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use domain::models::Channel;
|
||||
use domain::testing::InMemoryChannelRepository;
|
||||
use domain::value_objects::UserId;
|
||||
|
||||
use crate::config_snapshots::commands::SaveSnapshotCommand;
|
||||
use crate::config_snapshots::deps::ConfigSnapshotDeps;
|
||||
use crate::config_snapshots::save;
|
||||
|
||||
fn make_deps() -> (ConfigSnapshotDeps, Arc<InMemoryChannelRepository>) {
|
||||
let repo = Arc::new(InMemoryChannelRepository::new());
|
||||
let deps = ConfigSnapshotDeps {
|
||||
channel_command: repo.clone(),
|
||||
channel_query: repo.clone(),
|
||||
};
|
||||
(deps, repo)
|
||||
}
|
||||
|
||||
async fn seed_channel(repo: &InMemoryChannelRepository) -> Channel {
|
||||
let channel = Channel::new(UserId::generate(), "Test Channel", "UTC");
|
||||
repo.channels
|
||||
.lock()
|
||||
.unwrap()
|
||||
.insert(channel.id().value(), channel.clone());
|
||||
channel
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn save_creates_snapshot() {
|
||||
let (deps, repo) = make_deps();
|
||||
let channel = seed_channel(&repo).await;
|
||||
|
||||
let snap = save::execute(
|
||||
&deps,
|
||||
SaveSnapshotCommand {
|
||||
channel_id: channel.id().value(),
|
||||
label: Some("v1".into()),
|
||||
},
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(snap.channel_id(), channel.id());
|
||||
assert_eq!(snap.label(), Some("v1"));
|
||||
assert_eq!(snap.version_num(), 1);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn save_increments_version() {
|
||||
let (deps, repo) = make_deps();
|
||||
let channel = seed_channel(&repo).await;
|
||||
|
||||
save::execute(
|
||||
&deps,
|
||||
SaveSnapshotCommand {
|
||||
channel_id: channel.id().value(),
|
||||
label: None,
|
||||
},
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let snap2 = save::execute(
|
||||
&deps,
|
||||
SaveSnapshotCommand {
|
||||
channel_id: channel.id().value(),
|
||||
label: None,
|
||||
},
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(snap2.version_num(), 2);
|
||||
}
|
||||
Reference in New Issue
Block a user