Skip to content

payment: test fixtures hardcode real gateway names (govpay/lankapay) instead of generic placeholders #122

Description

@sthanikan2000

Problem

core/payment's own unit tests hardcode a real downstream consumer's gateway name — \"govpay\" — as the fixture gatewayID throughout payment/service_test.go (~25 occurrences) and payment/handler_test.go (4 occurrences), and \"lankapay\" in a couple of places in payment/registry_test.go. Predates #118 (confirmed via git show against a commit before that PR's branch point), though #118 added a few more occurrences following the existing convention.

core/payment is a generic, gateway-agnostic SDK — its own README describes it as "designed to be imported and integrated into other repositories," with GovPay+/LankaPay named only as examples of gateways a consumer might wire up, not anything baked into the framework itself. Hardcoding a specific real downstream integration's name into the framework's own generic unit tests:

  • Couples tests that are actually exercising generic PaymentGateway/PaymentService/HTTPHandler mechanics to an integration that doesn't even live in this repo (GovPay+ lives in nsw-srilanka).
  • Reads as if there's GovPay+-specific behavior being tested here, when there isn't — the tests would behave identically with any gateway ID.
  • Is already inconsistent within the package: registry_test.go uses clearly-generic placeholder IDs (gw1, method1, method2) in most of its tests, but real names (lankapay) in a couple of others.

Proposed Solution

Standardize on the generic-placeholder convention registry_test.go already partially establishes (e.g. gw1) across service_test.go and handler_test.go, replacing the govpay/lankapay fixture IDs. Mechanical rename, no behavior change — tests pass identically regardless of the string used as the gateway ID.

Scope note

Deliberately not bundled into #118 (which is otherwise unrelated in scope) — flagged there during review and split out as its own follow-up per that PR's discussion.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions