Skip to content

Commit dd57f77

Browse files
committed
1558 adding quality statements to filter outputs page
1 parent df6e308 commit dd57f77

File tree

4 files changed

+67
-8
lines changed

4 files changed

+67
-8
lines changed

mapper/census.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/ONSdigital/dp-api-clients-go/v2/population"
1313
"github.com/ONSdigital/dp-frontend-dataset-controller/helpers"
1414
sharedModel "github.com/ONSdigital/dp-frontend-dataset-controller/model"
15+
"github.com/ONSdigital/dp-frontend-dataset-controller/model/datasetLandingPageCensus"
1516
coreModel "github.com/ONSdigital/dp-renderer/v2/model"
1617
)
1718

@@ -146,3 +147,12 @@ func getDataLayerJavaScript(analytics map[string]string) template.JS {
146147
jsonStr, _ := json.Marshal(analytics)
147148
return template.JS(`dataLayer.push(` + string(jsonStr) + `);`)
148149
}
150+
151+
// formatPanels is a helper function given an array of panels will format the final panel with the appropriate css class
152+
func formatPanels(panels []datasetLandingPageCensus.Panel) []datasetLandingPageCensus.Panel {
153+
if len(panels) > 0 {
154+
panelLen := len(panels)
155+
panels[panelLen-1].CssClasses = append(panels[panelLen-1].CssClasses, "ons-u-mb-l")
156+
}
157+
return panels
158+
}

mapper/census_filter_outputs.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func CreateCensusFilterOutputsPage(ctx context.Context, req *http.Request, baseP
6969
}
7070

7171
// DIMENSIONS
72-
p.DatasetLandingPage.Dimensions = mapFilterOutputDims(fDims, queryStrValues, req.URL.Path, p.DatasetLandingPage.IsMultivariate)
72+
p.DatasetLandingPage.Dimensions, p.DatasetLandingPage.QualityStatements = mapFilterOutputDims(fDims, queryStrValues, req.URL.Path, lang, p.DatasetLandingPage.IsMultivariate)
7373
coverage := sharedModel.Dimension{
7474
IsCoverage: true,
7575
IsDefaultCoverage: hasNoAreaOptions,
@@ -125,15 +125,17 @@ func CreateCensusFilterOutputsPage(ctx context.Context, req *http.Request, baseP
125125
}
126126
}
127127

128+
// FINAL FORMATTING
129+
p.DatasetLandingPage.QualityStatements = formatPanels(p.DatasetLandingPage.QualityStatements)
130+
128131
return p
129132
}
130133

131134
// mapFilterOutputDims links dimension options to FilterDimensions and prepares them for display
132-
func mapFilterOutputDims(dims []sharedModel.FilterDimension, queryStrValues []string, path string, isMultivariate bool) []sharedModel.Dimension {
135+
func mapFilterOutputDims(dims []sharedModel.FilterDimension, queryStrValues []string, path, lang string, isMultivariate bool) (dimensions []sharedModel.Dimension, qs []datasetLandingPageCensus.Panel) {
133136
sort.Slice(dims, func(i, j int) bool {
134137
return *dims[i].IsAreaType
135138
})
136-
dimensions := []sharedModel.Dimension{}
137139
for _, dim := range dims {
138140
var isAreaType bool
139141
if helpers.IsBoolPtr(dim.IsAreaType) {
@@ -165,9 +167,15 @@ func mapFilterOutputDims(dims []sharedModel.FilterDimension, queryStrValues []st
165167
q.Add(queryStrKey, pDim.ID)
166168
}
167169
pDim.TruncateLink = generateTruncatePath(path, pDim.ID, q)
170+
if dim.QualityStatementText != "" && dim.QualitySummaryURL != "" {
171+
qs = append(qs, datasetLandingPageCensus.Panel{
172+
Body: []string{fmt.Sprintf("<p>%s</p>%s", dim.QualityStatementText, helper.Localise("QualityNoticeReadMore", lang, 1, dim.QualitySummaryURL))},
173+
CssClasses: []string{"ons-u-mt-no"},
174+
})
175+
}
168176
dimensions = append(dimensions, pDim)
169177
}
170-
return dimensions
178+
return dimensions, qs
171179
}
172180

173181
// getFilterAnalytics returns a map to add to the data layer which will be used on file download

mapper/census_filter_outputs_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,50 @@ func TestCreateCensusFilterOutputsPagination(t *testing.T) {
433433
})
434434
}
435435

