govuk_navigation_helpers 2.3.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Jenkinsfile +31 -2
- data/lib/govuk_navigation_helpers.rb +10 -0
- data/lib/govuk_navigation_helpers/content_item.rb +20 -7
- data/lib/govuk_navigation_helpers/taxonomy_sidebar.rb +26 -0
- data/lib/govuk_navigation_helpers/version.rb +1 -1
- data/spec/taxonomy_sidebar_spec.rb +66 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 925f41952a73c6f57ba09696d8b3eb9f3cd4f460
|
4
|
+
data.tar.gz: c60be579e0918ac56ab9720e07fc7d9957113d0a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 793282df094eb26e965a5ae97215a2279b7f72bf6afec86cbca844c4fc216231ce7c082800ee3526cbeacd9dd12191697f55ff9aa7b04e1e3d0d699bfc5a97fe
|
7
|
+
data.tar.gz: ba673437955eea0d5ceda36cfe1b53522e278adfa14ca79b9a4228c4d1a89c15d06477befa4ac1f56f6527344edd6081e7ced480d51397a88b249dabf22095de
|
data/CHANGELOG.md
CHANGED
data/Jenkinsfile
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env groovy
|
2
2
|
|
3
|
+
REPOSITORY = 'govuk_navigation_helpers'
|
4
|
+
|
3
5
|
node {
|
4
6
|
def govuk = load '/var/lib/jenkins/groovy_scripts/govuk_jenkinslib.groovy'
|
5
7
|
|
@@ -33,8 +35,35 @@ node {
|
|
33
35
|
|
34
36
|
if(env.BRANCH_NAME == "master") {
|
35
37
|
stage('Publish Gem') {
|
36
|
-
|
37
|
-
|
38
|
+
def version = sh(
|
39
|
+
script: /ruby -e "puts eval(File.read('${REPOSITORY}.gemspec'), TOPLEVEL_BINDING).version.to_s"/,
|
40
|
+
returnStdout: true
|
41
|
+
).trim()
|
42
|
+
|
43
|
+
def taggedReleaseExists = sh(
|
44
|
+
script: "git tag | grep v${version}",
|
45
|
+
returnStatus: true
|
46
|
+
) == 0
|
47
|
+
|
48
|
+
if (taggedReleaseExists) {
|
49
|
+
echo "Version ${version} has already been tagged on Github"
|
50
|
+
} else {
|
51
|
+
echo('Pushing tag')
|
52
|
+
govuk.pushTag(REPOSITORY, env.BRANCH_NAME, 'v' + version)
|
53
|
+
}
|
54
|
+
|
55
|
+
def escapedVersion = version.replaceAll(/\./, /\\\\./)
|
56
|
+
def versionAlreadyPublished = sh(
|
57
|
+
script: /gem list ^${REPOSITORY}\$ --remote --all --quiet | grep [^0-9\\.]${escapedVersion}[^0-9\\.]/,
|
58
|
+
returnStatus: true
|
59
|
+
) == 0
|
60
|
+
|
61
|
+
if (versionAlreadyPublished) {
|
62
|
+
echo "Version ${version} has already been published to rubygems.org"
|
63
|
+
} else {
|
64
|
+
echo('Publishing gem')
|
65
|
+
sh("gem build ${REPOSITORY}.gemspec")
|
66
|
+
sh("gem push '${REPOSITORY}-${version}.gem'")
|
38
67
|
}
|
39
68
|
}
|
40
69
|
}
|
@@ -2,6 +2,7 @@ require "govuk_navigation_helpers/version"
|
|
2
2
|
require "govuk_navigation_helpers/breadcrumbs"
|
3
3
|
require "govuk_navigation_helpers/related_items"
|
4
4
|
require "govuk_navigation_helpers/taxon_breadcrumbs"
|
5
|
+
require "govuk_navigation_helpers/taxonomy_sidebar"
|
5
6
|
|
6
7
|
module GovukNavigationHelpers
|
7
8
|
class NavigationHelper
|
@@ -25,6 +26,15 @@ module GovukNavigationHelpers
|
|
25
26
|
TaxonBreadcrumbs.new(content_item).breadcrumbs
|
26
27
|
end
|
27
28
|
|
29
|
+
# Generate a payload containing taxon sidebar data. Intended for use with
|
30
|
+
# the related items component.
|
31
|
+
#
|
32
|
+
# @return [Hash] Payload for the GOV.UK related items component
|
33
|
+
# @see http://govuk-component-guide.herokuapp.com/components/related_items
|
34
|
+
def taxonomy_sidebar
|
35
|
+
TaxonomySidebar.new(content_item).sidebar
|
36
|
+
end
|
37
|
+
|
28
38
|
# Generate a related items payload
|
29
39
|
#
|
30
40
|
# @return [Hash] Payload for the GOV.UK Component
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module GovukNavigationHelpers
|
2
|
-
# Simple wrapper around a content store representation of a content item.
|
3
|
-
# for both the main content item and the expanded links in the links
|
2
|
+
# Simple wrapper around a content store representation of a content item.
|
3
|
+
# Works for both the main content item and the expanded links in the links
|
4
|
+
# hash.
|
4
5
|
#
|
5
6
|
# @private
|
6
7
|
class ContentItem
|
@@ -17,12 +18,20 @@ module GovukNavigationHelpers
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def parent_taxon
|
20
|
-
# TODO: Determine what to do when there are multiple taxons/parents. For
|
21
|
-
|
22
|
-
|
21
|
+
# TODO: Determine what to do when there are multiple taxons/parents. For
|
22
|
+
# now just display the first of each.
|
23
|
+
parent_taxons.first
|
24
|
+
end
|
25
|
+
|
26
|
+
def parent_taxons
|
27
|
+
# First handle the case for content items tagged to the taxonomy.
|
28
|
+
taxons = Array(content_store_response.dig("links", "taxons"))
|
29
|
+
return taxons.map { |taxon| ContentItem.new(taxon) } if taxons.any?
|
23
30
|
|
24
|
-
|
25
|
-
|
31
|
+
# If that link isn't present, assume we're dealing with a taxon and check
|
32
|
+
# for its parents in the taxonomy.
|
33
|
+
parent_taxons = Array(content_store_response.dig("links", "parent_taxons"))
|
34
|
+
parent_taxons.map { |taxon| ContentItem.new(taxon) }
|
26
35
|
end
|
27
36
|
|
28
37
|
def mainstream_browse_pages
|
@@ -39,6 +48,10 @@ module GovukNavigationHelpers
|
|
39
48
|
content_store_response.fetch("base_path")
|
40
49
|
end
|
41
50
|
|
51
|
+
def description
|
52
|
+
content_store_response.fetch("description", "")
|
53
|
+
end
|
54
|
+
|
42
55
|
def content_id
|
43
56
|
content_store_response.fetch("content_id")
|
44
57
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module GovukNavigationHelpers
|
2
|
+
class TaxonomySidebar
|
3
|
+
def initialize(content_item)
|
4
|
+
@content_item = ContentItem.new content_item
|
5
|
+
end
|
6
|
+
|
7
|
+
def sidebar
|
8
|
+
{
|
9
|
+
sections: taxons.any? ? [{ title: "More about", items: taxons }] : []
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def taxons
|
16
|
+
parent_taxons = @content_item.parent_taxons
|
17
|
+
parent_taxons.map do |parent_taxon|
|
18
|
+
{
|
19
|
+
title: parent_taxon.title,
|
20
|
+
url: parent_taxon.base_path,
|
21
|
+
description: parent_taxon.description,
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe GovukNavigationHelpers::TaxonomySidebar do
|
4
|
+
describe '#sidebar' do
|
5
|
+
it 'can handle any valid content item' do
|
6
|
+
generator = GovukSchemas::RandomExample.for_schema(
|
7
|
+
'placeholder',
|
8
|
+
schema_type: 'frontend'
|
9
|
+
)
|
10
|
+
|
11
|
+
expect { sidebar_for(generator.payload) }.to_not raise_error
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'given a content item not tagged to any taxon' do
|
15
|
+
it 'returns an empty sidebar hash' do
|
16
|
+
content_item = { "links" => {} }
|
17
|
+
|
18
|
+
expect(sidebar_for(content_item)).to eq(
|
19
|
+
sections: []
|
20
|
+
)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'given a content item tagged to taxons' do
|
25
|
+
it 'returns a sidebar hash containing a list of parent taxons' do
|
26
|
+
content_item = content_item_tagged_to_taxon
|
27
|
+
|
28
|
+
expect(sidebar_for(content_item)).to eq(
|
29
|
+
sections: [
|
30
|
+
{
|
31
|
+
title: "More about",
|
32
|
+
items: [
|
33
|
+
{ title: "Taxon 1", url: "/taxon-1", description: "The 1st taxon." },
|
34
|
+
{ title: "Taxon 2", url: "/taxon-2", description: "The 2nd taxon." },
|
35
|
+
],
|
36
|
+
}
|
37
|
+
]
|
38
|
+
)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def sidebar_for(content_item)
|
44
|
+
GovukNavigationHelpers::NavigationHelper.new(content_item).taxonomy_sidebar
|
45
|
+
end
|
46
|
+
|
47
|
+
def content_item_tagged_to_taxon
|
48
|
+
{
|
49
|
+
"title" => "A piece of content",
|
50
|
+
"links" => {
|
51
|
+
"taxons" => [
|
52
|
+
{
|
53
|
+
"title" => "Taxon 1",
|
54
|
+
"base_path" => "/taxon-1",
|
55
|
+
"description" => "The 1st taxon.",
|
56
|
+
},
|
57
|
+
{
|
58
|
+
"title" => "Taxon 2",
|
59
|
+
"base_path" => "/taxon-2",
|
60
|
+
"description" => "The 2nd taxon.",
|
61
|
+
},
|
62
|
+
],
|
63
|
+
},
|
64
|
+
}
|
65
|
+
end
|
66
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_navigation_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GOV.UK Dev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -147,11 +147,13 @@ files:
|
|
147
147
|
- lib/govuk_navigation_helpers/grouped_related_links.rb
|
148
148
|
- lib/govuk_navigation_helpers/related_items.rb
|
149
149
|
- lib/govuk_navigation_helpers/taxon_breadcrumbs.rb
|
150
|
+
- lib/govuk_navigation_helpers/taxonomy_sidebar.rb
|
150
151
|
- lib/govuk_navigation_helpers/version.rb
|
151
152
|
- spec/breadcrumbs_spec.rb
|
152
153
|
- spec/related_items_spec.rb
|
153
154
|
- spec/spec_helper.rb
|
154
155
|
- spec/taxon_breadcrumbs_spec.rb
|
156
|
+
- spec/taxonomy_sidebar_spec.rb
|
155
157
|
homepage: https://github.com/alphagov/govuk_navigation_helpers
|
156
158
|
licenses:
|
157
159
|
- MIT
|
@@ -181,3 +183,4 @@ test_files:
|
|
181
183
|
- spec/related_items_spec.rb
|
182
184
|
- spec/spec_helper.rb
|
183
185
|
- spec/taxon_breadcrumbs_spec.rb
|
186
|
+
- spec/taxonomy_sidebar_spec.rb
|