services_yaml dev overlay

GEBWEB_ENV=dev binds FeedClient -> StubFeedClient and

Path
gebweb/examples/services_yaml/tests/dev_overlay_test.gb
Category
Services Yaml

resolves /feed to the stub items.

Source

import test;
import sys;
import gebweb;
import controllers;
import consumer;

class DevOverlayTest extends test.Test {
    @test
    func devOverlayBindsStubFeedClient(): void {
        sys.setenv("GEBWEB_ENV", "dev");
        let app = gebweb.app([controllers.FeedController]);
        let bindings = gebweb.interfaceBindings(app);
        this.assertEquals("StubFeedClient", bindings["FeedClient"]);
        consumer.FeedConsumer svc = gebweb.service(app, "app.feed") as consumer.FeedConsumer;
        let headlines = svc.headlines();
        this.assertEquals(3, headlines.length());
        this.assertTrue((headlines[0] as string).startsWith("stub:"));
        sys.setenv("GEBWEB_ENV", "");
    }

    @test
    func feedEndpointReturnsStubItems(): void {
        sys.setenv("GEBWEB_ENV", "dev");
        let app = gebweb.app([controllers.FeedController]);
        let client = gebweb.TestClient(app);
        let r = client.get("/feed");
        r.assertStatus(200);
        let items = r.json()["items"] as list<any>;
        this.assertEquals(3, items.length());
        sys.setenv("GEBWEB_ENV", "");
    }
}