436+
func TestCreateCensusFilterOutputsQualityNotices(t *testing.T) {
437+
helper.InitialiseLocalisationsHelper(mocks.MockAssetFunction)
438+
req := httptest.NewRequest("", "/", nil)
439+
pageModel := coreModel.Page{}
440+
contacts := getTestContacts()
441+
relatedContent := getTestRelatedContent()
442+
datasetModel := getTestDatasetDetails(contacts, relatedContent)
443+
datasetModel.Type = "multivariate"
444+
serviceMessage := getTestServiceMessage()
445+
emergencyBanner := getTestEmergencyBanner()
446+
447+
Convey("given a request for a filter outputs census landing page", t, func() {
448+
version := getTestVersionDetails(1, getTestDefaultDimensions(), getTestDownloads([]string{"xlsx"}), nil)
449+
filterDims := []sharedModel.FilterDimension{getTestFilterDimension("geography", true, []string{"option 1", "option 2"}, 2), getTestFilterDimension("first", false, []string{}, 2), getTestFilterDimension("second", false, []string{}, 2)}
450+
filterOutputs := filter.Model{
451+
Downloads: getTestFilterDownloads([]string{"xlsx"}),
452+
}
453+
454+
Convey("when there is a quality notice on the dimension", func() {
455+
filterDims[0].QualityStatementText = "This is a quality notice statement"
456+
filterDims[0].QualitySummaryURL = "https://quality-notice-1.com"
457+
filterDims[1].QualityStatementText = "This is another quality notice statement"
458+
filterDims[1].QualitySummaryURL = "https://quality-notice-2.com"
459+
460+
page := CreateCensusFilterOutputsPage(context.Background(), req, pageModel, datasetModel, version, "", false, []dataset.Version{version}, 1, "/a/version/1", "", []string{}, 50, false, true, filterOutputs, filterDims, serviceMessage, emergencyBanner, true, population.GetDimensionsResponse{}, cantabular.GetBlockedAreaCountResult{}, population.GetPopulationTypeResponse{})
461+
462+
Convey("then the 'quality notice' panel is displayed", func() {
463+
mockPanel := []datasetLandingPageCensus.Panel{
464+
{
465+
Body: []string{"<p>This is a quality notice statement</p>Read more about this"},
466+
CssClasses: []string{"ons-u-mt-no"},
467+
},
468+
{
469+
Body: []string{"<p>This is another quality notice statement</p>Read more about this"},
470+
CssClasses: []string{"ons-u-mt-no", "ons-u-mb-l"},
471+
},
472+
}
473+
So(page.DatasetLandingPage.QualityStatements, ShouldHaveLength, 2)
474+
So(page.DatasetLandingPage.QualityStatements, ShouldResemble, mockPanel)
475+
})
476+
})
477+
})
478+
}
479+
436480
func TestCreateCensusFilterOutputsAnalytics(t *testing.T) {
437481
Convey("given we have changed area_type only", t, func() {
438482
filterDimensions := []sharedModel.FilterDimension{

mapper/census_landing_page.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,7 @@ func CreateCensusLandingPage(ctx context.Context, req *http.Request, basePage co
7272
p.PreGTMJavaScript = append(p.PreGTMJavaScript, getDataLayerJavaScript(getAnalytics(p.DatasetLandingPage.Dimensions)))
7373

7474
// FINAL FORMATTING
75-
if len(p.DatasetLandingPage.QualityStatements) > 0 {
76-
qsLen := len(p.DatasetLandingPage.QualityStatements)
77-
p.DatasetLandingPage.QualityStatements[qsLen-1].CssClasses = append(p.DatasetLandingPage.QualityStatements[qsLen-1].CssClasses, "ons-u-mb-l")
78-
}
75+
p.DatasetLandingPage.QualityStatements = formatPanels(p.DatasetLandingPage.QualityStatements)
7976

8077
return p
8178
}

0 commit comments

Comments
 (0)