first pass of merging in warp (doesn't build)

This commit is contained in:
Ryan Ward
2026-07-01 16:08:58 -05:00
parent 2f64909469
commit 4770ac06b5
3662 changed files with 414574 additions and 89772 deletions
+102
View File
@@ -0,0 +1,102 @@
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);
}