Skip to content

D3: Inject collaborators in service objects (DI) #12

@bstruong

Description

@bstruong

SABER convention: constructors take collaborators as keyword args with sensible defaults — enables stub-injection in specs.

CASTER currently instantiates collaborators inline (`ListingNormalizer.new(...)` and `CSV.read(...)` inside service bodies).

Sketch:
```ruby
def initialize(raw_listing, normalizer: ListingNormalizer)
@raw_listing = raw_listing
@Normalizer = normalizer
end
```

Pairs naturally with D2 (FactoryBot/Shoulda) since DI makes specs cheaper to write.

Metadata

Metadata

Assignees

No one assigned

    Labels

    parityConvention parity with sibling project SABER

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions