Skip to content

Break New-FinOpsTestData into smaller composable commands #2017

@FallenHoot

Description

@FallenHoot

Summary

Refactor New-FinOpsTestData into smaller, composable commands — one per dataset type — to improve maintainability and allow independent use.

Motivation

New-FinOpsTestData is a large (~2,400+ line) monolithic function that generates all 5 FOCUS datasets. Breaking it into smaller commands would:

  • Make each dataset generator independently testable and usable
  • Reduce complexity per function
  • Allow users to generate only the datasets they need
  • Follow PowerShell best practices for single-responsibility commands

Proposed commands

  • New-FinOpsTestCostData — generates Costs dataset rows
  • New-FinOpsTestPriceData — generates Prices dataset rows
  • New-FinOpsTestCommitmentData — generates CommitmentDiscountUsage dataset rows
  • New-FinOpsTestRecommendationData — generates Recommendations dataset rows
  • New-FinOpsTestTransactionData — generates Transactions dataset rows
  • New-FinOpsTestData — orchestrator that calls the above and handles file output, storage upload, and manifest generation

Considerations

  • Shared helper logic (provider templates, column definitions, FOCUS version filtering) should be extracted into internal/private functions
  • Each sub-command should accept common parameters (-Providers, -FocusVersion, -Months, -Seed, etc.)
  • Maintain backward compatibility — New-FinOpsTestData should continue to work as-is

Context

Deferred from PR #2006 (New-FinOpsTestData and Remove-FinOpsTestData).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions