| package testutils |
|
|
| import ( |
| "context" |
|
|
| "github.com/openmeterio/openmeter/openmeter/billing" |
| ) |
|
|
| var _ billing.LineEngine = NoopLineEngine{} |
|
|
| |
| |
| type NoopLineEngine struct { |
| EngineType billing.LineEngineType |
| } |
|
|
| func (e NoopLineEngine) GetLineEngineType() billing.LineEngineType { |
| if e.EngineType == "" { |
| panic("engine type is required") |
| } |
|
|
| return e.EngineType |
| } |
|
|
| func (NoopLineEngine) IsLineBillableAsOf(context.Context, billing.IsLineBillableAsOfInput) (bool, error) { |
| return true, nil |
| } |
|
|
| func (NoopLineEngine) SplitGatheringLine(_ context.Context, input billing.SplitGatheringLineInput) (billing.SplitGatheringLineResult, error) { |
| return billing.SplitGatheringLineResult{ |
| PreSplitAtLine: input.Line, |
| }, nil |
| } |
|
|
| func (NoopLineEngine) BuildStandardInvoiceLines(_ context.Context, input billing.BuildStandardInvoiceLinesInput) (billing.StandardLines, error) { |
| return input.GatheringLines.ToStandardLines(input.Invoice.ID) |
| } |
|
|
| func (NoopLineEngine) BuildStandardLinesForGatheringPreview(_ context.Context, input billing.BuildStandardInvoiceLinesInput) (billing.StandardLines, error) { |
| return input.GatheringLines.ToStandardLines(input.Invoice.ID) |
| } |
|
|
| func (NoopLineEngine) OnStandardInvoiceCreated(_ context.Context, input billing.OnStandardInvoiceCreatedInput) (billing.StandardLines, error) { |
| return input.Lines, nil |
| } |
|
|
| func (NoopLineEngine) OnCollectionCompleted(_ context.Context, input billing.OnCollectionCompletedInput) (billing.StandardLines, error) { |
| return input.Lines, nil |
| } |
|
|
| func (NoopLineEngine) ValidateMutableInvoiceLineEditViaAPI(_ context.Context, input billing.OnMutableInvoiceUpdateInput) error { |
| return input.Validate() |
| } |
|
|
| func (NoopLineEngine) OnMutableInvoiceLinesEditedViaAPI(_ context.Context, input billing.OnMutableInvoiceUpdateInput) (billing.OnMutableInvoiceUpdateResult, error) { |
| updatedLines := make([]billing.GenericInvoiceLine, 0, len(input.Updated)) |
| for _, override := range input.Updated { |
| line, err := override.ChangesToApply.Apply(override.ExistingLine) |
| if err != nil { |
| return billing.OnMutableInvoiceUpdateResult{}, err |
| } |
|
|
| updatedLines = append(updatedLines, line) |
| } |
|
|
| return billing.OnMutableInvoiceUpdateResult{ |
| CreatedLines: input.Created, |
| UpdatedLines: updatedLines, |
| }, nil |
| } |
|
|
| func (NoopLineEngine) OnMutableStandardLinesDeletedBySystem(context.Context, billing.OnMutableStandardLinesDeletedInput) error { |
| return nil |
| } |
|
|
| func (NoopLineEngine) OnUnsupportedCreditNote(context.Context, billing.OnUnsupportedCreditNoteInput) error { |
| return nil |
| } |
|
|
| func (NoopLineEngine) OnInvoiceIssued(context.Context, billing.OnInvoiceIssuedInput) error { |
| return nil |
| } |
|
|
| func (NoopLineEngine) OnPaymentAuthorized(context.Context, billing.OnPaymentAuthorizedInput) error { |
| return nil |
| } |
|
|
| func (NoopLineEngine) OnPaymentSettled(context.Context, billing.OnPaymentSettledInput) error { |
| return nil |
| } |
|
|