Files
galaxy/app/src/workspaces/workspace_tests.rs
T

103 lines
3.0 KiB
Rust

use super::*;
use crate::server::ids::ServerId;
// `ServerId::from_string_lossy` requires exactly 22 characters.
const TEST_WORKSPACE_UID: &str = "workspace_uid123456789";
fn make_workspace(policy: Option<UsageVisibilityPolicy>) -> Workspace {
let mut workspace = Workspace::from_local_cache(
ServerId::from_string_lossy(TEST_WORKSPACE_UID).into(),
"Test Workspace".to_string(),
None,
);
workspace.billing_metadata.tier.usage_visibility_policy = policy;
workspace
}
fn policy(
granularity: UsageVisibilityGranularity,
max_prior_cycles: MaxPriorCycles,
) -> UsageVisibilityPolicy {
UsageVisibilityPolicy {
admin_granularity: granularity,
max_prior_cycles,
}
}
#[test]
fn missing_policy_returns_defaults_for_admin_and_non_admin() {
let workspace = make_workspace(None);
let as_admin = workspace.resolve_usage_visibility(true);
assert_eq!(as_admin.granularity, UsageVisibilityGranularity::OwnOnly);
assert_eq!(as_admin.max_prior_cycles, MaxPriorCycles::None);
let as_non_admin = workspace.resolve_usage_visibility(false);
assert_eq!(
as_non_admin.granularity,
UsageVisibilityGranularity::OwnOnly
);
assert_eq!(as_non_admin.max_prior_cycles, MaxPriorCycles::None);
}
#[test]
fn non_admin_collapses_granularity_but_keeps_max_prior_cycles() {
let workspace = make_workspace(Some(policy(
UsageVisibilityGranularity::FullBreakdown,
MaxPriorCycles::Limited(11),
)));
let resolved = workspace.resolve_usage_visibility(false);
assert_eq!(resolved.granularity, UsageVisibilityGranularity::OwnOnly);
assert_eq!(resolved.max_prior_cycles, MaxPriorCycles::Limited(11));
}
#[test]
fn admin_inherits_tier_team_aggregate_granularity() {
let workspace = make_workspace(Some(policy(
UsageVisibilityGranularity::TeamAggregate,
MaxPriorCycles::Limited(11),
)));
let resolved = workspace.resolve_usage_visibility(true);
assert_eq!(
resolved.granularity,
UsageVisibilityGranularity::TeamAggregate
);
assert_eq!(resolved.max_prior_cycles, MaxPriorCycles::Limited(11));
}
#[test]
fn admin_inherits_tier_per_user_totals_unlimited() {
let workspace = make_workspace(Some(policy(
UsageVisibilityGranularity::PerUserTotals,
MaxPriorCycles::Unlimited,
)));
let resolved = workspace.resolve_usage_visibility(true);
assert_eq!(
resolved.granularity,
UsageVisibilityGranularity::PerUserTotals
);
assert_eq!(resolved.max_prior_cycles, MaxPriorCycles::Unlimited);
}
#[test]
fn admin_inherits_tier_full_breakdown_unlimited() {
let workspace = make_workspace(Some(policy(
UsageVisibilityGranularity::FullBreakdown,
MaxPriorCycles::Unlimited,
)));
let resolved = workspace.resolve_usage_visibility(true);
assert_eq!(
resolved.granularity,
UsageVisibilityGranularity::FullBreakdown
);
assert_eq!(resolved.max_prior_cycles, MaxPriorCycles::Unlimited);
}