seagull-js / seagull

the core of the seagull framework
https://seagull-js.github.io/seagull/
GNU Lesser General Public License v3.0
10 stars 5 forks source link

Route injectable #89

Closed cpa-gecko closed 5 years ago

cpa-gecko commented 5 years ago

Vorschlag für (injectable-)testbare Routen

Notiz: Schöner wäre zweifellos eine constructor-injection, ein Umbau der Handler-Funktion bzw. Route auf eine instanzierbare Klasse würde aber einen deutlich größeren Aufwand nach sich ziehen. (wie bespr. mit @Harper04 @ksandkuhl )

cpa-gecko commented 5 years ago

Kurzbeschreibung: Der Aufruf einer Route erzeugt einen neuen RouteContext und ruft damit die in Unicorn definierte handler-Funktion auf. Innerhalb dieser ist es nun via this.injector möglich, Bindings zu definieren und Instanzen zu erzeugen (siehe bspw. _unicorn/src/routes/cron/import_exchangerate.ts). Alles Seagull-Dependencies werden bereits in der Routen-Initialisierung automatisch gebunden (mode.environment-Logik) Das Binding kann innerhalb eines RouteTest über die Route angepasst werden (siehe bspw. _unicorn/test/routes/cron/import_exchangerates.ts)

cpa-gecko commented 5 years ago

Note: Currently RouteTest is not running in pure mode correctly, fix wip

Aduril commented 5 years ago

Helloworld example was provided, please resolve the other issues and I am happy 👍