first pass of merging in warp (doesn't build)
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
use super::*;
|
||||
fn status(state: RemoteCodebaseIndexState) -> RemoteCodebaseIndexStatus {
|
||||
RemoteCodebaseIndexStatus {
|
||||
repo_path: "/repo".to_string(),
|
||||
state,
|
||||
last_updated_epoch_millis: Some(42),
|
||||
progress_completed: None,
|
||||
progress_total: None,
|
||||
failure_message: None,
|
||||
root_hash: None,
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn all_status_states_round_trip_through_proto() {
|
||||
for state in [
|
||||
RemoteCodebaseIndexState::NotEnabled,
|
||||
RemoteCodebaseIndexState::Unavailable,
|
||||
RemoteCodebaseIndexState::Disabled,
|
||||
RemoteCodebaseIndexState::Queued,
|
||||
RemoteCodebaseIndexState::Indexing,
|
||||
RemoteCodebaseIndexState::Ready,
|
||||
RemoteCodebaseIndexState::Stale,
|
||||
RemoteCodebaseIndexState::Failed,
|
||||
] {
|
||||
let status = status(state);
|
||||
|
||||
let proto = proto::CodebaseIndexStatus::from(&status);
|
||||
assert_eq!(proto_to_codebase_index_status(&proto), Some(status));
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ready_status_round_trips_retrieval_metadata() {
|
||||
let status = RemoteCodebaseIndexStatus {
|
||||
root_hash: Some("root-hash".to_string()),
|
||||
..status(RemoteCodebaseIndexState::Ready)
|
||||
};
|
||||
|
||||
let proto = proto::CodebaseIndexStatus::from(&status);
|
||||
assert_eq!(proto.root_hash.as_deref(), Some("root-hash"));
|
||||
assert_eq!(proto_to_codebase_index_status(&proto), Some(status));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn indexing_status_round_trips_progress() {
|
||||
let status = RemoteCodebaseIndexStatus {
|
||||
progress_completed: Some(7),
|
||||
progress_total: Some(11),
|
||||
..status(RemoteCodebaseIndexState::Indexing)
|
||||
};
|
||||
|
||||
let proto = proto::CodebaseIndexStatus::from(&status);
|
||||
assert_eq!(proto.progress_completed, Some(7));
|
||||
assert_eq!(proto.progress_total, Some(11));
|
||||
assert_eq!(proto_to_codebase_index_status(&proto), Some(status));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn failed_status_round_trips_failure_message() {
|
||||
let status = RemoteCodebaseIndexStatus {
|
||||
failure_message: Some("failed to sync".to_string()),
|
||||
..status(RemoteCodebaseIndexState::Failed)
|
||||
};
|
||||
|
||||
let proto = proto::CodebaseIndexStatus::from(&status);
|
||||
assert_eq!(proto.failure_message.as_deref(), Some("failed to sync"));
|
||||
assert_eq!(proto_to_codebase_index_status(&proto), Some(status));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unspecified_status_state_is_ignored() {
|
||||
let status = proto::CodebaseIndexStatus {
|
||||
repo_path: "/repo".to_string(),
|
||||
state: proto::CodebaseIndexStatusState::Unspecified as i32,
|
||||
last_updated_epoch_millis: None,
|
||||
progress_completed: None,
|
||||
progress_total: None,
|
||||
failure_message: None,
|
||||
root_hash: None,
|
||||
};
|
||||
|
||||
assert_eq!(proto_to_codebase_index_status(&status), None);
|
||||
}
|
||||
Reference in New Issue
Block a user