using ColaFlow.Modules.ProjectManagement.Domain.Aggregates.ProjectAggregate;
using ColaFlow.Modules.ProjectManagement.Domain.ValueObjects;
namespace ColaFlow.Domain.Tests.Builders;
///
/// Test Data Builder for creating test entities with default values.
/// Simplifies test setup by providing consistent test data.
///
public static class TestDataBuilder
{
///
/// Creates a test TenantId with a random GUID.
///
public static TenantId CreateTestTenantId()
=> TenantId.From(Guid.NewGuid());
///
/// Creates a test ProjectId with a random GUID.
///
public static ProjectId CreateTestProjectId()
=> ProjectId.From(Guid.NewGuid());
///
/// Creates a test UserId with a random GUID.
///
public static UserId CreateTestUserId()
=> UserId.From(Guid.NewGuid());
///
/// Creates a test EpicId with a random GUID.
///
public static EpicId CreateTestEpicId()
=> EpicId.Create();
///
/// Creates a test StoryId with a random GUID.
///
public static StoryId CreateTestStoryId()
=> StoryId.Create();
///
/// Creates a test Epic with default or provided values.
///
public static Epic CreateTestEpic(
TenantId? tenantId = null,
string name = "Test Epic",
string description = "Test Epic Description",
ProjectId? projectId = null,
UserId? createdBy = null)
{
return Epic.Create(
tenantId ?? CreateTestTenantId(),
name,
description,
projectId ?? CreateTestProjectId(),
createdBy ?? CreateTestUserId());
}
///
/// Creates a test Story with default or provided values.
///
public static Story CreateTestStory(
TenantId? tenantId = null,
string title = "Test Story",
string description = "Test Story Description",
EpicId? epicId = null,
TaskPriority? priority = null,
UserId? createdBy = null)
{
return Story.Create(
tenantId ?? CreateTestTenantId(),
title,
description,
epicId ?? CreateTestEpicId(),
priority ?? TaskPriority.Medium,
createdBy ?? CreateTestUserId());
}
///
/// Creates a test WorkTask with default or provided values.
///
public static WorkTask CreateTestTask(
TenantId? tenantId = null,
string title = "Test Task",
string description = "Test Task Description",
StoryId? storyId = null,
TaskPriority? priority = null,
UserId? createdBy = null)
{
return WorkTask.Create(
tenantId ?? CreateTestTenantId(),
title,
description,
storyId ?? CreateTestStoryId(),
priority ?? TaskPriority.Medium,
createdBy ?? CreateTestUserId());
}
}