package org.derekwyatt import org.scalatest.WordSpec import org.scalatest.matchers.MustMatchers import spray.json._ import spray.http.MediaTypes._ import spray.http.{StatusCodes, HttpBody} import spray.httpx.SprayJsonSupport import spray.testkit.ScalatestRouteTest import Types._ class ServerSpec extends WordSpec with MustMatchers with ScalatestRouteTest { import Types.TypesProtocol._ import Types._ trait TwoStore extends Store { @volatile var map = Map("one" -> StoredObject("one"), "two" -> StoredObject("two")) println("TwoStore Called") def get(userId: UserId): Option[Map[String, StoredObject]] = Some(map) def put(userId: UserId, obj: StoredObject): Boolean = if (map contains obj.something) { false } else { map += (obj.something -> obj) true } def delete(userId: UserId): Boolean = ??? object store extends TwoStore } class TwoServerInstance extends Server with TwoStore { def actorRefFactory = system } val postObject = StoredObject("postObject") "Server" should { //{1 "allow posting to the objects" in new TwoServerInstance { //{2 Post("/objects/user1234", HttpBody(`application/json`, postObject.toJson.compactPrint)) ~> apiRoute ~> check { status must be (StatusCodes.Created) map("postObject") must be (postObject) } } //}2 } //}1 }