Skip to content

Instantly share code, notes, and snippets.

@rjenkins
Created July 2, 2012 22:23
Show Gist options
  • Save rjenkins/3036118 to your computer and use it in GitHub Desktop.
Save rjenkins/3036118 to your computer and use it in GitHub Desktop.
AbstractRiakEntityDAOSpec.scala
case class Guitar(id: String, make: String, model: String, year: Int) {}
class GuitarDAO(storageDriver: RiakStorageDriver[String, Guitar])
extends AbstractRiakEntityDAO[String, Guitar](storageDriver) with Converter[Guitar] {
def fromDomain(guitar: Guitar, vClock: VClock): IRiakObject = {
val dataAsString = generate(guitar)
RiakObjectBuilder.newBuilder("guitars", guitar.id).withVClock(vClock)
.withContentType(Constants.CTYPE_JSON)
.withValue(dataAsString).addIndex("make", guitar.make).build()
}
def toDomain(riakObject: IRiakObject) = {
val data = riakObject.getValueAsString
parse[Guitar](data)
}
}
class AbstractRiakEntityDAOSpec extends Spec with Logging {
val riakClient: IRiakClient = RiakFactory.pbcClient("localhost", 8087)
val guitarDao = new GuitarDAO(new RiakDriver[Guitar]("guitars",
riakClient))
class `abstractRiakEntityDAOSpecTest` {
@Test def `can persist entity`() {
val jazzMaster = new Guitar("1", "fender", "JazzMaster", 1963)
guitarDao.persist(jazzMaster.id, jazzMaster)
}
@Test def `can retrieve by key`() {
val jazzMaster = new Guitar("1", "fender", "JazzMaster", 1963)
guitarDao.persist(jazzMaster.id, jazzMaster)
guitarDao.getByKey("1").get must be(jazzMaster)
}
@Test def `can delete by key`() {
val jazzMaster = new Guitar("1", "fender", "JazzMaster", 1963)
guitarDao.persist(jazzMaster.id, jazzMaster)
guitarDao.deleteByKey("1")
guitarDao.getByKey(jazzMaster.id) must be(None)
}
@Test def `can find for 2iString`() {
val jazzMaster = new Guitar("1", "fender", "JazzMaster", 1963)
guitarDao.persist(jazzMaster.id, jazzMaster)
guitarDao.findFor2i("make", "fender").size must be(1)
}
@Test def `can delete for 2iString`() {
val jazzMaster = new Guitar("1", "fender", "JazzMaster", 1963)
val gibson = new Guitar("2", "gibson", "LesPaul", 1963)
guitarDao.persist(jazzMaster.id, jazzMaster)
guitarDao.persist(gibson.id, gibson)
guitarDao.deleteFor2i("make", "fender")
guitarDao.findFor2i("make", "fender").size must be(0)
guitarDao.findFor2i("make", "gibson").size must be(1)
guitarDao.deleteFor2i("make", "gibson")
guitarDao.findFor2i("make", "gibson").size must be(0)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment