/*
 * sbt
 * Copyright 2011 - 2018, Lightbend, Inc.
 * Copyright 2008 - 2010, Mark Harrah
 * Licensed under Apache License 2.0 (see LICENSE)
 */

package testpkg

import scala.concurrent.duration._

// starts svr using server-test/completions and perform sbt/completion tests
object ServerCompletionsTest extends AbstractServerTest {
  override val testDirectory: String = "completions"

  test("return basic completions on request") { _ =>
    val completionStr = """{ "query": "" }"""
    svr.sendJsonRpc(
      s"""{ "jsonrpc": "2.0", "id": 15, "method": "sbt/completion", "params": $completionStr }"""
    )
    assert(svr.waitForString(10.seconds) { s =>
      println(s)
      s contains """"result":{"items":["""
    })
  }

  test("return completion for custom tasks") { _ =>
    val completionStr = """{ "query": "hell" }"""
    svr.sendJsonRpc(
      s"""{ "jsonrpc": "2.0", "id": 16, "method": "sbt/completion", "params": $completionStr }"""
    )
    assert(svr.waitForString(10.seconds) { s =>
      s contains """"result":{"items":["hello"]"""
    })
  }

  test("return completions for user classes") { _ =>
    val completionStr = """{ "query": "testOnly org." }"""
    svr.sendJsonRpc(
      s"""{ "jsonrpc": "2.0", "id": 17, "method": "sbt/completion", "params": $completionStr }"""
    )
    assert(svr.waitForString(10.seconds) { s =>
      s contains """"result":{"items":["testOnly org.sbt.ExampleSpec"]"""
    })
  }
}
