/
FormationSpec.scala
43 lines (33 loc) · 1.8 KB
/
FormationSpec.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.heroku.platform.api
abstract class FormationSpec(aj: ApiRequestJson with ApiResponseJson) extends ApiSpec(aj) {
val implicits: FormationRequestJson with FormationResponseJson with SlugRequestJson with SlugResponseJson with ReleaseRequestJson with ReleaseResponseJson with ErrorResponseJson = aj
import implicits._
"Api for Formations" must {
"operate on Formations" in {
import primary._
val app = getApp
val formations = requestAll(Formation.List(app.name))
formations.size must equal(0)
val slug = request(Slug.Create(app.id, None, Map("clock" -> "bin/clock", "echo" -> "bin/echo")))
val putUrl = slug.blob.url
val curlProc = scala.sys.process.Process(s"""curl -X PUT -H Content-Type: --data-binary @api/src/test/resources/test-slug/test-slug.tgz $putUrl""")
(curlProc !) must equal(0)
val releasedSlug = request(Release.Create(app.id, Some("test slug release"), slug.id))
val updatedReleases = requestAll(Release.List(app.id))
updatedReleases.last must equal(releasedSlug)
val clock = request(Formation.Update(app.id, "clock", Some(1)))
clock.`type` must equal("clock")
clock.command must equal("bin/clock")
val echo = request(Formation.Update(app.id, "echo", Some(1)))
echo.`type` must equal("echo")
echo.command must equal("bin/echo")
val formationsUpdated = requestAll(Formation.List(app.name))
formationsUpdated.size must equal(2)
formationsUpdated.map(_.id) must contain(clock.id)
formationsUpdated.map(_.id) must contain(echo.id)
import Formation.models.FormationUpdate
val batched = request(Formation.BatchUpdate(app.id, List(FormationUpdate("clock", quantity = Some(0)), FormationUpdate("echo", quantity = Some(0)))))
batched.size must be(2)
}
}
}