diff --git a/README.md b/README.md index f93f09746..adeef48f8 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ At time of writing, it also serves the priority campaign pages. See the [Campaig - Organisation page: [gov.uk/government/organisations/cabinet-office](https://www.gov.uk/government/organisations/cabinet-office) - Step by step page: [gov.uk/learn-to-drive-a-car](https://www.gov.uk/learn-to-drive-a-car) - Past Prime Minister: [gov.uk/government/history/past-prime-ministers/tony-blair](https://www.gov.uk/government/history/past-prime-ministers/tony-blair) +- World index page: [gov.uk/world](https://www.gov.uk/world) ## Nomenclature diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js index c2782267f..90e55515f 100644 --- a/app/assets/config/manifest.js +++ b/app/assets/config/manifest.js @@ -15,3 +15,4 @@ //= link views/_taxons.css //= link views/_topical_events.css //= link views/_topics.css +//= link views/_world_index.css diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 908965cab..7680401f0 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -9,6 +9,6 @@ //= require govuk_publishing_components/components/step-by-step-nav //= require support -//= require modules/organisation-list-filter +//= require modules/list-filter //= require modules/toggle-attribute //= require modules/coronavirus-landing-page diff --git a/app/assets/javascripts/modules/list-filter.js b/app/assets/javascripts/modules/list-filter.js new file mode 100644 index 000000000..9eebf6bf3 --- /dev/null +++ b/app/assets/javascripts/modules/list-filter.js @@ -0,0 +1,121 @@ +/* eslint-disable no-var */ +//= require govuk_publishing_components/vendor/polyfills/closest + +window.GOVUK = window.GOVUK || {} +window.GOVUK.Modules = window.GOVUK.Modules || {}; + +(function (Modules) { + function ListFilter ($module) { + this.$module = $module + this.filterTimeout = null + this.form = this.$module.querySelector('[data-filter="form"]') + this.searchResults = this.$module.querySelector('#search_results') + } + + ListFilter.prototype.init = function () { + this.$module.filterList = this.filterList.bind(this) + // Form should only appear if the JS is working + this.form.classList.add('filter-list__form--active') + this.results = document.createElement('div') + this.results.classList.add('filter-list__results', 'govuk-heading-m', 'js-search-results') + this.results.setAttribute('aria-live', 'polite') + this.results.innerHTML = this.countInitialItems() + ' results found' + this.searchResults.insertBefore(this.results, this.searchResults.firstChild) + + // We don't want the form to submit/refresh the page on enter key + this.form.onsubmit = function () { return false } + + this.form.addEventListener('keyup', function (e) { + var searchTerm = e.target.value + clearTimeout(this.filterTimeout) + this.filterTimeout = setTimeout(function () { + this.$module.filterList(searchTerm) + }.bind(this), 200) + }.bind(this)) + } + + ListFilter.prototype.filterList = function (searchTerm) { + var itemsToFilter = this.$module.querySelectorAll('[data-filter="item"]') + var blocksToFilter = this.$module.querySelectorAll('[data-filter="block"]') + for (var i = 0; i <= itemsToFilter.length - 1; i++) { + var currentItem = itemsToFilter[i] + if (!this.matchSearchTerm(currentItem, searchTerm)) { + currentItem.classList.add('js-hidden') + } + } + this.updateItemCount(blocksToFilter) + } + + ListFilter.prototype.matchSearchTerm = function (item, term) { + var normaliseWhitespace = function (string) { + return string + .trim() // Removes spaces at beginning and end of string. + .replace(/\r?\n|\r/g, ' ') // Replaces line breaks with one space. + .replace(/\s+/g, ' ') // Squashes multiple spaces to one space. + } + + var searchTerms = item.getAttribute('data-filter-terms') || '' + var normalisedTerms = normaliseWhitespace(searchTerms) + + item.classList.remove('js-hidden') + + var searchTermRegexp = new RegExp(term.trim().replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i') + return searchTermRegexp.exec(normalisedTerms) !== null + } + + ListFilter.prototype.countInitialItems = function () { + return this.$module.querySelectorAll('[data-filter="item"]').length + } + + ListFilter.prototype.updateItemCount = function (blocksToFilter) { + var totalMatchingItems = 0 + + for (var i = 0; i < blocksToFilter.length; i++) { + var block = blocksToFilter[i].closest('[data-filter="block"]') + block.classList.remove('js-hidden') + + var matchingItems = block.querySelectorAll('[data-filter="item"]') + var matchingItemCount = 0 + + var innerBlocks = block.querySelectorAll('[data-filter="inner-block"]') + for (var r = 0; r < innerBlocks.length; r++) { + innerBlocks[r].classList.add('js-hidden') + } + + for (var j = 0; j < matchingItems.length; j++) { + if (!matchingItems[j].classList.contains('js-hidden')) { + matchingItemCount++ + + if (matchingItems[j].closest('[data-filter="inner-block"]') !== null) { matchingItems[j].closest('[data-filter="inner-block"]').classList.remove('js-hidden') } + } + } + + var itemCount = block.querySelectorAll('[data-item-count="true"]') + var accessibleItemCount = block.querySelectorAll('.js-accessible-item-count') + + if (matchingItemCount === 0) { + block.classList.toggle('js-hidden') + } + + if (matchingItemCount > 0) { + for (var l = 0; l < itemCount.length; l++) { + itemCount[l].textContent = matchingItemCount + } + + for (var k = 0; k < accessibleItemCount.length; k++) { + accessibleItemCount[k].textContent = matchingItemCount + } + } + + totalMatchingItems += matchingItemCount + } + + var text = ' results found' + if (totalMatchingItems === 1) { + text = ' result found' + } + this.results.innerHTML = totalMatchingItems + text + } + + Modules.ListFilter = ListFilter +})(window.GOVUK.Modules) diff --git a/app/assets/javascripts/modules/organisation-list-filter.js b/app/assets/javascripts/modules/organisation-list-filter.js deleted file mode 100644 index f9de75e00..000000000 --- a/app/assets/javascripts/modules/organisation-list-filter.js +++ /dev/null @@ -1,129 +0,0 @@ -/* eslint-disable no-var */ -//= require govuk_publishing_components/vendor/polyfills/closest - -window.GOVUK = window.GOVUK || {} -window.GOVUK.Modules = window.GOVUK.Modules || {}; - -(function (Modules) { - function FilterOrganisations ($module) { - this.$module = $module - this.filterTimeout = null - this.form = this.$module.querySelector('[data-filter="form"]') - this.orgResults = this.$module.querySelector('#organisations_search_results') - } - - FilterOrganisations.prototype.init = function () { - this.$module.filterList = this.filterList.bind(this) - // Form should only appear if the JS is working - this.form.classList.add('filter-organisations-list__form--active') - this.results = document.createElement('div') - this.results.classList.add('filter-organisations-list__results', 'govuk-heading-m', 'js-search-results') - this.results.setAttribute('aria-live', 'polite') - this.results.innerHTML = this.countInitialDepartments() + ' results found' - this.orgResults.insertBefore(this.results, this.orgResults.firstChild) - - // We don't want the form to submit/refresh the page on enter key - this.form.onsubmit = function () { return false } - - this.form.addEventListener('keyup', function (e) { - var searchTerm = e.target.value - clearTimeout(this.filterTimeout) - this.filterTimeout = setTimeout(function () { - this.$module.filterList(searchTerm) - }.bind(this), 200) - }.bind(this)) - } - - FilterOrganisations.prototype.filterList = function (searchTerm) { - var itemsToFilter = this.$module.querySelectorAll('[data-filter="item"]') - var listsToFilter = this.$module.querySelectorAll('[data-filter="list"]') - for (var i = 0; i <= itemsToFilter.length - 1; i++) { - var currentOrganisation = itemsToFilter[i] - if (!this.matchSearchTerm(currentOrganisation, searchTerm)) { - currentOrganisation.classList.add('js-hidden') - } - } - this.updateDepartmentCount(listsToFilter) - } - - FilterOrganisations.prototype.matchSearchTerm = function (organisation, term) { - var normaliseWhitespace = function (string) { - return string - .trim() // Removes spaces at beginning and end of string. - .replace(/\r?\n|\r/g, ' ') // Replaces line breaks with one space. - .replace(/\s+/g, ' ') // Squashes multiple spaces to one space. - } - - var organisationText = '' - var organisationAcronym = organisation.getAttribute('data-filter-acronym') || '' - - organisation.classList.remove('js-hidden') - - if (organisation.querySelectorAll('.gem-c-organisation-logo__name').length > 0) { - organisationText = normaliseWhitespace( - organisation.querySelector('.gem-c-organisation-logo__name').textContent - ) - } else { - organisationText = normaliseWhitespace( - organisation.querySelector('.organisation-list__item-title').textContent - ) - } - - var searchTermRegexp = new RegExp(term.trim().replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i') - if ( - searchTermRegexp.exec(organisationText) !== null || - searchTermRegexp.exec(organisationAcronym) !== null - ) { - return true - } - } - - FilterOrganisations.prototype.countInitialDepartments = function () { - return this.$module.querySelectorAll('[data-filter="item"]').length - } - - FilterOrganisations.prototype.updateDepartmentCount = function (listsToFilter) { - var totalMatchingOrgs = 0 - - for (var i = 0; i < listsToFilter.length; i++) { - var departmentSection = listsToFilter[i].closest('[data-filter="block"]') - departmentSection.classList.remove('js-hidden') - - var matchingOrgs = listsToFilter[i].querySelectorAll('[data-filter="item"]') - var matchingOrgCount = 0 - - for (var j = 0; j < matchingOrgs.length; j++) { - if (!matchingOrgs[j].classList.contains('js-hidden')) { - matchingOrgCount++ - } - } - - var departmentCount = departmentSection.querySelectorAll('[data-department-count="true"]') - var accessibleDepartmentCount = departmentSection.querySelectorAll('.js-accessible-department-count') - - if (matchingOrgCount === 0) { - departmentSection.classList.toggle('js-hidden') - } - - if (matchingOrgCount > 0) { - for (var l = 0; l < departmentCount.length; l++) { - departmentCount[l].textContent = matchingOrgCount - } - - for (var k = 0; k < accessibleDepartmentCount.length; k++) { - accessibleDepartmentCount[k].textContent = matchingOrgCount - } - } - - totalMatchingOrgs += matchingOrgCount - } - - var text = ' results found' - if (totalMatchingOrgs === 1) { - text = ' result found' - } - this.results.innerHTML = totalMatchingOrgs + text - } - - Modules.FilterOrganisations = FilterOrganisations -})(window.GOVUK.Modules) diff --git a/app/assets/stylesheets/views/_organisations.scss b/app/assets/stylesheets/views/_organisations.scss index 20e9c2cba..9ebaddde6 100644 --- a/app/assets/stylesheets/views/_organisations.scss +++ b/app/assets/stylesheets/views/_organisations.scss @@ -27,10 +27,10 @@ } } -.filter-organisations-list__form { +.filter-list__form { display: none; } -.filter-organisations-list__form--active { +.filter-list__form--active { display: block; } diff --git a/app/assets/stylesheets/views/_world_index.scss b/app/assets/stylesheets/views/_world_index.scss new file mode 100644 index 000000000..b00c30369 --- /dev/null +++ b/app/assets/stylesheets/views/_world_index.scss @@ -0,0 +1,49 @@ +@import "govuk_publishing_components/individual_component_support"; + +.world-locations { + .world-locations-heading { + @include govuk-font(19); + } + + .world-locations-groups { + padding: govuk-spacing(5) 0 0 0; + } + + .world-locations-group__list { + padding: 0; + } + + .world-locations-group { + margin-bottom: govuk-spacing(6); + } + + .world-locations-group__letter { + @include govuk-font(80); + font-weight: bold; + text-indent: -4px; + margin: 0; + } + + .world_locations-group__item { + list-style-type: none; + border-bottom: 1px solid govuk-colour("mid-grey"); + padding: govuk-spacing(1) 0; + @include govuk-font(19); + } + + .filter-list__form { + display: none; + } + + .filter-list__form--active { + display: block; + } + + .js-hidden { + display: none; + } + + .filter-list__results { + padding-left: $govuk-gutter-half; + } +} diff --git a/app/controllers/world_controller.rb b/app/controllers/world_controller.rb new file mode 100644 index 000000000..3c3b84d2b --- /dev/null +++ b/app/controllers/world_controller.rb @@ -0,0 +1,7 @@ +class WorldController < ApplicationController + def index + index = WorldIndex.find!("/world") + @presented_index = WorldIndexPresenter.new(index) + setup_content_item_and_navigation_helpers(index) + end +end diff --git a/app/models/world_index.rb b/app/models/world_index.rb new file mode 100644 index 000000000..006336d3b --- /dev/null +++ b/app/models/world_index.rb @@ -0,0 +1,12 @@ +class WorldIndex + attr_reader :content_item + + def initialize(content_item) + @content_item = content_item + end + + def self.find!(base_path) + content_item = ContentItem.find!(base_path) + new(content_item) + end +end diff --git a/app/presenters/organisations/index_presenter.rb b/app/presenters/organisations/index_presenter.rb index fe4791f6f..fd22fb9fd 100644 --- a/app/presenters/organisations/index_presenter.rb +++ b/app/presenters/organisations/index_presenter.rb @@ -31,6 +31,13 @@ def title @organisations.content_item.title end + def filter_terms(organisation_type, organisation) + acronym = organisation["acronym"] + title = ministerial_organisation?(organisation_type) ? organisation["logo"]["formatted_title"].squish : organisation["title"] + + [title, acronym].compact.join(" ") + end + def all_organisations { number_10: @organisations.number_10, diff --git a/app/presenters/world_index_presenter.rb b/app/presenters/world_index_presenter.rb new file mode 100644 index 000000000..f4cecc910 --- /dev/null +++ b/app/presenters/world_index_presenter.rb @@ -0,0 +1,54 @@ +class WorldIndexPresenter + include ActionView::Helpers::UrlHelper + + delegate :count, to: :world_locations, prefix: true + delegate :count, to: :international_delegations, prefix: true + + def initialize(world_index) + @world_index = world_index + end + + def title + @world_index.content_item.title + end + + def grouped_world_locations + world_locations + .group_by { |location| location_group(location) } + .sort + end + + def international_delegations + details["international_delegations"] + end + + def world_location_link(world_location) + return content_tag(:span, world_location["name"]) unless world_location["active"] + + path = "/world/#{world_location['slug']}" + link_to world_location["name"], path, class: "govuk-link" + end + + def filter_terms(world_location) + slug = world_location["slug"] + name = world_location["name"] + + [slug, name].compact.join(" ") + end + +private + + def location_group(location) + without_prefix = location["name"].gsub(/^The/, "").strip + + without_prefix.first.upcase + end + + def details + @world_index.content_item.details + end + + def world_locations + details["world_locations"] + end +end diff --git a/app/views/organisations/_organisations_list.html.erb b/app/views/organisations/_organisations_list.html.erb index b37cc1979..c01aed392 100644 --- a/app/views/organisations/_organisations_list.html.erb +++ b/app/views/organisations/_organisations_list.html.erb @@ -8,11 +8,11 @@ heading_level: 2, id: organisation_type } %> -

<%= t('organisations.count_prefix') %> <%= organisations.count %> <%= organisation_type.to_s.humanize %>

+

<%= t('organisations.count_prefix') %> <%= organisations.count %> <%= organisation_type.to_s.humanize %>

<%= render "govuk_publishing_components/components/big_number", { number: organisations.count, data_attributes: { - department_count: "true", + item_count: "true", }, aria: { hidden: true, @@ -22,14 +22,14 @@
"> -
    +
      <% organisations.each do |organisation| %> <%= content_tag :li, { class: "organisations-list__item", id: organisation['slug'], data: { filter: "item", - "filter-acronym": organisation["acronym"].presence, + "filter-terms": "#{@presented_organisations.filter_terms(organisation_type, organisation)}", }, } do %> <% if @presented_organisations.ministerial_organisation?(organisation_type) %> @@ -46,7 +46,7 @@
<% else %>
- <%= link_to(organisation["title"], organisation["href"], class: "organisation-list__item-title govuk-heading-s govuk-!-font-weight-regular govuk-!-display-inline govuk-!-margin-right-2 govuk-link") %> + <%= link_to(organisation["title"], organisation["href"], class: "list__item-title govuk-heading-s govuk-!-font-weight-regular govuk-!-display-inline govuk-!-margin-right-2 govuk-link") %>
<% end %> diff --git a/app/views/organisations/index.html.erb b/app/views/organisations/index.html.erb index 92b103699..51fddb444 100644 --- a/app/views/organisations/index.html.erb +++ b/app/views/organisations/index.html.erb @@ -7,27 +7,27 @@ <% end %> -
+
<%= render "govuk_publishing_components/components/title", { title: @presented_organisations.title } %> -
-
+
<%= render partial: 'organisations_list', locals: { all_organisations: @presented_organisations.all_organisations } %> diff --git a/app/views/world/index.html.erb b/app/views/world/index.html.erb new file mode 100644 index 000000000..139d491af --- /dev/null +++ b/app/views/world/index.html.erb @@ -0,0 +1,110 @@ +<% content_for :title, @presented_index.title %> +<% page_class "world-locations" %> +<% add_view_stylesheet("world_index") %> + +
+
+
+ <%= render "govuk_publishing_components/components/title", { + title: @presented_index.title + } %> + +

<%= t('world_locations.content.find_out') %>

+ +
+ <%= render "govuk_publishing_components/components/input", { + label: { + text: t("world_locations.headings.search"), + }, + name: "search-box", + id: "filter-list", + controls: "search_results" + } %> +
+
+
+ +
+
" data-filter="block"> +
+
+

<%= I18n.t("world_locations.type.world_location", count: 2) %>

+

<%= t('world_locations.count_prefix') %> + <%= @presented_index.world_locations_count %> <%= I18n.t("world_locations.type.world_location", count: 2) %> +

+ <%= render "govuk_publishing_components/components/big_number", { + number: @presented_index.world_locations_count, + aria: { + hidden: true, + }, + data_attributes: { + item_count: "true", + }, + } %> +
+
+ +
+
    + <% @presented_index.grouped_world_locations.each do |letter, locations| %> +
    +

    <%= letter %>

    +
      + <% locations.each do |location| %> +
    1. + <%= @presented_index.world_location_link(location) %> +
    2. + <% end %> +
    +
    + <% end %> +
+
+
+ +
" data-filter="block"> +
+
+

<%= I18n.t("world_locations.type.international_delegation", count: 2) %>

+

<%= t('world_locations.count_prefix') %> + <%= @presented_index.international_delegations_count %> <%= I18n.t("world_locations.type.international_delegation", count: 2) %> +

+ <%= render "govuk_publishing_components/components/big_number", { + number: @presented_index.international_delegations_count, + aria: { + hidden: true, + }, + data_attributes: { + item_count: "true", + }, + } %> +
+
+ +
+
    +
    +
      + <% @presented_index.international_delegations.each do |delegation| %> +
    1. + <%= @presented_index.world_location_link(delegation) %> +
    2. + <% end %> +
    +
    +
+
+
+
+ +

+ <%= t('world_locations.content.complete_list', + href: + link_to( + t('world_locations.content.list_link'), + "/government/publications/list-of-foreign-office-posts", + class: "govuk-link") + ).html_safe + %> +

+
diff --git a/config/locales/ar/world_locations.yml b/config/locales/ar/world_locations.yml new file mode 100644 index 000000000..1305c693b --- /dev/null +++ b/config/locales/ar/world_locations.yml @@ -0,0 +1,29 @@ +--- +ar: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: البحث حسب البلد أو الإقليم + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + many: + one: وفد دولي + other: وفود دولية + two: + zero: + world_location: + few: + many: + one: موقع عالمي + other: مواقع عالمية + two: + zero: diff --git a/config/locales/az/world_locations.yml b/config/locales/az/world_locations.yml new file mode 100644 index 000000000..2b6e1aede --- /dev/null +++ b/config/locales/az/world_locations.yml @@ -0,0 +1,21 @@ +--- +az: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Ölkəyə və ya əraziyə əsasən axtarın + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Beynəlxalq səlahiyyətin ötürülməsi + other: Beynəlxalq səlahiyyətlərin ötürülməsi + world_location: + one: Dünya üzrə yeri + other: Dünya üzrə yerləri diff --git a/config/locales/be/world_locations.yml b/config/locales/be/world_locations.yml new file mode 100644 index 000000000..923d79abc --- /dev/null +++ b/config/locales/be/world_locations.yml @@ -0,0 +1,25 @@ +--- +be: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Пошук па краіне або тэрыторыі + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + many: + one: Міжнародная дэлегацыя + other: Міжнародныя дэлегацыі + world_location: + few: + many: + one: Месцазнаходжанне ў свеце + other: Мы ў свеце diff --git a/config/locales/bg/world_locations.yml b/config/locales/bg/world_locations.yml new file mode 100644 index 000000000..d2fc14efd --- /dev/null +++ b/config/locales/bg/world_locations.yml @@ -0,0 +1,21 @@ +--- +bg: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Търсене по страна или територия + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Международна делегация + other: Международни делегации + world_location: + one: Местоположение по света + other: Местоположения по света diff --git a/config/locales/bn/world_locations.yml b/config/locales/bn/world_locations.yml new file mode 100644 index 000000000..112b0094b --- /dev/null +++ b/config/locales/bn/world_locations.yml @@ -0,0 +1,21 @@ +--- +bn: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: দেশ বা অঞ্চল হিসেবে অনুসন্ধান করুন + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: আন্তর্জাতিক প্রতিনিধি + other: আন্তর্জাতিক প্রতিনিধিগণ + world_location: + one: বিশ্বের অবস্থান + other: বিশ্বের অবস্থানসমূহ diff --git a/config/locales/cs/world_locations.yml b/config/locales/cs/world_locations.yml new file mode 100644 index 000000000..13c51aded --- /dev/null +++ b/config/locales/cs/world_locations.yml @@ -0,0 +1,23 @@ +--- +cs: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Vyhledávání podle země nebo území + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + one: Mezinárodní delegace + other: Mezinárodní delegace + world_location: + few: + one: Umístění ve světě + other: Místa ve světě diff --git a/config/locales/cy/world_locations.yml b/config/locales/cy/world_locations.yml new file mode 100644 index 000000000..bf1a32532 --- /dev/null +++ b/config/locales/cy/world_locations.yml @@ -0,0 +1,29 @@ +--- +cy: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Chwilio yn ôl gwlad neu diriogaeth + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + many: + one: Dirprwyaeth ryngwladol + other: Dirprwyaethau rhyngwladol + two: + zero: + world_location: + few: + many: + one: Lleoliad byd-eang + other: Lleoliadau byd-eang + two: + zero: diff --git a/config/locales/da/world_locations.yml b/config/locales/da/world_locations.yml new file mode 100644 index 000000000..e136afae4 --- /dev/null +++ b/config/locales/da/world_locations.yml @@ -0,0 +1,21 @@ +--- +da: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Søg efter land eller område + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Internationale delegation + other: Internationale delegationer + world_location: + one: Verden Placering + other: Verden Placeringer diff --git a/config/locales/de/world_locations.yml b/config/locales/de/world_locations.yml new file mode 100644 index 000000000..dba483654 --- /dev/null +++ b/config/locales/de/world_locations.yml @@ -0,0 +1,21 @@ +--- +de: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Nach Land oder Gebiet suchen + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Internationale Delegation + other: Internationale Delegationen + world_location: + one: Weltweiter Standort + other: Weltweite Standorte diff --git a/config/locales/dr/world_locations.yml b/config/locales/dr/world_locations.yml new file mode 100644 index 000000000..6b7b31ce2 --- /dev/null +++ b/config/locales/dr/world_locations.yml @@ -0,0 +1,21 @@ +--- +dr: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: جستجو به اساس کشور یا قلمرو + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: هیٔت بین المللی + other: هیأت بین المللی + world_location: + one: موقعیت جهانی + other: موقعیت هایی جهانی diff --git a/config/locales/el/world_locations.yml b/config/locales/el/world_locations.yml new file mode 100644 index 000000000..db14daf49 --- /dev/null +++ b/config/locales/el/world_locations.yml @@ -0,0 +1,21 @@ +--- +el: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Αναζήτηση ανά χώρα ή περιοχή + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Διεθνής αντιπροσωπεία + other: Διεθνείς αντιπροσωπείες + world_location: + one: Παγκόσμια τοποθεσία + other: Παγκόσμιες τοποθεσίες diff --git a/config/locales/en/world_locations.yml b/config/locales/en/world_locations.yml new file mode 100644 index 000000000..30e70b06c --- /dev/null +++ b/config/locales/en/world_locations.yml @@ -0,0 +1,25 @@ +--- +en: + world_locations: + content: + complete_list: See the complete %{href}. This includes all embassies, high commissions + and consulates. + find_out: Find out what help is available from the UK government if you're abroad. + heading: Help and services around the world + list_link: list of overseas Foreign, Commonwealth & Development Office posts + count_prefix: There are + headings: + search: Search by country or territory + search_description: + international_delegation: Updates, news and events from the UK government in + %{name}. + world_location: Services if you're visiting, studying, working or living in + %{name}. Includes information about trading with and doing business in the + UK and %{name}. + type: + international_delegation: + one: International delegation + other: International delegations + world_location: + one: World location + other: World locations diff --git a/config/locales/es-419/world_locations.yml b/config/locales/es-419/world_locations.yml new file mode 100644 index 000000000..aa392434e --- /dev/null +++ b/config/locales/es-419/world_locations.yml @@ -0,0 +1,21 @@ +--- +es-419: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Búsqueda por país o territorio + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Delegación internacional + other: Delegaciones internacionales + world_location: + one: Ubicación en el mundo + other: Ubicaciones en el mundo diff --git a/config/locales/es/world_locations.yml b/config/locales/es/world_locations.yml new file mode 100644 index 000000000..243c910c8 --- /dev/null +++ b/config/locales/es/world_locations.yml @@ -0,0 +1,21 @@ +--- +es: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Búsqueda por país o territorio + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Delegación internacional + other: Delegaciones internacionales + world_location: + one: Ubicación mundial + other: Ubicaciones mundiales diff --git a/config/locales/et/world_locations.yml b/config/locales/et/world_locations.yml new file mode 100644 index 000000000..77d04cc6c --- /dev/null +++ b/config/locales/et/world_locations.yml @@ -0,0 +1,21 @@ +--- +et: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Otsige riigi või territooriumi järgi + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Rahvusvaheline delegatsioon + other: Rahvusvahelised delegatsioonid + world_location: + one: Maailma asukoht + other: Maailma asukohad diff --git a/config/locales/fa/world_locations.yml b/config/locales/fa/world_locations.yml new file mode 100644 index 000000000..16bcf8b59 --- /dev/null +++ b/config/locales/fa/world_locations.yml @@ -0,0 +1,21 @@ +--- +fa: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: جستجو بر اساس کشور یا قلمرو + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: هیأت بین‌المللی + other: هیأت‌های بین‌المللی + world_location: + one: مکان جهانی + other: مکان‌های جهانی diff --git a/config/locales/fi/world_locations.yml b/config/locales/fi/world_locations.yml new file mode 100644 index 000000000..6a070e749 --- /dev/null +++ b/config/locales/fi/world_locations.yml @@ -0,0 +1,21 @@ +--- +fi: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Hae maan tai alueen mukaan + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Kansainvälinen valtuuskunta + other: Kansainväliset valtuuskunnat + world_location: + one: Maailman sijainti + other: Maailman sijainnit diff --git a/config/locales/fr/world_locations.yml b/config/locales/fr/world_locations.yml new file mode 100644 index 000000000..6cd732111 --- /dev/null +++ b/config/locales/fr/world_locations.yml @@ -0,0 +1,21 @@ +--- +fr: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Recherche par pays ou territoire + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Délégation internationale + other: Délégations internationales + world_location: + one: Emplacement dans le monde + other: Emplacements dans le monde diff --git a/config/locales/gd/world_locations.yml b/config/locales/gd/world_locations.yml new file mode 100644 index 000000000..11ac01f42 --- /dev/null +++ b/config/locales/gd/world_locations.yml @@ -0,0 +1,25 @@ +--- +gd: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Cuardaigh de réir tíre nó réigiúin + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + one: Toscaireacht idirnáisiúnta + other: Toscaireacht idirnáisiúnta + two: + world_location: + few: + one: Seasamh ar domhan + other: Áit ar domhan + two: diff --git a/config/locales/gu/world_locations.yml b/config/locales/gu/world_locations.yml new file mode 100644 index 000000000..b9a2c8b35 --- /dev/null +++ b/config/locales/gu/world_locations.yml @@ -0,0 +1,21 @@ +--- +gu: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: દેશ અથવા ટેરિટરીથી શોધો + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: આંતરરાષ્ટ્રીય પ્રતિનિધિમંડળ + other: આંતરરાષ્ટ્રીય પ્રતિનિધિમંડળો + world_location: + one: વર્લ્ડ લોકેશન + other: વર્લ્ડ લોકેશન્સ diff --git a/config/locales/he/world_locations.yml b/config/locales/he/world_locations.yml new file mode 100644 index 000000000..72e65da89 --- /dev/null +++ b/config/locales/he/world_locations.yml @@ -0,0 +1,21 @@ +--- +he: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: חפש לפי מדינה או שטח + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: משלחת בינלאומית + other: משלחות בינלאומיות + world_location: + one: מיקום גלובאלי + other: מיקומים גלובאליים diff --git a/config/locales/hi/world_locations.yml b/config/locales/hi/world_locations.yml new file mode 100644 index 000000000..4d3da943c --- /dev/null +++ b/config/locales/hi/world_locations.yml @@ -0,0 +1,21 @@ +--- +hi: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: देश या क्षेत्र से खोजें + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: अंतर्राष्ट्रीय प्रतिनिधिमंडल + other: अंतर्राष्ट्रीय प्रतिनिधिमंडल + world_location: + one: वैश्विक स्थान + other: वैश्विक स्थान diff --git a/config/locales/hr/world_locations.yml b/config/locales/hr/world_locations.yml new file mode 100644 index 000000000..7364d3ef6 --- /dev/null +++ b/config/locales/hr/world_locations.yml @@ -0,0 +1,23 @@ +--- +hr: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Pretražujte prema zemlji ili teritoriju + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + one: Međunarodna delegacija + other: Međunarodne delegacije + world_location: + few: + one: Svjetske lokacije + other: Lokacije svijeta diff --git a/config/locales/hu/world_locations.yml b/config/locales/hu/world_locations.yml new file mode 100644 index 000000000..d31efc2c8 --- /dev/null +++ b/config/locales/hu/world_locations.yml @@ -0,0 +1,21 @@ +--- +hu: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Keresés ország vagy terület szerint + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Nemzetközi delegáció + other: Nemzetközi delegációk + world_location: + one: Helyszín a világban + other: Helyszínek a világban diff --git a/config/locales/hy/world_locations.yml b/config/locales/hy/world_locations.yml new file mode 100644 index 000000000..25ac509ee --- /dev/null +++ b/config/locales/hy/world_locations.yml @@ -0,0 +1,21 @@ +--- +hy: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Որոնել ըստ երկրի կամ տարածաշրջանի + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Միջազգային պատվիրակություն + other: Միջազգային պատվիրակություններ + world_location: + one: Գտնվելու վայրը + other: Գտնվելու վայրերը diff --git a/config/locales/id/world_locations.yml b/config/locales/id/world_locations.yml new file mode 100644 index 000000000..af962013e --- /dev/null +++ b/config/locales/id/world_locations.yml @@ -0,0 +1,19 @@ +--- +id: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Cari menurut negara atau teritori + search_description: + international_delegation: + world_location: + type: + international_delegation: + other: Delegasi internasional + world_location: + other: Lokasi dunia diff --git a/config/locales/is/world_locations.yml b/config/locales/is/world_locations.yml new file mode 100644 index 000000000..3d9354c60 --- /dev/null +++ b/config/locales/is/world_locations.yml @@ -0,0 +1,21 @@ +--- +is: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Leita eftir landi eða landsvæði + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Alþjóðleg sendinefnd + other: Alþjóðlegar sendinefndir + world_location: + one: Staðsetning í heiminum + other: Staðsetningar í heiminum diff --git a/config/locales/it/world_locations.yml b/config/locales/it/world_locations.yml new file mode 100644 index 000000000..02c4c4dc3 --- /dev/null +++ b/config/locales/it/world_locations.yml @@ -0,0 +1,21 @@ +--- +it: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Cerca per stato o territorio + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Delegazione internazionale + other: Delegazioni internazionali + world_location: + one: Località del mondo + other: Località del mondo diff --git a/config/locales/ja/world_locations.yml b/config/locales/ja/world_locations.yml new file mode 100644 index 000000000..17a2e2097 --- /dev/null +++ b/config/locales/ja/world_locations.yml @@ -0,0 +1,19 @@ +--- +ja: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: 国または地域で検索 + search_description: + international_delegation: + world_location: + type: + international_delegation: + other: 国際代表団 + world_location: + other: 世界の場所 diff --git a/config/locales/ka/world_locations.yml b/config/locales/ka/world_locations.yml new file mode 100644 index 000000000..7627e3fa0 --- /dev/null +++ b/config/locales/ka/world_locations.yml @@ -0,0 +1,21 @@ +--- +ka: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: მოძებნეთ ქვეყნის ან ტერიტორიის მიხედვით + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: საერთაშორისო დელეგაცია + other: საერთაშორისო დელეგაციები + world_location: + one: მსოფლიო მდებარეობა + other: მსოფლიო მდებარეობები diff --git a/config/locales/kk/world_locations.yml b/config/locales/kk/world_locations.yml new file mode 100644 index 000000000..ebc33f605 --- /dev/null +++ b/config/locales/kk/world_locations.yml @@ -0,0 +1,21 @@ +--- +kk: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Елі немесе территориясы бойынша іздеу + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Халықаралық делегация + other: Халықаралық делегациялар + world_location: + one: Әлемдегі орын + other: Әлемдегі орындар diff --git a/config/locales/ko/world_locations.yml b/config/locales/ko/world_locations.yml new file mode 100644 index 000000000..7c04391ab --- /dev/null +++ b/config/locales/ko/world_locations.yml @@ -0,0 +1,19 @@ +--- +ko: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: 국가 또는 영토로 검색하기 + search_description: + international_delegation: + world_location: + type: + international_delegation: + other: 국제 대표단 + world_location: + other: 월드 로케이션 diff --git a/config/locales/lt/world_locations.yml b/config/locales/lt/world_locations.yml new file mode 100644 index 000000000..207ee629b --- /dev/null +++ b/config/locales/lt/world_locations.yml @@ -0,0 +1,23 @@ +--- +lt: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Ieškoti pagal šalį ar teritoriją + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + one: Tarptautinė delegacija + other: Tarptautinės delegacijos + world_location: + few: + one: Geografinė vieta + other: Geografinės vietos diff --git a/config/locales/lv/world_locations.yml b/config/locales/lv/world_locations.yml new file mode 100644 index 000000000..8aacbda3a --- /dev/null +++ b/config/locales/lv/world_locations.yml @@ -0,0 +1,21 @@ +--- +lv: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Meklēt pēc valsts vai teritorijas + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Starptautiskā delegācija + other: Starptautiskās delegācijas + world_location: + one: Vieta pasaulē + other: Vietas pasaulē diff --git a/config/locales/ms/world_locations.yml b/config/locales/ms/world_locations.yml new file mode 100644 index 000000000..ab6f6000c --- /dev/null +++ b/config/locales/ms/world_locations.yml @@ -0,0 +1,19 @@ +--- +ms: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Cari mengikut negara atau wilayah + search_description: + international_delegation: + world_location: + type: + international_delegation: + other: Perwakilan antarabangsa + world_location: + other: Lokasi dunia diff --git a/config/locales/mt/world_locations.yml b/config/locales/mt/world_locations.yml new file mode 100644 index 000000000..7cacd5ff7 --- /dev/null +++ b/config/locales/mt/world_locations.yml @@ -0,0 +1,25 @@ +--- +mt: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Fittex permezz tal-pajjiż jew territorju + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + many: + one: Delegazzjoni internazzjonali + other: Delegazzjonijiet internazzjonali + world_location: + few: + many: + one: Post fid-dinja + other: Postijiet fid-dinja diff --git a/config/locales/ne/world_locations.yml b/config/locales/ne/world_locations.yml new file mode 100644 index 000000000..6032b99fb --- /dev/null +++ b/config/locales/ne/world_locations.yml @@ -0,0 +1,21 @@ +--- +ne: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: देश वा क्षेत्रको नामले खोज + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: अन्तर्राष्ट्रिय प्रतिनिधिमण्डल + other: अन्तर्राष्ट्रिय प्रतिनिधिमण्डलहरू + world_location: + one: विश्व स्थान + other: विश्व स्थानहरु diff --git a/config/locales/nl/world_locations.yml b/config/locales/nl/world_locations.yml new file mode 100644 index 000000000..6922014d3 --- /dev/null +++ b/config/locales/nl/world_locations.yml @@ -0,0 +1,21 @@ +--- +nl: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Zoeken op land of gebied + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Internationale delegatie + other: Internationale delegaties + world_location: + one: Wereldlocatie + other: Wereldlocaties diff --git a/config/locales/no/world_locations.yml b/config/locales/no/world_locations.yml new file mode 100644 index 000000000..6b58c45f4 --- /dev/null +++ b/config/locales/no/world_locations.yml @@ -0,0 +1,21 @@ +--- +'no': + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Søk etter land eller territorium + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Internasjonal delegasjon + other: Internasjonale delegasjoner + world_location: + one: Beliggenhet i verden + other: Beliggenheter i verden diff --git a/config/locales/pa-pk/world_locations.yml b/config/locales/pa-pk/world_locations.yml new file mode 100644 index 000000000..dce9fc893 --- /dev/null +++ b/config/locales/pa-pk/world_locations.yml @@ -0,0 +1,21 @@ +--- +pa-pk: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: مُلک یا علاقے توں لبھو + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: بین الاقوامی وفد + other: بین الاقوامی وفود + world_location: + one: دُنیا دا علاقہ + other: دُنیا دے علاقے diff --git a/config/locales/pa/world_locations.yml b/config/locales/pa/world_locations.yml new file mode 100644 index 000000000..603ec8f00 --- /dev/null +++ b/config/locales/pa/world_locations.yml @@ -0,0 +1,21 @@ +--- +pa: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: ਦੇਸ਼ ਜਾਂ ਖੇਤਰ ਦੁਆਰਾ ਖੋਜ ਕਰੋ + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: ਅੰਤਰਰਾਸ਼ਟਰੀ ਵਫਦ + other: ਅੰਤਰਰਾਸ਼ਟਰੀ ਵਫਦ + world_location: + one: ਵਿਸ਼ਵ ਸਥਾਨ + other: ਵਿਸ਼ਵ ਸਥਾਨ diff --git a/config/locales/pl/world_locations.yml b/config/locales/pl/world_locations.yml new file mode 100644 index 000000000..f606b7bcf --- /dev/null +++ b/config/locales/pl/world_locations.yml @@ -0,0 +1,25 @@ +--- +pl: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Wyszukiwanie według kraju lub terytorium + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + many: + one: Delegacja międzynarodowa + other: Delegacje międzynarodowe + world_location: + few: + many: + one: Lokalizacja na świecie + other: Lokalizacje na świecie diff --git a/config/locales/ps/world_locations.yml b/config/locales/ps/world_locations.yml new file mode 100644 index 000000000..c128e8db3 --- /dev/null +++ b/config/locales/ps/world_locations.yml @@ -0,0 +1,21 @@ +--- +ps: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: د هیواد یا سیمې له مخې لټون + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: نړیوال پلاوی + other: نړیوال پلاوي + world_location: + one: د نړۍ موقعیت + other: د نړۍ موقعیتونه diff --git a/config/locales/pt/world_locations.yml b/config/locales/pt/world_locations.yml new file mode 100644 index 000000000..0324f0ac4 --- /dev/null +++ b/config/locales/pt/world_locations.yml @@ -0,0 +1,21 @@ +--- +pt: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Pesquisa por país ou território + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Delegação internacional + other: Delegações internacionais + world_location: + one: Local mundial + other: Locais mundiais diff --git a/config/locales/ro/world_locations.yml b/config/locales/ro/world_locations.yml new file mode 100644 index 000000000..44da65a63 --- /dev/null +++ b/config/locales/ro/world_locations.yml @@ -0,0 +1,23 @@ +--- +ro: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Căutați după țară sau teritoriu + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + one: Delegare internațională + other: Delegări internaționale + world_location: + few: + one: Locație pe glob + other: Locații pe glob diff --git a/config/locales/ru/world_locations.yml b/config/locales/ru/world_locations.yml new file mode 100644 index 000000000..43c7a8ee1 --- /dev/null +++ b/config/locales/ru/world_locations.yml @@ -0,0 +1,25 @@ +--- +ru: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Поиск по стране или территории + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + many: + one: Международная делегация + other: Международные делегации + world_location: + few: + many: + one: Место нахождения в мире + other: Места нахождения в мире diff --git a/config/locales/si/world_locations.yml b/config/locales/si/world_locations.yml new file mode 100644 index 000000000..1146606e8 --- /dev/null +++ b/config/locales/si/world_locations.yml @@ -0,0 +1,21 @@ +--- +si: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: රට හෝ භූමිය අනුව සොයන්න + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: ජාත්යන්තර නියෝජිත පිරිස + other: ජාත්යන්තර නියෝජිත පිරිස් + world_location: + one: ලෝක ස්ථානය + other: ලෝක ස්ථාන diff --git a/config/locales/sk/world_locations.yml b/config/locales/sk/world_locations.yml new file mode 100644 index 000000000..e49364057 --- /dev/null +++ b/config/locales/sk/world_locations.yml @@ -0,0 +1,23 @@ +--- +sk: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Vyhľadávanie podľa krajiny alebo územia + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + one: Medzinárodná delegácia + other: Medzinárodné delegácie + world_location: + few: + one: Umiestnenie vo svete + other: Svetové lokality diff --git a/config/locales/sl/world_locations.yml b/config/locales/sl/world_locations.yml new file mode 100644 index 000000000..4d16520d0 --- /dev/null +++ b/config/locales/sl/world_locations.yml @@ -0,0 +1,25 @@ +--- +sl: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Išči po državah ali ozemljih + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + one: Mednarodna delegacija + other: Mednarodne delegacije + two: + world_location: + few: + one: Lokacija na svetu + other: Lokacije po svetu + two: diff --git a/config/locales/so/world_locations.yml b/config/locales/so/world_locations.yml new file mode 100644 index 000000000..5917e62e9 --- /dev/null +++ b/config/locales/so/world_locations.yml @@ -0,0 +1,21 @@ +--- +so: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Ku raadi dalka ama dhulka + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Wafti caalami ah + other: Wafti caalami ah + world_location: + one: Goobta Dunida + other: Goobaha Dunida diff --git a/config/locales/sq/world_locations.yml b/config/locales/sq/world_locations.yml new file mode 100644 index 000000000..e63fd76a6 --- /dev/null +++ b/config/locales/sq/world_locations.yml @@ -0,0 +1,21 @@ +--- +sq: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Kërkoni sipas vendit ose territorit + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Delegacion ndërkombëtar + other: Delegacione ndërkombëtare + world_location: + one: Vendndodhja globale + other: Vendndodhjet globale diff --git a/config/locales/sr/world_locations.yml b/config/locales/sr/world_locations.yml new file mode 100644 index 000000000..7349c8b4c --- /dev/null +++ b/config/locales/sr/world_locations.yml @@ -0,0 +1,23 @@ +--- +sr: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Pretraga po zemlji ili teritoriji + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + one: Međunarodna delegacija + other: Međunarodne delegacije + world_location: + few: + one: Globalna lokacija + other: Globalne lokacije diff --git a/config/locales/sv/world_locations.yml b/config/locales/sv/world_locations.yml new file mode 100644 index 000000000..dddc4ab03 --- /dev/null +++ b/config/locales/sv/world_locations.yml @@ -0,0 +1,21 @@ +--- +sv: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Sök efter land eller område + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Internationell delegation + other: Internationella delegationer + world_location: + one: Plats i världen + other: Platser i världen diff --git a/config/locales/sw/world_locations.yml b/config/locales/sw/world_locations.yml new file mode 100644 index 000000000..cf5c6ea6d --- /dev/null +++ b/config/locales/sw/world_locations.yml @@ -0,0 +1,21 @@ +--- +sw: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Tafuta kulingana na nchi au eneo + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Ujumbe wa kimataifa + other: Ujumbe wa kimataifa + world_location: + one: Eneo la kimataifa + other: Maeneo ya kimataifa diff --git a/config/locales/ta/world_locations.yml b/config/locales/ta/world_locations.yml new file mode 100644 index 000000000..f1318148e --- /dev/null +++ b/config/locales/ta/world_locations.yml @@ -0,0 +1,21 @@ +--- +ta: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: நாடு அல்லது பிரதேசம் வாரியாகத் தேடு + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: சர்வதேச தூதுக்குழு + other: சர்வதேச தூதுக்குழுக்கள் + world_location: + one: உலக இருப்பிடம் + other: உலக இருப்பிடங்கள் diff --git a/config/locales/th/world_locations.yml b/config/locales/th/world_locations.yml new file mode 100644 index 000000000..36305b00b --- /dev/null +++ b/config/locales/th/world_locations.yml @@ -0,0 +1,19 @@ +--- +th: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: ค้นหาด้วยประเทศหรือดินแดน + search_description: + international_delegation: + world_location: + type: + international_delegation: + other: คณะผู้แทนระหว่างประเทศ + world_location: + other: สถานที่ทั่วโลก diff --git a/config/locales/tk/world_locations.yml b/config/locales/tk/world_locations.yml new file mode 100644 index 000000000..088574d13 --- /dev/null +++ b/config/locales/tk/world_locations.yml @@ -0,0 +1,21 @@ +--- +tk: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Döwlet ýa-da territoriýa boýunça gözlemek + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Halkara delegasiýa + other: Halkara delegasiýalar + world_location: + one: Dünýä ýeri + other: Dünýä ýerleri diff --git a/config/locales/tr/world_locations.yml b/config/locales/tr/world_locations.yml new file mode 100644 index 000000000..77413ccbc --- /dev/null +++ b/config/locales/tr/world_locations.yml @@ -0,0 +1,21 @@ +--- +tr: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Ülkeye veya bölgeye göre arama yapın + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Uluslararası delegasyon + other: Uluslararası delegasyonlar + world_location: + one: Dünya geneli konum + other: Dünya geneli konumlar diff --git a/config/locales/uk/world_locations.yml b/config/locales/uk/world_locations.yml new file mode 100644 index 000000000..03c042605 --- /dev/null +++ b/config/locales/uk/world_locations.yml @@ -0,0 +1,25 @@ +--- +uk: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Пошук за країною чи територією + search_description: + international_delegation: + world_location: + type: + international_delegation: + few: + many: + one: Міжнародна делегація + other: Міжнародні делегації + world_location: + few: + many: + one: Світова локація + other: Світові локації diff --git a/config/locales/ur/world_locations.yml b/config/locales/ur/world_locations.yml new file mode 100644 index 000000000..e7a2d3b62 --- /dev/null +++ b/config/locales/ur/world_locations.yml @@ -0,0 +1,21 @@ +--- +ur: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: ملک یا خطے کے لحاظ سے تلاش کریں + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: عالمی وفد + other: عالمی وفود + world_location: + one: عالمی مقام + other: عالمی مقامات diff --git a/config/locales/uz/world_locations.yml b/config/locales/uz/world_locations.yml new file mode 100644 index 000000000..e0b873a26 --- /dev/null +++ b/config/locales/uz/world_locations.yml @@ -0,0 +1,21 @@ +--- +uz: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Мамлакат ёки минтақа бўйича излаш + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: Халқаро делегация + other: Халқаро делегациялар + world_location: + one: Жаҳондаги жойлашиш жойи + other: Жаҳондаги жойлашиш жойлари diff --git a/config/locales/vi/world_locations.yml b/config/locales/vi/world_locations.yml new file mode 100644 index 000000000..e431b494f --- /dev/null +++ b/config/locales/vi/world_locations.yml @@ -0,0 +1,19 @@ +--- +vi: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: Tìm kiếm theo quốc gia hoặc lãnh thổ + search_description: + international_delegation: + world_location: + type: + international_delegation: + other: Phái đoàn quốc tế + world_location: + other: Các vị trí trên thế giới diff --git a/config/locales/yi/world_locations.yml b/config/locales/yi/world_locations.yml new file mode 100644 index 000000000..c58c3b0a3 --- /dev/null +++ b/config/locales/yi/world_locations.yml @@ -0,0 +1,21 @@ +--- +yi: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: + search_description: + international_delegation: + world_location: + type: + international_delegation: + one: + other: + world_location: + one: + other: diff --git a/config/locales/zh-hk/world_locations.yml b/config/locales/zh-hk/world_locations.yml new file mode 100644 index 000000000..60651522a --- /dev/null +++ b/config/locales/zh-hk/world_locations.yml @@ -0,0 +1,19 @@ +--- +zh-hk: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: 按國家或地區搜尋 + search_description: + international_delegation: + world_location: + type: + international_delegation: + other: 國際代表 + world_location: + other: 全球駐點 diff --git a/config/locales/zh-tw/world_locations.yml b/config/locales/zh-tw/world_locations.yml new file mode 100644 index 000000000..717ae1b59 --- /dev/null +++ b/config/locales/zh-tw/world_locations.yml @@ -0,0 +1,19 @@ +--- +zh-tw: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: 按國家或地區搜索 + search_description: + international_delegation: + world_location: + type: + international_delegation: + other: 國際代表團 + world_location: + other: 世界地點 diff --git a/config/locales/zh/world_locations.yml b/config/locales/zh/world_locations.yml new file mode 100644 index 000000000..15a9954a1 --- /dev/null +++ b/config/locales/zh/world_locations.yml @@ -0,0 +1,19 @@ +--- +zh: + world_locations: + content: + complete_list: + find_out: + heading: + list_link: + count_prefix: + headings: + search: 按国家或地区搜索 + search_description: + international_delegation: + world_location: + type: + international_delegation: + other: 国际代表处 + world_location: + other: 世界地点 diff --git a/config/routes.rb b/config/routes.rb index fca1a22fe..25e2a61fa 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -101,6 +101,8 @@ get "/:slug", to: "step_nav#show" end + get "/world", to: "world#index" + get "/world/embassies", to: "embassies#index", as: :embassies diff --git a/spec/controllers/world_controller_spec.rb b/spec/controllers/world_controller_spec.rb new file mode 100644 index 000000000..ac3f20152 --- /dev/null +++ b/spec/controllers/world_controller_spec.rb @@ -0,0 +1,12 @@ +RSpec.describe WorldController do + describe "GET index" do + before do + stub_content_store_has_item("/world", GovukSchemas::Example.find("world_index", example_name: "world_index")) + end + + it "has a success response" do + get :index + expect(response).to have_http_status(:success) + end + end +end diff --git a/spec/features/content_store_organisations_spec.rb b/spec/features/content_store_organisations_spec.rb index 3f96be32b..a372f9de2 100644 --- a/spec/features/content_store_organisations_spec.rb +++ b/spec/features/content_store_organisations_spec.rb @@ -23,7 +23,7 @@ end scenario "renders organisation filter" do - expect(page.has_css?(".filter-organisations-list__form")).to be(true) + expect(page.has_css?(".filter-list__form")).to be(true) expect(page.has_css?("label", text: I18n.t("organisations.search_for_department"))).to be(true) end @@ -49,7 +49,7 @@ end scenario "renders non-ministerial organisation without crest" do - expect(page.has_css?('a.organisation-list__item-title[href="/government/organisations/arts-and-humanities-research-council"]', text: "Arts and Humanities Research Council")).to be(true) + expect(page.has_css?('a.list__item-title[href="/government/organisations/arts-and-humanities-research-council"]', text: "Arts and Humanities Research Council")).to be(true) end scenario "displays child organisations count" do diff --git a/spec/features/world_index_spec.rb b/spec/features/world_index_spec.rb new file mode 100644 index 000000000..26ed6eae0 --- /dev/null +++ b/spec/features/world_index_spec.rb @@ -0,0 +1,55 @@ +require "integration_spec_helper" + +RSpec.feature "World index page" do + before do + stub_content_store_has_item("/world", GovukSchemas::Example.find("world_index", example_name: "world_index")) + visit "/world" + end + + scenario "returns 200 when visiting world index page" do + expect(page.status_code).to eq(200) + end + + scenario "renders breadcrumbs" do + within ".gem-c-breadcrumbs" do + expect(page).to have_link("Home", href: "/") + end + end + + scenario "renders the webpage title" do + expect(page).to have_title("Help and services around the world - GOV.UK") + end + + scenario "renders the page title" do + expect(page).to have_selector(".gem-c-title__text", text: "Help and services around the world") + end + + scenario "renders a link to all foreign office posts" do + expect(page).to have_link("list of overseas Foreign, Commonwealth & Development Office posts", href: "/government/publications/list-of-foreign-office-posts") + end + + scenario "renders links to world locations when they are active" do + z_links = page.find(".world-locations-group__letter", text: "Z").sibling("ol") + + within z_links do + expect(page).to have_link("Zambia", href: "/world/zambia") + end + end + + scenario "renders world location names as text when they are inactive" do + u_links = page.find(".world-locations-group__letter", text: "U").sibling("ol") + + within u_links do + expect(page).to have_content("United Kingdom") + expect(page).to_not have_link("United Kingdom") + end + end + + scenario "renders links to international delegations" do + international_delegations_section = page.find("section", id: "international-delegations") + + within international_delegations_section do + expect(page).to have_link("The UK Permanent Delegation to the OECD (Organisation for Economic Co-operation and Development)", href: "/world/the-uk-permanent-delegation-to-the-oecd-organisation-for-economic-co-operation-and-development") + end + end +end diff --git a/spec/javascripts/modules/organisation-list-filter_spec.js b/spec/javascripts/modules/list-filter_spec.js similarity index 63% rename from spec/javascripts/modules/organisation-list-filter_spec.js rename to spec/javascripts/modules/list-filter_spec.js index d62bf863a..670bd40f9 100644 --- a/spec/javascripts/modules/organisation-list-filter_spec.js +++ b/spec/javascripts/modules/list-filter_spec.js @@ -2,7 +2,7 @@ /* eslint-env jasmine */ /* eslint-disable no-var */ -describe('organisation-list-filter.js', function () { +describe('list-filter.js', function () { 'use strict' var timeout = 210 @@ -20,43 +20,50 @@ describe('organisation-list-filter.js', function () { '' + '' - var organisations = - '
' + + var items = + '
' + '
' + '
' + '

Ministerial Departments

' + - '

There are 2 Ministerial Departments

' + + '

There are 2 Ministerial Departments

' + '
' + - '2' + + '2' + '
' + '
' + - '
    ' + - '
  1. ' + + '
      ' + + '
    1. ' + '
      Cabinet Office
      ' + '
    2. ' + - '
    3. ' + + '
    4. ' + '
      Cabinet Office
      ' + '
    5. ' + - '
    6. ' + + '
    7. ' + // Double space and line break added on purpose: '
      Ministry of Funny\nWalks
      ' + '
    8. ' + + '
      ' + + '
        ' + + '
      1. ' + + '
        Ministry of Inner Blocks
        ' + + '
      2. ' + + '
      ' + + '
      ' + '
    ' + '
' + '
' + '
' + '

Non Ministerial Departments

' + - '

There are 2 Non Ministerial Departments

' + + '

There are 2 Non Ministerial Departments

' + '
' + - '2' + + '2' + '
' + '
' + - '
    ' + - '
  1. ' + - 'Advisory Committee on Releases to the Environment' + + '
      ' + + '
    1. ' + + 'Advisory Committee on Releases to the Environment' + '
    2. ' + - '
    3. ' + - 'Advisory Council on the Misuse of Drugs' + + '
    4. ' + + 'Advisory Council on the Misuse of Drugs' + '
    5. ' + '
    ' + '
' + @@ -66,10 +73,10 @@ describe('organisation-list-filter.js', function () { var wrapper = $('
').addClass('wrapper') wrapper.append(stubStyling) wrapper.append(form) - wrapper.append(organisations) + wrapper.append(items) $(document.body).append(wrapper) - new GOVUK.Modules.FilterOrganisations(wrapper[0]).init() + new GOVUK.Modules.ListFilter(wrapper[0]).init() }) afterAll(function () { @@ -108,7 +115,7 @@ describe('organisation-list-filter.js', function () { }, timeout) }) - it('show items that do have acronyms that match the search term', function (done) { + it('show items that do have additional terms that match the search term', function (done) { $('[data-filter="form"] input').val('mfw') window.GOVUK.triggerEvent($('[data-filter="form"] input')[0], 'keyup') @@ -119,7 +126,7 @@ describe('organisation-list-filter.js', function () { }, timeout) }) - it('show items that do have acronyms and/or name that match the search term', function (done) { + it('show items that do have names or additional terms that match the search term', function (done) { $('[data-filter="form"] input').val('co') window.GOVUK.triggerEvent($('[data-filter="form"] input')[0], 'keyup') @@ -132,7 +139,7 @@ describe('organisation-list-filter.js', function () { }, timeout) }) - it('hides items that do not have acronyms and/or name that match the search term', function (done) { + it('hides items that do not have names or additional terms that match the search term', function (done) { $('[data-filter="form"] input').val('co') window.GOVUK.triggerEvent($('[data-filter="form"] input')[0], 'keyup') @@ -144,7 +151,7 @@ describe('organisation-list-filter.js', function () { }, timeout) }) - it('hide department counts and names if they have no matching organisations', function (done) { + it('hide department counts and names if they have no matching items', function (done) { $('[data-filter="form"] input').val('Advisory cou') window.GOVUK.triggerEvent($('[data-filter="form"] input')[0], 'keyup') @@ -155,20 +162,20 @@ describe('organisation-list-filter.js', function () { }, timeout) }) - it('update the department count', function (done) { + it('update the item count', function (done) { $('[data-filter="form"] input').val('Advisory cou') window.GOVUK.triggerEvent($('[data-filter="form"] input')[0], 'keyup') setTimeout(function () { expect($('.count-for-no-logos')).not.toHaveClass('js-hidden') - expect($('.count-for-no-logos .js-accessible-department-count')).toHaveText(1) - expect($('.count-for-no-logos [data-department-count="true"]')).toHaveText(1) + expect($('.count-for-no-logos .js-accessible-item-count')).toHaveText(1) + expect($('.count-for-no-logos [data-item-count="true"]')).toHaveText(1) expect($('.js-search-results')).toHaveText('1 result found') done() }, timeout) }) - it('shows a message if there are no matching organisations', function (done) { + it('shows a message if there are no matching items', function (done) { $('[data-filter="form"] input').val('Nothing will match this') window.GOVUK.triggerEvent($('[data-filter="form"] input')[0], 'keyup') @@ -178,7 +185,7 @@ describe('organisation-list-filter.js', function () { }, timeout) }) - it('copes when organisation name contains line breaks and multiple spaces', function (done) { + it('copes when item name contains line breaks and multiple spaces', function (done) { $('[data-filter="form"] input').val('ministry of funny walks') window.GOVUK.triggerEvent($('[data-filter="form"] input')[0], 'keyup') @@ -187,4 +194,26 @@ describe('organisation-list-filter.js', function () { done() }, timeout) }) + + it('hide inner blocks if they have no matching items', function (done) { + $('[data-filter="form"] input').val('Advisory cou') + window.GOVUK.triggerEvent($('[data-filter="form"] input')[0], 'keyup') + + setTimeout(function () { + expect($('[data-filter="inner-block"]').first()).toHaveClass('js-hidden') + expect($('.js-search-results')).toHaveText('1 result found') + done() + }, timeout) + }) + + it('reveals inner blocks if they have matching items', function (done) { + $('[data-filter="form"] input').val('Ministry of Inner Blocks') + window.GOVUK.triggerEvent($('[data-filter="form"] input')[0], 'keyup') + + setTimeout(function () { + expect($('[data-filter="inner-block"]').first()).not.toHaveClass('js-hidden') + expect($('.js-search-results')).toHaveText('1 result found') + done() + }, timeout) + }) }) diff --git a/spec/presenters/organisations_presenter_spec.rb b/spec/presenters/organisations_presenter_spec.rb index e5bf42633..7b50ec831 100644 --- a/spec/presenters/organisations_presenter_spec.rb +++ b/spec/presenters/organisations_presenter_spec.rb @@ -216,6 +216,58 @@ end end + describe "#filter_terms" do + let(:organisations_presenter) { presenter_from_hash(ministerial_departments_hash) } + + context "when ministerial organisation" do + let(:test_org_type) { :number_10 } + + context "with no acronym" do + let(:test_org) { { logo: { formatted_title: "Prime Minister's Office, 10 Downing Street" } }.with_indifferent_access } + + it "returns the formatted logo title" do + expect(organisations_presenter.filter_terms(test_org_type, test_org)).to eq "Prime Minister's Office, 10 Downing Street" + end + end + + context "with acronym" do + let(:test_org) { { acronym: "Number 10", logo: { formatted_title: "Prime Minister's Office, 10 Downing Street" } }.with_indifferent_access } + + it "returns the formatted logo title and acronym" do + expect(organisations_presenter.filter_terms(test_org_type, test_org)).to eq "Prime Minister's Office, 10 Downing Street Number 10" + end + end + + context "when formatted title contains line breaks" do + let(:test_org) { { logo: { formatted_title: "Attorney \r\nGeneral's \r\nOffice" } }.with_indifferent_access } + + it "returns the formatted logo title" do + expect(organisations_presenter.filter_terms(test_org_type, test_org)).to eq "Attorney General's Office" + end + end + end + + context "when not ministerial organisation" do + let(:test_org_type) { :agencies_and_other_public_bodies } + + context "with no acronym" do + let(:test_org) { { title: "Air Accidents Investigation Branch" }.with_indifferent_access } + + it "returns the title" do + expect(organisations_presenter.filter_terms(test_org_type, test_org)).to eq "Air Accidents Investigation Branch" + end + end + + context "with acronym" do + let(:test_org) { { acronym: "AAIB", title: "Air Accidents Investigation Branch" }.with_indifferent_access } + + it "returns the title and acronym" do + expect(organisations_presenter.filter_terms(test_org_type, test_org)).to eq "Air Accidents Investigation Branch AAIB" + end + end + end + end + def presenter_from_hash(content) content_item = ContentItem.new(content) content_store_organisations = ContentStoreOrganisations.new(content_item) diff --git a/spec/presenters/world_index_presenter_spec.rb b/spec/presenters/world_index_presenter_spec.rb new file mode 100644 index 000000000..8e630c588 --- /dev/null +++ b/spec/presenters/world_index_presenter_spec.rb @@ -0,0 +1,94 @@ +RSpec.describe WorldIndexPresenter do + let(:fixture) { GovukSchemas::Example.find("world_index", example_name: "world_index") } + let(:content_item) { ContentItem.new(fixture) } + let(:world_index) { WorldIndex.new(content_item) } + let(:world_index_presenter) { described_class.new(world_index) } + + describe "#title" do + subject { world_index_presenter.title } + + it "returns the title from the content item" do + expect(subject).to eq("Help and services around the world") + end + end + + describe "#grouped_world_locations" do + subject { world_index_presenter.grouped_world_locations } + + it "groups world locations by letter" do + expect(subject.length).to be 25 # No locations beginning with `X` + expect(subject.first.first).to eq "A" + expect(subject.last.first).to eq "Z" + end + + it "disregards the `The` prefix of world location names when grouping" do + g_group = subject.find { |group| group.first == "G" } + g_group_locations = g_group.last + + expect(g_group_locations.first["name"]).to eq "The Gambia" + end + end + + describe "#world_locations_count" do + subject { world_index_presenter.world_locations_count } + + it "returns the number of world locations" do + expect(subject).to be 229 + end + end + + describe "#world_location_link" do + subject { world_index_presenter.world_location_link(location) } + + context "when the location is active" do + let(:location) do + { + "active": true, + "name": "Afghanistan", + "slug": "afghanistan", + }.with_indifferent_access + end + + it "returns a link to the location" do + expect(subject).to eq "Afghanistan" + end + end + + context "when the location is inactive" do + let(:location) do + { + "active": false, + "name": "United Kingdom", + "slug": "united-kingdom", + }.with_indifferent_access + end + + it "returns the location" do + expect(subject).to eq "United Kingdom" + end + end + end + + describe "#filter_terms" do + let(:location) do + { + "name": "United Kingdom", + "slug": "united-kingdom", + }.with_indifferent_access + end + + subject { world_index_presenter.filter_terms(location) } + + it "returns the joined name and slug" do + expect(subject).to eq "united-kingdom United Kingdom" + end + end + + describe "#international_delegations_count" do + subject { world_index_presenter.international_delegations_count } + + it "returns the number of world locations" do + expect(subject).to be 10 + end + end +end