package com.monsanto.arch.cloudformation.model.resource

import com.monsanto.arch.cloudformation.model.{ ResourceRef, Template, Token }
import org.scalatest.{ FunSpec, Matchers }
import spray.json._

class CodeCommit_UT extends FunSpec with Matchers {
  val repo = `AWS::CodeCommit::Repository`(
    name = "RepoFoo",
    RepositoryDescription = Some(""),
    RepositoryName = "RepoBar",
    Triggers = Some(Seq(
      CodeCommitTrigger(
        Branches = Some(Seq("foo")),
        CustomData = Some("bar"),
        DestinationArn = Some("arn::::baz"),
        Events = Some(Seq(
          CodeCommitEvent.updateReference,
          CodeCommitEvent.deleteReference
        )),
        Name = "BarTrigger"
      )
    ))
  )

  describe("UsagePlan"){
    it ("should serialize as expected") {
      val expectedJson =
        """
          |{
          |  "Resources": {
          |    "RepoFoo": {
          |      "Properties": {
          |        "RepositoryDescription": "",
          |        "RepositoryName": "RepoBar",
          |        "Triggers": [
          |          {
          |            "Branches": [
          |              "foo"
          |            ],
          |            "CustomData": "bar",
          |            "DestinationArn": "arn::::baz",
          |            "Events": [
          |              "updateReference",
          |              "deleteReference"
          |            ],
          |            "Name": "BarTrigger"
          |          }
          |        ]
          |      },
          |      "Type": "AWS::CodeCommit::Repository"
          |    }
          |  }
          |}
        """.stripMargin.parseJson
      Template.fromResource(repo).toJson should be (expectedJson)
    }
  }
}