/scalate-core/src/test/scala/org/fusesource/scalate/InjectAttributeTest.scala

http://github.com/scalate/scalate · Scala · 60 lines · 30 code · 10 blank · 20 comment · 3 complexity · 2032da23dea29b6a4d92fab0fa67d9f5 MD5 · raw file

  1. /**
  2. * Copyright (C) 2009-2011 the original author or authors.
  3. * See the notice.md file distributed with this work for additional
  4. * information regarding copyright ownership.
  5. *
  6. * Licensed under the Apache License, Version 2.0 (the "License");
  7. * you may not use this file except in compliance with the License.
  8. * You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. package org.fusesource.scalate
  19. import java.io.File
  20. import org.scalatest.ConfigMap
  21. import scala.collection.immutable.Map
  22. class InjectAttributeTest extends TemplateTestSupport {
  23. test("Using render context directly") {
  24. val helper = context.inject[SomeHelper]
  25. assert(helper != null)
  26. log.info("got helper! " + helper)
  27. }
  28. // in the following test, the compiler does not pass in the
  29. // attributes type from the left hand side, which is quite surprising at first
  30. // I guess type inferencing only goes from right to left; not left to right
  31. val compilerInfersTypeParamsFromTypeOfLHS = false
  32. if (compilerInfersTypeParamsFromTypeOfLHS) {
  33. test("Using render context directly without explicit type param") {
  34. val helper: SomeHelper = context.inject
  35. assert(helper != null)
  36. log.info("got helper! " + helper)
  37. }
  38. }
  39. test("template using injection") {
  40. assertUriOutputContains("/org/fusesource/scalate/ioc.ssp", Map("name" -> "James"), "Hello James!")
  41. }
  42. def context = new DefaultRenderContext("dummy.ssp", engine)
  43. override protected def beforeAll(configMap: ConfigMap) = {
  44. super.beforeAll(configMap)
  45. engine.sourceDirectories = List(new File(baseDir, "src/test/resources"))
  46. }
  47. }
  48. class SomeHelper(context: RenderContext) {
  49. def greeting = "Hello " + context.attributeOrElse("name", "Unknown") + "!"
  50. }