Files
tasks/chasm/test_library_test.go
Alan WuandGitHub 18b007c44f Add BusinessID search attribute option (#8803)
## What changed?
Add BusinessID search attribute option. CHASM archetype developers that
require Visibility will need to call `WithBusinessIDAlias` as a required
RegistrableComponent option.

Adds validation if BusinessIDAlias option is not set, but contains
Visibility as a child component, registration to the CHASM Registry will
fail.

## Why?
CHASM archetypes define separate aliases for BusinessID, eg.
`ActivityID`, `ScheduleID`, etc. End users of these archetypes will
query Visibility using a filter such as `ActivityID = my-activity-id`,
and should be able to map to the underlying shared `system` visibility
storage column.

## How did you test it?
- [X] built
- [X] run locally and tested manually
- [X] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)
2026-01-05 13:46:33 -05:00

73 lines
2.5 KiB
Go

// TODO: move this to chasm_test package
package chasm
import (
"go.uber.org/mock/gomock"
)
type TestLibrary struct {
UnimplementedLibrary
controller *gomock.Controller
mockSideEffectTaskValidator *MockTaskValidator[any, *TestSideEffectTask]
mockSideEffectTaskExecutor *MockSideEffectTaskExecutor[any, *TestSideEffectTask]
mockOutboundSideEffectTaskValidator *MockTaskValidator[any, TestOutboundSideEffectTask]
mockOutboundSideEffectTaskExecutor *MockSideEffectTaskExecutor[any, TestOutboundSideEffectTask]
mockPureTaskValidator *MockTaskValidator[any, *TestPureTask]
mockPureTaskExecutor *MockPureTaskExecutor[any, *TestPureTask]
}
func newTestLibrary(
controller *gomock.Controller,
) *TestLibrary {
return &TestLibrary{
controller: controller,
mockSideEffectTaskValidator: NewMockTaskValidator[any, *TestSideEffectTask](controller),
mockSideEffectTaskExecutor: NewMockSideEffectTaskExecutor[any, *TestSideEffectTask](controller),
mockOutboundSideEffectTaskValidator: NewMockTaskValidator[any, TestOutboundSideEffectTask](controller),
mockOutboundSideEffectTaskExecutor: NewMockSideEffectTaskExecutor[any, TestOutboundSideEffectTask](controller),
mockPureTaskValidator: NewMockTaskValidator[any, *TestPureTask](controller),
mockPureTaskExecutor: NewMockPureTaskExecutor[any, *TestPureTask](controller),
}
}
func (l *TestLibrary) Name() string {
return testLibraryName
}
func (l *TestLibrary) Components() []*RegistrableComponent {
return []*RegistrableComponent{
NewRegistrableComponent[*TestComponent](
testComponentName,
WithBusinessIDAlias("TestBusinessId"),
WithSearchAttributes(TestComponentStartTimeSearchAttribute),
),
NewRegistrableComponent[*TestSubComponent1](testSubComponent1Name),
NewRegistrableComponent[*TestSubComponent11](testSubComponent11Name),
NewRegistrableComponent[*TestSubComponent2](testSubComponent2Name),
}
}
func (l *TestLibrary) Tasks() []*RegistrableTask {
return []*RegistrableTask{
NewRegistrableSideEffectTask(
testSideEffectTaskName,
l.mockSideEffectTaskValidator,
l.mockSideEffectTaskExecutor,
),
NewRegistrableSideEffectTask(
// NOTE this task is registered as a struct, instead of pointer to struct.
testOutboundSideEffectTaskName,
l.mockOutboundSideEffectTaskValidator,
l.mockOutboundSideEffectTaskExecutor,
),
NewRegistrablePureTask(
testPureTaskName,
l.mockPureTaskValidator,
l.mockPureTaskExecutor,
),
}
}