package org.jooby;

import org.jooby.test.ServerFeature;
import org.junit.Test;

import com.google.inject.Key;
import com.google.inject.name.Names;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigValueFactory;

public class EnvCallbackWithTwoEnvsFeature extends ServerFeature {

  {
    use(ConfigFactory.empty().withValue("application.env", ConfigValueFactory.fromAnyRef("stage")));

    Key<String> key = Key.get(String.class, Names.named(("envcallback")));
    on(env -> env.equals("dev") || env.equals("stage"), () -> {
      use((env, conf, binder) -> {
        binder.bind(key).toInstance(env.name());
      });
    });

    get("/", req -> req.require(key));
  }

  @Test
  public void devCallback() throws Exception {
    request().get("/").expect("stage");
  }
}
