diff --git a/src/main/scala/Handler.scala b/src/main/scala/Handler.scala index fbdad9f..c17b1d3 100644 --- a/src/main/scala/Handler.scala +++ b/src/main/scala/Handler.scala @@ -19,9 +19,9 @@ class Handler APIGatewayProxyResponseEvent ] with Logging with QueryJson { - implicit val ec: scala.concurrent.ExecutionContext = + private implicit val ec: scala.concurrent.ExecutionContext = scala.concurrent.ExecutionContext.global - val cql = new Cql() + private val cql = new Cql() def handleRequest( event: APIGatewayProxyRequestEvent, diff --git a/src/test/scala/HandlerTest.scala b/src/test/scala/HandlerTest.scala new file mode 100644 index 0000000..765e494 --- /dev/null +++ b/src/test/scala/HandlerTest.scala @@ -0,0 +1,27 @@ +package cql + +import org.scalatest.matchers._ +import org.scalatest.funspec.AnyFunSpec +import cql.lang.BaseTest +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent + +class HandlerTest extends AnyFunSpec with should.Matchers { + val handler = new Handler() + + def assertIO(input: String, status: Int, output: String) = + val request = new APIGatewayProxyRequestEvent().withBody(input) + + val response = handler.handleRequest(request, null) + + response.getBody.contains(output) shouldBe true + + describe("a program") { + it("should give a 200 for a valid query") { + assertIO("+section:commentisfree", 200, "section=commentisfree") + } + + it("should give a 400 for an invalid query") { + assertIO("this AND", 200, "There must be a query following 'AND', e.g. this AND that.") + } + } +} diff --git a/src/test/scala/lang/ScannerTest.scala b/src/test/scala/lang/ScannerTest.scala index e0e8b33..283e2db 100644 --- a/src/test/scala/lang/ScannerTest.scala +++ b/src/test/scala/lang/ScannerTest.scala @@ -92,13 +92,13 @@ class ScannerTest extends BaseTest { assert(tokens === expectedTokens) } - it("should yield a colon token when a query meta value is incomplete") { + it("should yield a query field value token when a query meta value is incomplete") { val scanner = new Scanner("""example +tag:""") val tokens = scanner.scanTokens val expectedTokens = List( unquotedStringToken("example"), Token(TokenType.QUERY_FIELD_KEY, "+tag", Some("tag"), 8, 11), - Token(TokenType.COLON, ":", None, 12, 12), + Token(TokenType.QUERY_VALUE, ":", None, 12, 12), eofToken(13) ) assert(tokens === expectedTokens)