use super::mock;
use super::mock::MockRepository;
use crate::storage::refs::sigrefs::write::{error, Tree, TreeWriter};
use crate::storage::refs::Refs;
fn mock_refs() -> Refs {
Refs::from([(mock::refs_heads_main(), mock::oid(10))].into_iter())
}
#[test]
fn sign_error() {
let result = TreeWriter::new(mock_refs(), &MockRepository::new(), &mock::NeverSign).write();
assert!(matches!(result, Err(error::Tree::Sign(_))));
}
#[test]
fn write_tree_error() {
let repo = MockRepository::new().with_write_tree_error();
let result = TreeWriter::new(mock_refs(), &repo, &mock::AlwaysSign).write();
assert!(matches!(result, Err(error::Tree::Write(_))));
}
#[test]
fn write_ok() {
let refs = mock_refs();
let expected_oid = mock::oid(1);
let repo = MockRepository::new().with_write_tree_ok(expected_oid);
let tree = TreeWriter::new(refs.clone(), &repo, &mock::AlwaysSign)
.write()
.unwrap();
assert_eq!(
tree,
Tree {
oid: expected_oid,
refs,
signature: mock::AlwaysSign::signature(),
}
);
}