Skip to content

Commit

Permalink
Merge pull request #14 from hmrc/PLATUI-380
Browse files Browse the repository at this point in the history
PlatUI-380: Improve integration test coverage by adding specific test cases to complement generative ones
  • Loading branch information
omair-ali committed Feb 26, 2020
2 parents 0900fae + 1c55691 commit c22edce
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 3 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ $hmrc-assets-path: "/app-name-here/assets/lib/hmrc-frontend/hmrc/assets/";
bodyEndBlock = Some(scripts()))(contentBlock)
```

A reference implementation can be found in [play-mtp-twirl-frontend](https://github.com/hmrc/play-mtp-twirl-frontend)

### Using hmrc-frontend Components in Twirl

To use the [hmrc-frontend](https://github.com/hmrc/hmrc-frontend/) `Twirl` [components](https://github.com/hmrc/play-frontend-hmrc/blob/master/src/main/play-26/uk/gov/hmrc/hmrcfrontend/views/html/components/package.scala)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,46 @@
package uk.gov.hmrc.hmrcfrontend.views.components

import play.twirl.api.HtmlFormat
import uk.gov.hmrc.hmrcfrontend.support.ScalaCheckUtils.ClassifyParams
import uk.gov.hmrc.hmrcfrontend.support.TemplateIntegrationSpec
import uk.gov.hmrc.hmrcfrontend.views.html.components._
// We use the below instead of a true arbitrary as the `hmrc-frontend` Nunjucks
// model of Header is less flexible and specifically requests the href for `cy`
// and `en` to be defined.
import uk.gov.hmrc.hmrcfrontend.views.viewmodels.header.Generators._
import uk.gov.hmrc.hmrcfrontend.views.viewmodels.header.Header
import uk.gov.hmrc.hmrcfrontend.views.viewmodels.language.En

import scala.util.Try

object hmrcHeaderIntegrationSpec
extends TemplateIntegrationSpec[Header](hmrcComponentName = "hmrcHeader", seed = None) {
extends TemplateIntegrationSpec[Header](hmrcComponentName = "hmrcHeader", seed = None) {

override def render(header: Header): Try[HtmlFormat.Appendable] =
Try(HmrcHeader(header))

override def classifiers(header: Header): Stream[ClassifyParams] =
(header.homepageUrl.isEmpty, "empty homepageUrl", "non-empty homepageUrl") #::
(header.homepageUrl.length > 10, "long homepageUrl", "short homepageUrl") #::
(header.assetsPath.isEmpty, "empty assetsPath", "non-empty assetsPath") #::
(header.assetsPath.length > 10, "long assetsPath", "short assetsPath") #::
(header.productName.isEmpty, "empty productName", "non-empty productName") #::
(header.productName.exists(_.length > 10), "long productName", "short productName") #::
(header.serviceName.isEmpty, "empty serviceName", "non-empty serviceName") #::
(header.serviceName.exists(_.length > 10), "long serviceName", "short serviceName") #::
(header.serviceUrl.isEmpty, "empty serviceUrl", "non-empty serviceUrl") #::
(header.serviceUrl.length > 10, "long serviceUrl", "short serviceUrl") #::
(header.navigation.isEmpty, "empty navigation list", "non-empty navigation list") #::
(header.navigation.exists(_.length > 10), "long navigation list", "short navigation list") #::
(header.navigationClasses.isEmpty, "empty navigationClasses", "non-empty navigationClasses") #::
(header.navigationClasses.length > 10, "long navigationClasses", "short navigationClasses") #::
(header.classes.isEmpty, "empty classes", "non-empty classes") #::
(header.classes.length > 10, "long classes", "short classes") #::
(header.attributes.isEmpty, "empty attributes", "non-empty attributes") #::
(header.attributes.values.exists(_.isEmpty), "empty attributes values", "non-empty attributes values") #::
(header.language == En, "language English", "language Cymraeg") #::
(header.displayHmrcBanner, "displayHmrcBanner true", "displayHmrcBanner false") #::
(header.signOutHref.isEmpty, "empty signOutHref", "non-empty signOutHref") #::
(header.signOutHref.exists(_.length > 10), "long signOutHref", "short signOutHref") #::
Stream.empty[ClassifyParams]
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ object Generators {

val genAttrVal: Gen[(String, String)] = for {
attr <- genNonEmptyAlphaStr
value <- genNonEmptyAlphaStr
value <- Gen.alphaStr
} yield (attr, value)

def genAttributes(nAttributes: Int = 5) =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ object Generators {
productName <- Gen.option(genAlphaStr())
serviceName <- Gen.option(genAlphaStr())
serviceUrl <- genAlphaStr()
navigation <- Gen.option(genNavigationItems())
navigation <- Gen.option(genNavigationItems(20))
navigationClasses <- genAlphaStr()
containerClasses <- genAlphaStr()
classes <- genAlphaStr()
Expand Down

0 comments on commit c22edce

Please sign in to comment.