From 7b82b877f68a07dcf75314bb6dcbc2561d133f0a Mon Sep 17 00:00:00 2001 From: j-corry Date: Wed, 20 Sep 2023 16:29:30 +0100 Subject: [PATCH 1/6] - Update from main --- coverage/.last_run.json | 2 +- coverage/.resultset.json | 1973 +++- coverage/index.html | 19449 +++++++++++++++++++++++++++++++++++-- 3 files changed, 20730 insertions(+), 694 deletions(-) diff --git a/coverage/.last_run.json b/coverage/.last_run.json index 1b2b83e4..66c8434a 100644 --- a/coverage/.last_run.json +++ b/coverage/.last_run.json @@ -1,5 +1,5 @@ { "result": { - "line": 59.21 + "line": 95.28 } } diff --git a/coverage/.resultset.json b/coverage/.resultset.json index 0876d8a0..3ea4b5d0 100644 --- a/coverage/.resultset.json +++ b/coverage/.resultset.json @@ -245,9 +245,9 @@ 1, null, null, - 0, + 3, null, - 0, + 2, null, null ] @@ -258,7 +258,7 @@ null, 1, null, - 102, + 104, null, null, null @@ -286,14 +286,14 @@ null, 1, null, - 51, + 52, null, null, - 51, - 51, + 52, + 52, null, null, - 51, + 52, null, null, null @@ -400,15 +400,15 @@ null, null, 1, - 51, + 54, null, null, 1, - 0, + 1, null, null, 1, - 0, + 2, null, null, 1, @@ -422,7 +422,7 @@ null, null, 1, - 0, + 2, null, null, 1, @@ -445,38 +445,39 @@ 1, null, 1, - 51, + 228, null, null, 1, null, null, - 0, + 3, null, - 0, + 3, null, null, 1, null, - 158, + 163, null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, - 151, null, - 150, + 158, + null, + 152, null, null, 1, - 201, + 208, null, - 200, + 202, null, null, 1, @@ -487,57 +488,57 @@ null, null, 1, - 101, + 102, null, 0, null, null, 1, - 0, + 6, null, - 0, + 2, null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, - 101, + 106, null, - 100, + 102, null, null, 1, - 0, + 9, null, - 0, + 5, null, null, 1, - 0, + 2, null, - 0, + 1, null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, null, null, - 201, + 206, null, null, 1, null, null, - 51, + 54, null, null, 1, @@ -550,23 +551,23 @@ null, null, null, - 51, + 52, null, 0, null, null, 1, - 151, + 155, null, - 150, + 151, null, null, 1, null, 1, - 0, + 3, null, - 0, + 1, null, 0, null, @@ -574,18 +575,18 @@ null, 0, null, - 0, + 2, null, null, null, 1, null, - 0, + 10, null, - 0, + 5, null, null, - 0, + 5, null, null, null @@ -596,11 +597,11 @@ 1, null, 1, - 51, + 96, null, null, 1, - 51, + 53, null, null, 1, @@ -615,17 +616,17 @@ null, null, null, - 57, - 14, - 14, - 14, - 14, - 14, + 61, + 16, + 16, + 16, + 16, + 16, null, - 14, + 16, null, null, - 12, + 13, null, null, null, @@ -633,7 +634,7 @@ null, null, null, - 12, + 13, null, null, null, @@ -641,7 +642,7 @@ null, null, null, - 12, + 13, null, null, null, @@ -651,50 +652,50 @@ null, null, null, - 12, + 13, null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, null, - 201, + 205, null, - 200, + 201, null, null, 1, - 101, + 105, null, - 100, + 101, null, null, 1, - 101, + 105, null, - 100, + 101, null, null, 1, - 51, + 56, null, - 50, + 52, null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, - 401, + 411, null, - 400, + 405, null, null ] @@ -712,87 +713,87 @@ 1, null, 1, - 0, + 47, null, null, 1, - 0, + 1, null, null, 1, - 0, + 1, null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, null, null, - 0, + 3, null, - 0, + 1, null, null, 1, null, null, null, - 0, + 3, null, - 0, + 1, null, null, 1, null, null, null, - 0, + 6, null, - 0, + 3, null, null, 1, - 0, + 4, null, - 0, + 2, null, - 0, + 1, null, null, 1, - 0, + 4, null, - 0, - 0, + 2, + 2, null, - 0, + 1, null, null, 1, null, null, - 0, + 2, null, - 0, + 1, null, null, 1, - 0, + 4, null, - 0, - 0, + 2, + 2, null, - 0, + 1, null, null, 1, null, null, - 0, + 4, null, null ] @@ -802,79 +803,82 @@ 1, null, 1, - 0, + 57, null, null, 1, - 0, + 1, null, null, 1, - 0, + 1, null, null, 1, - 0, + 6, null, - 0, + 1, null, null, 1, - 0, + 9, null, null, 1, - 0, + 8, null, null, 1, - 0, + 7, null, null, 1, null, - 0, + 6, null, - 0, + 2, null, - 0, + 1, null, - 0, + 1, null, null, 1, - 0, + 5, null, null, 1, null, null, - 0, + null, + 4, null, null, 1, - 0, + 6, null, - 0, + 5, null, - 0, + 4, null, - 0, + 3, null, - 0, + 2, null, - 0, + 1, null, null, null, null, 1, null, + 0, null, + 0, null, null, 1, - 0, + 1, null, 0, null, @@ -882,21 +886,21 @@ null, null, 1, - 0, + 4, null, - 0, - 0, + 2, + 2, null, - 0, + 1, null, null, 1, - 0, + 4, null, - 0, - 0, + 2, + 2, null, - 0, + 1, null, null, 1, @@ -909,15 +913,15 @@ null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, - 0, + 4, null, - 0, + 2, null, null, 1, @@ -927,26 +931,30 @@ null, null, 1, - 0, + 2, null, 0, null, null, 1, - 0, + 4, null, - 0, + 2, null, - 0, + 1, null, null, 1, null, null, null, - 0, + 3, + null, + 1, + null, + null, + 1, null, - 0, null, null ] @@ -956,15 +964,15 @@ 1, null, 1, - 0, + 22, null, null, 1, - 0, + 1, null, null, 1, - 0, + 1, null, null, 1, @@ -980,32 +988,32 @@ null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, - 0, + 4, null, - 0, - 0, + 2, + 2, null, - 0, + 1, null, null, 1, - 0, + 4, null, - 0, + 2, null, - 0, + 1, null, null ] @@ -1028,8 +1036,1671 @@ 1, null ] + }, + "/Users/jon.corry/RubymineProjects/search-prototype/spec/models/api_call_spec.rb": { + "lines": [ + 1, + null, + 1, + 3, + 1, + 2, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null + ] + }, + "/Users/jon.corry/RubymineProjects/search-prototype/spec/models/content_object_spec.rb": { + "lines": [ + 1, + null, + 1, + null, + 1, + 1, + 2, + 1, + 1, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 2, + 2, + 1, + 1, + null, + null, + 1, + 2, + 2, + null, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 2, + 2, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 2, + null, + 1, + 1, + 1, + null, + null, + null, + null, + null + ] + }, + "/Users/jon.corry/RubymineProjects/search-prototype/spec/models/edm_spec.rb": { + "lines": [ + 1, + null, + 1, + 13, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + 2, + null, + 1, + 1, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + 2, + 1, + 1, + null, + null, + 1, + 2, + 1, + 2, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 1, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + null + ] + }, + "/Users/jon.corry/RubymineProjects/search-prototype/spec/models/research_briefing_spec.rb": { + "lines": [ + 1, + null, + 1, + 15, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + 2, + null, + 1, + 1, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + 2, + null, + 1, + 1, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + 2, + null, + 1, + 1, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null + ] + }, + "/Users/jon.corry/RubymineProjects/search-prototype/spec/models/written_question_spec.rb": { + "lines": [ + 1, + null, + 1, + 16, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 4, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 4, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 4, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 5, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 2, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 2, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 7, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + null, + 1, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + 2, + 1, + 1, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + null, + 1, + 2, + 1, + 1, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + null, + null + ] + }, + "/Users/jon.corry/RubymineProjects/search-prototype/spec/models/written_statement_spec.rb": { + "lines": [ + 1, + null, + 1, + 9, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + null, + null, + null, + 1, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + null, + null, + 1, + null, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + 1, + 0, + null, + null, + null, + 1, + 1, + null, + 1, + 0, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 2, + null, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + 1, + 1, + 2, + 1, + 1, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + null, + null + ] + }, + "/Users/jon.corry/RubymineProjects/search-prototype/spec/requests/content_objects_spec.rb": { + "lines": [ + 1, + null, + 1, + 1, + 2, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null + ] + }, + "/Users/jon.corry/RubymineProjects/search-prototype/spec/requests/edm_spec.rb": { + "lines": [ + 1, + null, + 1, + 1, + 2, + null, + 1, + 1, + 1, + 1, + 1, + null, + null, + null, + 1, + 1, + 1, + null, + 1, + 50, + 100, + null, + 50, + 50, + 50, + 50, + 50, + null, + 50, + 50, + 50, + 50, + 50, + null, + 50, + 50, + 1109, + null, + null, + null, + 50, + 50, + 950, + null, + null, + null, + 50, + 0, + 0, + null, + null, + null, + null, + null, + null, + null + ] } }, - "timestamp": 1695204044 + "timestamp": 1695223703 } } diff --git a/coverage/index.html b/coverage/index.html index 2dcfcbb4..168c0f1d 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -5,7 +5,7 @@ - + @@ -14,7 +14,7 @@ loading
-
Generated 2023-09-20T11:00:44+01:00
+
Generated 2023-09-20T16:28:23+01:00
@@ -22,15 +22,15 @@

All Files ( - - 59.22% + + 95.28% covered at - 12.26 + 7.41 hits/line ) @@ -39,15 +39,15 @@

- 31 files in total. + 39 files in total.
- 358 relevant lines, - 212 lines covered and - 146 lines missed. - ( - 59.22% + 1230 relevant lines, + 1172 lines covered and + 58 lines missed. + ( + 95.28% )
@@ -110,7 +110,7 @@

7 7 0 - 29.57 + 30.14 @@ -138,12 +138,12 @@

app/helpers/application_helper.rb - 60.00 % + 100.00 % 12 5 - 3 - 2 - 0.60 + 5 + 0 + 1.60 @@ -154,7 +154,7 @@

3 3 0 - 34.67 + 35.33 @@ -204,12 +204,12 @@

app/models/api_call.rb - 70.00 % + 85.00 % 39 20 - 14 - 6 - 3.20 + 17 + 3 + 3.60 @@ -226,23 +226,23 @@

app/models/content_object.rb - 56.72 % - 149 + 86.57 % + 150 67 - 38 - 29 - 27.48 + 58 + 9 + 31.82 app/models/edm.rb - 90.00 % + 100.00 % 104 40 - 36 - 4 - 51.45 + 40 + 0 + 54.25 @@ -259,34 +259,34 @@

app/models/research_briefing.rb - 34.21 % + 100.00 % 86 38 - 13 - 25 - 0.34 + 38 + 0 + 3.03 app/models/written_question.rb - 32.39 % - 150 - 71 - 23 - 48 - 0.32 + 85.14 % + 157 + 74 + 63 + 11 + 2.65 app/models/written_statement.rb - 35.71 % + 85.71 % 55 28 - 10 - 18 - 0.36 + 24 + 4 + 2.07 @@ -411,6 +411,94 @@

+ + spec/models/api_call_spec.rb + 100.00 % + 32 + 13 + 13 + 0 + 1.23 + + + + + spec/models/content_object_spec.rb + 100.00 % + 69 + 40 + 40 + 0 + 1.28 + + + + + spec/models/edm_spec.rb + 98.42 % + 391 + 190 + 187 + 3 + 1.22 + + + + + spec/models/research_briefing_spec.rb + 98.54 % + 397 + 206 + 203 + 3 + 1.21 + + + + + spec/models/written_question_spec.rb + 98.85 % + 454 + 262 + 259 + 3 + 1.21 + + + + + spec/models/written_statement_spec.rb + 94.78 % + 218 + 115 + 109 + 6 + 1.14 + + + + + spec/requests/content_objects_spec.rb + 100.00 % + 14 + 9 + 9 + 0 + 1.11 + + + + + spec/requests/edm_spec.rb + 94.12 % + 56 + 34 + 32 + 2 + 87.44 + + +

@@ -801,8 +889,8 @@

-
  • - 51 +
  • + 52 @@ -834,8 +922,8 @@

  • -
  • - 51 +
  • + 52 @@ -845,8 +933,8 @@

  • -
  • - 51 +
  • + 52 @@ -878,8 +966,8 @@

  • -
  • - 51 +
  • + 52 @@ -1674,8 +1762,8 @@

    app/helpers/application_helper.rb

    - - 60.0% + + 100.0% lines covered @@ -1685,8 +1773,8 @@

    5 relevant lines. - 3 lines covered and - 2 lines missed. + 5 lines covered and + 0 lines missed.
    @@ -1774,8 +1862,8 @@

    -
  • - +
  • + 3 @@ -1796,8 +1884,8 @@

  • -
  • - +
  • + 2 @@ -1904,8 +1992,8 @@

  • -
  • - 102 +
  • + 104 @@ -2245,8 +2333,8 @@

    app/models/api_call.rb

    - - 70.0% + + 85.0% lines covered @@ -2256,8 +2344,8 @@

    20 relevant lines. - 14 lines covered and - 6 lines missed. + 17 lines covered and + 3 lines missed.
    @@ -2378,8 +2466,8 @@

    -
  • - 51 +
  • + 54 @@ -2422,8 +2510,8 @@

  • -
  • - +
  • + 1 @@ -2466,8 +2554,8 @@

  • -
  • - +
  • + 2 @@ -2620,8 +2708,8 @@

  • -
  • - +
  • + 2 @@ -2769,8 +2857,8 @@

    app/models/content_object.rb

    - - 56.72% + + 86.57% lines covered @@ -2780,8 +2868,8 @@

    67 relevant lines. - 38 lines covered and - 29 lines missed. + 58 lines covered and + 9 lines missed.
    @@ -2847,8 +2935,8 @@

    -
  • - 51 +
  • + 228 @@ -2913,8 +3001,8 @@

  • -
  • - +
  • + 3 @@ -2935,8 +3023,8 @@

  • -
  • - +
  • + 3 @@ -2990,8 +3078,8 @@

  • -
  • - 158 +
  • + 163 @@ -3034,8 +3122,8 @@

  • -
  • - +
  • + 3 @@ -3056,8 +3144,8 @@

  • -
  • - +
  • + 1 @@ -3100,8 +3188,19 @@

  • -
  • - 151 +
  • + + + + + + # typically used for Hansard col refs +
  • +
    + +
    +
  • + 158 @@ -3111,7 +3210,7 @@

  • -
  • +
  • @@ -3122,8 +3221,8 @@

  • -
  • - 150 +
  • + 152 @@ -3133,7 +3232,7 @@

  • -
  • +
  • @@ -3144,7 +3243,7 @@

  • -
  • +
  • @@ -3155,7 +3254,7 @@

  • -
  • +
  • 1 @@ -3166,8 +3265,8 @@

  • -
  • - 201 +
  • + 208 @@ -3177,7 +3276,7 @@

  • -
  • +
  • @@ -3188,8 +3287,8 @@

  • -
  • - 200 +
  • + 202 @@ -3199,7 +3298,7 @@

  • -
  • +
  • @@ -3210,7 +3309,7 @@

  • -
  • +
  • @@ -3221,7 +3320,7 @@

  • -
  • +
  • 1 @@ -3232,7 +3331,7 @@

  • -
  • +
  • @@ -3243,7 +3342,7 @@

  • -
  • +
  • @@ -3254,7 +3353,7 @@

  • -
  • +
  • @@ -3265,7 +3364,7 @@

  • -
  • +
  • @@ -3276,7 +3375,7 @@

  • -
  • +
  • @@ -3287,7 +3386,7 @@

  • -
  • +
  • @@ -3298,7 +3397,7 @@

  • -
  • +
  • 1 @@ -3309,8 +3408,8 @@

  • -
  • - 101 +
  • + 102 @@ -3320,7 +3419,7 @@

  • -
  • +
  • @@ -3331,7 +3430,7 @@

  • -
  • +
  • @@ -3342,7 +3441,7 @@

  • -
  • +
  • @@ -3353,7 +3452,7 @@

  • -
  • +
  • @@ -3364,7 +3463,7 @@

  • -
  • +
  • 1 @@ -3375,8 +3474,8 @@

  • -
  • - +
  • + 6 @@ -3386,7 +3485,7 @@

  • -
  • +
  • @@ -3397,8 +3496,8 @@

  • -
  • - +
  • + 2 @@ -3408,7 +3507,7 @@

  • -
  • +
  • @@ -3419,7 +3518,7 @@

  • -
  • +
  • @@ -3430,7 +3529,7 @@

  • -
  • +
  • 1 @@ -3441,8 +3540,8 @@

  • -
  • - +
  • + 3 @@ -3452,7 +3551,7 @@

  • -
  • +
  • @@ -3463,8 +3562,8 @@

  • -
  • - +
  • + 1 @@ -3474,7 +3573,7 @@

  • -
  • +
  • @@ -3485,7 +3584,7 @@

  • -
  • +
  • @@ -3496,7 +3595,7 @@

  • -
  • +
  • 1 @@ -3507,8 +3606,8 @@

  • -
  • - 101 +
  • + 106 @@ -3518,7 +3617,7 @@

  • -
  • +
  • @@ -3529,8 +3628,8 @@

  • -
  • - 100 +
  • + 102 @@ -3540,7 +3639,7 @@

  • -
  • +
  • @@ -3551,7 +3650,7 @@

  • -
  • +
  • @@ -3562,7 +3661,7 @@

  • -
  • +
  • 1 @@ -3573,8 +3672,8 @@

  • -
  • - +
  • + 9 @@ -3584,7 +3683,7 @@

  • -
  • +
  • @@ -3595,8 +3694,8 @@

  • -
  • - +
  • + 5 @@ -3606,7 +3705,7 @@

  • -
  • +
  • @@ -3617,7 +3716,7 @@

  • -
  • +
  • @@ -3628,7 +3727,7 @@

  • -
  • +
  • 1 @@ -3639,8 +3738,8 @@

  • -
  • - +
  • + 2 @@ -3650,7 +3749,7 @@

  • -
  • +
  • @@ -3661,8 +3760,8 @@

  • -
  • - +
  • + 1 @@ -3672,7 +3771,7 @@

  • -
  • +
  • @@ -3683,7 +3782,7 @@

  • -
  • +
  • @@ -3694,7 +3793,7 @@

  • -
  • +
  • 1 @@ -3705,8 +3804,8 @@

  • -
  • - +
  • + 3 @@ -3716,7 +3815,7 @@

  • -
  • +
  • @@ -3727,8 +3826,8 @@

  • -
  • - +
  • + 1 @@ -3738,7 +3837,7 @@

  • -
  • +
  • @@ -3749,7 +3848,7 @@

  • -
  • +
  • @@ -3760,7 +3859,7 @@

  • -
  • +
  • 1 @@ -3771,7 +3870,7 @@

  • -
  • +
  • @@ -3782,7 +3881,7 @@

  • -
  • +
  • @@ -3793,8 +3892,8 @@

  • -
  • - 201 +
  • + 206 @@ -3804,7 +3903,7 @@

  • -
  • +
  • @@ -3815,7 +3914,7 @@

  • -
  • +
  • @@ -3826,7 +3925,7 @@

  • -
  • +
  • 1 @@ -3837,7 +3936,7 @@

  • -
  • +
  • @@ -3848,7 +3947,7 @@

  • -
  • +
  • @@ -3859,8 +3958,8 @@

  • -
  • - 51 +
  • + 54 @@ -3870,7 +3969,7 @@

  • -
  • +
  • @@ -3881,7 +3980,7 @@

  • -
  • +
  • @@ -3892,7 +3991,7 @@

  • -
  • +
  • 1 @@ -3903,7 +4002,7 @@

  • -
  • +
  • @@ -3914,7 +4013,7 @@

  • -
  • +
  • @@ -3925,7 +4024,7 @@

  • -
  • +
  • @@ -3936,7 +4035,7 @@

  • -
  • +
  • @@ -3947,7 +4046,7 @@

  • -
  • +
  • @@ -3958,7 +4057,7 @@

  • -
  • +
  • 1 @@ -3969,7 +4068,7 @@

  • -
  • +
  • @@ -3980,7 +4079,7 @@

  • -
  • +
  • @@ -3991,7 +4090,7 @@

  • -
  • +
  • @@ -4002,8 +4101,8 @@

  • -
  • - 51 +
  • + 52 @@ -4013,7 +4112,7 @@

  • -
  • +
  • @@ -4024,7 +4123,7 @@

  • -
  • +
  • @@ -4035,7 +4134,7 @@

  • -
  • +
  • @@ -4046,7 +4145,7 @@

  • -
  • +
  • @@ -4057,7 +4156,7 @@

  • -
  • +
  • 1 @@ -4068,8 +4167,8 @@

  • -
  • - 151 +
  • + 155 @@ -4079,7 +4178,7 @@

  • -
  • +
  • @@ -4090,8 +4189,8 @@

  • -
  • - 150 +
  • + 151 @@ -4101,7 +4200,7 @@

  • -
  • +
  • @@ -4112,7 +4211,7 @@

  • -
  • +
  • @@ -4123,7 +4222,7 @@

  • -
  • +
  • 1 @@ -4134,7 +4233,7 @@

  • -
  • +
  • @@ -4145,7 +4244,7 @@

  • -
  • +
  • 1 @@ -4156,8 +4255,8 @@

  • -
  • - +
  • + 3 @@ -4167,7 +4266,7 @@

  • -
  • +
  • @@ -4178,8 +4277,8 @@

  • -
  • - +
  • + 1 @@ -4189,7 +4288,7 @@

  • -
  • +
  • @@ -4200,7 +4299,7 @@

  • -
  • +
  • @@ -4211,7 +4310,7 @@

  • -
  • +
  • @@ -4222,7 +4321,7 @@

  • -
  • +
  • @@ -4233,7 +4332,7 @@

  • -
  • +
  • @@ -4244,7 +4343,7 @@

  • -
  • +
  • @@ -4255,7 +4354,7 @@

  • -
  • +
  • @@ -4266,8 +4365,8 @@

  • -
  • - +
  • + 2 @@ -4277,7 +4376,7 @@

  • -
  • +
  • @@ -4288,7 +4387,7 @@

  • -
  • +
  • @@ -4299,7 +4398,7 @@

  • -
  • +
  • @@ -4310,7 +4409,7 @@

  • -
  • +
  • 1 @@ -4321,7 +4420,7 @@

  • -
  • +
  • @@ -4332,8 +4431,8 @@

  • -
  • - +
  • + 10 @@ -4343,7 +4442,7 @@

  • -
  • +
  • @@ -4354,8 +4453,8 @@

  • -
  • - +
  • + 5 @@ -4365,7 +4464,7 @@

  • -
  • +
  • @@ -4376,7 +4475,7 @@

  • -
  • +
  • @@ -4387,8 +4486,8 @@

  • -
  • - +
  • + 5 @@ -4398,7 +4497,7 @@

  • -
  • +
  • @@ -4409,7 +4508,7 @@

  • -
  • +
  • @@ -4420,7 +4519,7 @@

  • -
  • +
  • @@ -4439,8 +4538,8 @@

    app/models/edm.rb

    - - 90.0% + + 100.0% lines covered @@ -4450,8 +4549,8 @@

    40 relevant lines. - 36 lines covered and - 4 lines missed. + 40 lines covered and + 0 lines missed.
    @@ -4495,8 +4594,8 @@

    -
  • - 51 +
  • + 96 @@ -4539,8 +4638,8 @@

  • -
  • - 51 +
  • + 53 @@ -4704,8 +4803,8 @@

  • -
  • - 57 +
  • + 61 @@ -4715,8 +4814,8 @@

  • -
  • - 14 +
  • + 16 @@ -4726,8 +4825,8 @@

  • -
  • - 14 +
  • + 16 @@ -4737,8 +4836,8 @@

  • -
  • - 14 +
  • + 16 @@ -4748,8 +4847,8 @@

  • -
  • - 14 +
  • + 16 @@ -4759,8 +4858,8 @@

  • -
  • - 14 +
  • + 16 @@ -4781,8 +4880,8 @@

  • -
  • - 14 +
  • + 16 @@ -4814,8 +4913,8 @@

  • -
  • - 12 +
  • + 13 @@ -4902,8 +5001,8 @@

  • -
  • - 12 +
  • + 13 @@ -4990,8 +5089,8 @@

  • -
  • - 12 +
  • + 13 @@ -5100,8 +5199,8 @@

  • -
  • - 12 +
  • + 13 @@ -5144,8 +5243,8 @@

  • -
  • - +
  • + 3 @@ -5166,8 +5265,8 @@

  • -
  • - +
  • + 1 @@ -5221,8 +5320,8 @@

  • -
  • - 201 +
  • + 205 @@ -5243,8 +5342,8 @@

  • -
  • - 200 +
  • + 201 @@ -5287,8 +5386,8 @@

  • -
  • - 101 +
  • + 105 @@ -5309,8 +5408,8 @@

  • -
  • - 100 +
  • + 101 @@ -5353,8 +5452,8 @@

  • -
  • - 101 +
  • + 105 @@ -5375,8 +5474,8 @@

  • -
  • - 100 +
  • + 101 @@ -5419,8 +5518,8 @@

  • -
  • - 51 +
  • + 56 @@ -5441,8 +5540,8 @@

  • -
  • - 50 +
  • + 52 @@ -5485,8 +5584,8 @@

  • -
  • - +
  • + 3 @@ -5507,8 +5606,8 @@

  • -
  • - +
  • + 1 @@ -5551,8 +5650,8 @@

  • -
  • - 401 +
  • + 411 @@ -5573,8 +5672,8 @@

  • -
  • - 400 +
  • + 405 @@ -5689,8 +5788,8 @@

    app/models/research_briefing.rb

    - - 34.21% + + 100.0% lines covered @@ -5700,8 +5799,8 @@

    38 relevant lines. - 13 lines covered and - 25 lines missed. + 38 lines covered and + 0 lines missed.
    @@ -5745,8 +5844,8 @@

    -
  • - +
  • + 47 @@ -5789,8 +5888,8 @@

  • -
  • - +
  • + 1 @@ -5833,8 +5932,8 @@

  • -
  • - +
  • + 1 @@ -5877,8 +5976,8 @@

  • -
  • - +
  • + 3 @@ -5899,8 +5998,8 @@

  • -
  • - +
  • + 1 @@ -5965,8 +6064,8 @@

  • -
  • - +
  • + 3 @@ -5987,8 +6086,8 @@

  • -
  • - +
  • + 1 @@ -6064,8 +6163,8 @@

  • -
  • - +
  • + 3 @@ -6086,8 +6185,8 @@

  • -
  • - +
  • + 1 @@ -6163,8 +6262,8 @@

  • -
  • - +
  • + 6 @@ -6185,8 +6284,8 @@

  • -
  • - +
  • + 3 @@ -6229,8 +6328,8 @@

  • -
  • - +
  • + 4 @@ -6251,8 +6350,8 @@

  • -
  • - +
  • + 2 @@ -6273,8 +6372,8 @@

  • -
  • - +
  • + 1 @@ -6317,8 +6416,8 @@

  • -
  • - +
  • + 4 @@ -6339,8 +6438,8 @@

  • -
  • - +
  • + 2 @@ -6350,8 +6449,8 @@

  • -
  • - +
  • + 2 @@ -6372,8 +6471,8 @@

  • -
  • - +
  • + 1 @@ -6438,8 +6537,8 @@

  • -
  • - +
  • + 2 @@ -6460,8 +6559,8 @@

  • -
  • - +
  • + 1 @@ -6504,8 +6603,8 @@

  • -
  • - +
  • + 4 @@ -6526,8 +6625,8 @@

  • -
  • - +
  • + 2 @@ -6537,8 +6636,8 @@

  • -
  • - +
  • + 2 @@ -6559,8 +6658,8 @@

  • -
  • - +
  • + 1 @@ -6625,8 +6724,8 @@

  • -
  • - +
  • + 4 @@ -6666,8 +6765,8 @@

    app/models/written_question.rb

    - - 32.39% + + 85.14% lines covered @@ -6676,9 +6775,9 @@

    - 71 relevant lines. - 23 lines covered and - 48 lines missed. + 74 relevant lines. + 63 lines covered and + 11 lines missed.
    @@ -6722,8 +6821,8 @@

    -
  • - +
  • + 57 @@ -6766,8 +6865,8 @@

  • -
  • - +
  • + 1 @@ -6810,8 +6909,8 @@

  • -
  • - +
  • + 1 @@ -6854,8 +6953,8 @@

  • -
  • - +
  • + 6 @@ -6876,8 +6975,8 @@

  • -
  • - +
  • + 1 @@ -6920,8 +7019,8 @@

  • -
  • - +
  • + 9 @@ -6964,8 +7063,8 @@

  • -
  • - +
  • + 8 @@ -7008,8 +7107,8 @@

  • -
  • - +
  • + 7 @@ -7063,8 +7162,8 @@

  • -
  • - +
  • + 6 @@ -7085,8 +7184,8 @@

  • -
  • - +
  • + 2 @@ -7107,8 +7206,8 @@

  • -
  • - +
  • + 1 @@ -7129,8 +7228,8 @@

  • -
  • - +
  • + 1 @@ -7173,8 +7272,8 @@

  • -
  • - +
  • + 5 @@ -7234,23 +7333,34 @@

    - # This wasn't mentioned in Anya's email. Need to confirm whether it's been dropped. + # Prior to July 2014, correctedWmsMc_b flag + related links will contain a link to the correction

  • -
  • +
  • + # After July 2014, correctedWmsMc_b + correctingItem_uri OR correctingItem_t +
  • +
    + +
    +
  • + 4 + + + + state == 'Corrected'
  • -
  • +
  • @@ -7261,7 +7371,7 @@

  • -
  • +
  • @@ -7272,7 +7382,7 @@

  • -
  • +
  • 1 @@ -7283,8 +7393,8 @@

  • -
  • - +
  • + 6 @@ -7294,7 +7404,7 @@

  • -
  • +
  • @@ -7305,8 +7415,8 @@

  • -
  • - +
  • + 5 @@ -7316,7 +7426,7 @@

  • -
  • +
  • @@ -7327,8 +7437,8 @@

  • -
  • - +
  • + 4 @@ -7338,7 +7448,7 @@

  • -
  • +
  • @@ -7349,8 +7459,8 @@

  • -
  • - +
  • + 3 @@ -7360,7 +7470,7 @@

  • -
  • +
  • @@ -7371,8 +7481,8 @@

  • -
  • - +
  • + 2 @@ -7382,7 +7492,7 @@

  • -
  • +
  • @@ -7393,8 +7503,8 @@

  • -
  • - +
  • + 1 @@ -7404,7 +7514,7 @@

  • -
  • +
  • @@ -7415,7 +7525,7 @@

  • -
  • +
  • @@ -7426,7 +7536,7 @@

  • -
  • +
  • @@ -7437,7 +7547,7 @@

  • -
  • +
  • @@ -7448,7 +7558,7 @@

  • -
  • +
  • 1 @@ -7459,29 +7569,51 @@

  • -
  • +
  • - # return if content_object_data['date_dt'].blank? + # UIN with optional Hansard reference in same field
  • -
  • +
  • - nil + return if content_object_data['identifier_t'].blank?
  • -
  • +
  • + + + + + + +
  • +
    + +
    +
  • + + + + + + content_object_data['identifier_t'] +
  • +
    + +
    +
  • @@ -7492,7 +7624,7 @@

  • -
  • +
  • @@ -7503,7 +7635,7 @@

  • -
  • +
  • 1 @@ -7514,8 +7646,8 @@

  • -
  • - +
  • + 1 @@ -7525,7 +7657,7 @@

  • -
  • +
  • @@ -7536,7 +7668,7 @@

  • -
  • +
  • @@ -7547,7 +7679,7 @@

  • -
  • +
  • @@ -7558,7 +7690,7 @@

  • -
  • +
  • @@ -7569,7 +7701,7 @@

  • -
  • +
  • @@ -7580,7 +7712,7 @@

  • -
  • +
  • @@ -7591,7 +7723,7 @@

  • -
  • +
  • 1 @@ -7602,8 +7734,8 @@

  • -
  • - +
  • + 4 @@ -7613,7 +7745,7 @@

  • -
  • +
  • @@ -7624,8 +7756,8 @@

  • -
  • - +
  • + 2 @@ -7635,8 +7767,8 @@

  • -
  • - +
  • + 2 @@ -7646,7 +7778,7 @@

  • -
  • +
  • @@ -7657,8 +7789,8 @@

  • -
  • - +
  • + 1 @@ -7668,7 +7800,7 @@

  • -
  • +
  • @@ -7679,7 +7811,7 @@

  • -
  • +
  • @@ -7690,7 +7822,7 @@

  • -
  • +
  • 1 @@ -7701,8 +7833,8 @@

  • -
  • - +
  • + 4 @@ -7712,7 +7844,7 @@

  • -
  • +
  • @@ -7723,8 +7855,8 @@

  • -
  • - +
  • + 2 @@ -7734,8 +7866,8 @@

  • -
  • - +
  • + 2 @@ -7745,7 +7877,7 @@

  • -
  • +
  • @@ -7756,8 +7888,8 @@

  • -
  • - +
  • + 1 @@ -7767,7 +7899,7 @@

  • -
  • +
  • @@ -7778,7 +7910,7 @@

  • -
  • +
  • @@ -7789,7 +7921,7 @@

  • -
  • +
  • 1 @@ -7800,7 +7932,7 @@

  • -
  • +
  • @@ -7811,7 +7943,7 @@

  • -
  • +
  • @@ -7822,7 +7954,7 @@

  • -
  • +
  • @@ -7833,7 +7965,7 @@

  • -
  • +
  • @@ -7844,7 +7976,7 @@

  • -
  • +
  • @@ -7855,7 +7987,7 @@

  • -
  • +
  • @@ -7866,7 +7998,7 @@

  • -
  • +
  • @@ -7877,7 +8009,7 @@

  • -
  • +
  • @@ -7888,7 +8020,7 @@

  • -
  • +
  • 1 @@ -7899,8 +8031,8 @@

  • -
  • - +
  • + 3 @@ -7910,7 +8042,7 @@

  • -
  • +
  • @@ -7921,8 +8053,8 @@

  • -
  • - +
  • + 1 @@ -7932,7 +8064,7 @@

  • -
  • +
  • @@ -7943,7 +8075,7 @@

  • -
  • +
  • @@ -7954,7 +8086,7 @@

  • -
  • +
  • 1 @@ -7965,8 +8097,8 @@

  • -
  • - +
  • + 4 @@ -7976,7 +8108,7 @@

  • -
  • +
  • @@ -7987,8 +8119,8 @@

  • -
  • - +
  • + 2 @@ -7998,7 +8130,7 @@

  • -
  • +
  • @@ -8009,7 +8141,7 @@

  • -
  • +
  • @@ -8020,7 +8152,7 @@

  • -
  • +
  • 1 @@ -8031,7 +8163,7 @@

  • -
  • +
  • @@ -8042,7 +8174,7 @@

  • -
  • +
  • @@ -8053,7 +8185,7 @@

  • -
  • +
  • @@ -8064,7 +8196,7 @@

  • -
  • +
  • @@ -8075,7 +8207,7 @@

  • -
  • +
  • @@ -8086,7 +8218,7 @@

  • -
  • +
  • 1 @@ -8097,8 +8229,8 @@

  • -
  • - +
  • + 2 @@ -8108,7 +8240,7 @@

  • -
  • +
  • @@ -8119,7 +8251,7 @@

  • -
  • +
  • @@ -8130,7 +8262,7 @@

  • -
  • +
  • @@ -8141,7 +8273,7 @@

  • -
  • +
  • @@ -8152,7 +8284,7 @@

  • -
  • +
  • 1 @@ -8163,8 +8295,8 @@

  • -
  • - +
  • + 4 @@ -8174,7 +8306,7 @@

  • -
  • +
  • @@ -8185,8 +8317,8 @@

  • -
  • - +
  • + 2 @@ -8196,7 +8328,7 @@

  • -
  • +
  • @@ -8207,8 +8339,8 @@

  • -
  • - +
  • + 1 @@ -8218,7 +8350,7 @@

  • -
  • +
  • @@ -8229,7 +8361,7 @@

  • -
  • +
  • @@ -8240,7 +8372,7 @@

  • -
  • +
  • 1 @@ -8251,7 +8383,7 @@

  • -
  • +
  • @@ -8262,7 +8394,7 @@

  • -
  • +
  • @@ -8273,7 +8405,7 @@

  • -
  • +
  • @@ -8284,8 +8416,8 @@

  • -
  • - +
  • + 3 @@ -8295,7 +8427,7 @@

  • -
  • +
  • @@ -8306,8 +8438,8 @@

  • -
  • - +
  • + 1 @@ -8317,7 +8449,7 @@

  • -
  • +
  • @@ -8328,7 +8460,51 @@

  • -
  • +
  • + + + + + + +
  • +
    + +
    +
  • + 1 + + + + + def procedure +
  • +
    + +
    +
  • + + + + + + # no data on this currently +
  • +
    + +
    +
  • + + + + + + end +
  • +
    + +
    +
  • @@ -8347,8 +8523,8 @@

    app/models/written_statement.rb

    - - 35.71% + + 85.71% lines covered @@ -8358,8 +8534,8 @@

    28 relevant lines. - 10 lines covered and - 18 lines missed. + 24 lines covered and + 4 lines missed.
    @@ -8403,8 +8579,8 @@

    -
  • - +
  • + 22 @@ -8447,8 +8623,8 @@

  • -
  • - +
  • + 1 @@ -8491,8 +8667,8 @@

  • -
  • - +
  • + 1 @@ -8667,8 +8843,8 @@

  • -
  • - +
  • + 3 @@ -8689,8 +8865,8 @@

  • -
  • - +
  • + 1 @@ -8733,8 +8909,8 @@

  • -
  • - +
  • + 3 @@ -8755,8 +8931,8 @@

  • -
  • - +
  • + 1 @@ -8799,8 +8975,8 @@

  • -
  • - +
  • + 4 @@ -8821,8 +8997,8 @@

  • -
  • - +
  • + 2 @@ -8832,8 +9008,8 @@

  • -
  • - +
  • + 2 @@ -8854,8 +9030,8 @@

  • -
  • - +
  • + 1 @@ -8898,8 +9074,8 @@

  • -
  • - +
  • + 4 @@ -8920,8 +9096,8 @@

  • -
  • - +
  • + 2 @@ -8942,8 +9118,8 @@

  • -
  • - +
  • + 1 @@ -11324,6 +11500,18195 @@

    + end +

  • +
    + + + +

  • + + +
    +
    +

    spec/models/api_call_spec.rb

    +

    + + 100.0% + + + lines covered +

    + + + +
    + 13 relevant lines. + 13 lines covered and + 0 lines missed. +
    + + + +
    + +
    +    
      + +
      +
    1. + 1 + + + + + require 'rails_helper' +
    2. +
      + +
      +
    3. + + + + + + +
    4. +
      + +
      +
    5. + 1 + + + + + RSpec.describe ApiCall, type: :model do +
    6. +
      + +
      +
    7. + 3 + + + + + let!(:api_call) { ApiCall.new({ object_uri: 'test_uri' }) } +
    8. +
      + +
      +
    9. + 1 + + + + + let!(:mock_response) { { +
    10. +
      + +
      +
    11. + 2 + + + + + "responseHeader" => { +
    12. +
      + +
      +
    13. + + + + + + "status" => 0, +
    14. +
      + +
      +
    15. + + + + + + "QTime" => 4, +
    16. +
      + +
      +
    17. + + + + + + "params" => { "q" => "externalLocation_uri:\"test_external_location_uri\"", "wt" => "json" } +
    18. +
      + +
      +
    19. + + + + + + }, +
    20. +
      + +
      +
    21. + + + + + + "response" => { +
    22. +
      + +
      +
    23. + + + + + + "numFound" => 1, +
    24. +
      + +
      +
    25. + + + + + + "start" => 0, +
    26. +
      + +
      +
    27. + + + + + + "docs" => [{ test_string: 'test' }] +
    28. +
      + +
      +
    29. + + + + + + }, +
    30. +
      + +
      +
    31. + + + + + + "highlighting" => { "test_url" => {} } +
    32. +
      + +
      +
    33. + + + + + + } } +
    34. +
      + +
      +
    35. + + + + + + +
    36. +
      + +
      +
    37. + 1 + + + + + describe 'object_data' do +
    38. +
      + +
      +
    39. + 1 + + + + + it 'returns the data for the object' do +
    40. +
      + +
      +
    41. + 1 + + + + + allow(api_call).to receive(:evaluated_response).and_return(mock_response) +
    42. +
      + +
      +
    43. + 1 + + + + + expect(api_call.object_data).to eq({ test_string: 'test' }) +
    44. +
      + +
      +
    45. + + + + + + end +
    46. +
      + +
      +
    47. + + + + + + end +
    48. +
      + +
      +
    49. + + + + + + +
    50. +
      + +
      +
    51. + 1 + + + + + describe 'ruby_uri' do +
    52. +
      + +
      +
    53. + 1 + + + + + it 'returns a ruby uri with the base prepended' do +
    54. +
      + +
      +
    55. + 1 + + + + + expect(api_call.ruby_uri).to be_a(URI) +
    56. +
      + +
      +
    57. + 1 + + + + + expect(api_call.ruby_uri.to_s).to eq('https://api.parliament.uk/search-mock/objects.json?object=test_uri') +
    58. +
      + +
      +
    59. + + + + + + end +
    60. +
      + +
      +
    61. + + + + + + end +
    62. +
      + +
      +
    63. + + + + + + end +
    64. +
      + +
    +
    +
    + + +
    +
    +

    spec/models/content_object_spec.rb

    +

    + + 100.0% + + + lines covered +

    + + + +
    + 40 relevant lines. + 40 lines covered and + 0 lines missed. +
    + + + +
    + +
    +    
      + +
      +
    1. + 1 + + + + + require 'rails_helper' +
    2. +
      + +
      +
    3. + + + + + + +
    4. +
      + +
      +
    5. + 1 + + + + + RSpec.describe ContentObject, type: :model do +
    6. +
      + +
      +
    7. + + + + + + +
    8. +
      + +
      +
    9. + 1 + + + + + describe 'self.generate' do +
    10. +
      + +
      +
    11. + 1 + + + + + context 'when passed invalid data' do +
    12. +
      + +
      +
    13. + 2 + + + + + let!(:test_data) { { "some_data" => [12345] } } +
    14. +
      + +
      +
    15. + 1 + + + + + it 'returns an instance of the ContentObject class' do +
    16. +
      + +
      +
    17. + 1 + + + + + expect(ContentObject.generate(test_data)).to be_an_instance_of(ContentObject) +
    18. +
      + +
      +
    19. + + + + + + end +
    20. +
      + +
      +
    21. + + + + + + end +
    22. +
      + +
      +
    23. + 1 + + + + + context 'when passed an unknown object type' do +
    24. +
      + +
      +
    25. + 2 + + + + + let!(:test_data) { { "type_ses" => [12345] } } +
    26. +
      + +
      +
    27. + + + + + + +
    28. +
      + +
      +
    29. + 1 + + + + + it 'returns an instance of the ContentObject class' do +
    30. +
      + +
      +
    31. + 1 + + + + + expect(ContentObject.generate(test_data)).to be_an_instance_of(ContentObject) +
    32. +
      + +
      +
    33. + + + + + + end +
    34. +
      + +
      +
    35. + + + + + + end +
    36. +
      + +
      +
    37. + 1 + + + + + context 'when passed a known object type' do +
    38. +
      + +
      +
    39. + 2 + + + + + let!(:test_data) { { "type_ses" => [90996] } } +
    40. +
      + +
      +
    41. + + + + + + +
    42. +
      + +
      +
    43. + 1 + + + + + it 'returns an instance of the type class' do +
    44. +
      + +
      +
    45. + 1 + + + + + expect(ContentObject.generate(test_data)).to be_an_instance_of(Edm) +
    46. +
      + +
      +
    47. + + + + + + end +
    48. +
      + +
      +
    49. + + + + + + end +
    50. +
      + +
      +
    51. + + + + + + end +
    52. +
      + +
      +
    53. + + + + + + +
    54. +
      + +
      +
    55. + 1 + + + + + describe 'page_title' do +
    56. +
      + +
      +
    57. + 1 + + + + + context 'when passed invalid data' do +
    58. +
      + +
      +
    59. + 2 + + + + + let!(:content_object) { ContentObject.new(test_data) } +
    60. +
      + +
      +
    61. + 2 + + + + + let!(:test_data) { { "some_data" => [12345] } } +
    62. +
      + +
      +
    63. + 1 + + + + + it 'returns nil' do +
    64. +
      + +
      +
    65. + 1 + + + + + expect(content_object.page_title).to be_nil +
    66. +
      + +
      +
    67. + + + + + + end +
    68. +
      + +
      +
    69. + + + + + + end +
    70. +
      + +
      +
    71. + 1 + + + + + context 'when title is present in the data' do +
    72. +
      + +
      +
    73. + 2 + + + + + let!(:content_object) { ContentObject.new(test_data) } +
    74. +
      + +
      +
    75. + 2 + + + + + let!(:test_data) { { "title_t" => ['The Title'] } } +
    76. +
      + +
      +
    77. + + + + + + +
    78. +
      + +
      +
    79. + 1 + + + + + it 'returns the title text as an array item' do +
    80. +
      + +
      +
    81. + 1 + + + + + expect(content_object.page_title).to be_an(Array) +
    82. +
      + +
      +
    83. + 1 + + + + + expect(content_object.page_title.first).to eq('The Title') +
    84. +
      + +
      +
    85. + + + + + + end +
    86. +
      + +
      +
    87. + + + + + + end +
    88. +
      + +
      +
    89. + + + + + + end +
    90. +
      + +
      +
    91. + + + + + + +
    92. +
      + +
      +
    93. + 1 + + + + + describe 'has_link?' do +
    94. +
      + +
      +
    95. + 1 + + + + + context 'when display link is nil' do +
    96. +
      + +
      +
    97. + 2 + + + + + let!(:content_object) { ContentObject.new(test_data) } +
    98. +
      + +
      +
    99. + 2 + + + + + let!(:test_data) { { "some_data" => [12345] } } +
    100. +
      + +
      +
    101. + + + + + + +
    102. +
      + +
      +
    103. + 1 + + + + + it 'returns false' do +
    104. +
      + +
      +
    105. + 1 + + + + + allow(content_object).to receive(:display_link).and_return(nil) +
    106. +
      + +
      +
    107. + 1 + + + + + expect(content_object.has_link?).to eq(false) +
    108. +
      + +
      +
    109. + + + + + + end +
    110. +
      + +
      +
    111. + + + + + + end +
    112. +
      + +
      +
    113. + + + + + + +
    114. +
      + +
      +
    115. + 1 + + + + + context 'when display link is populated' do +
    116. +
      + +
      +
    117. + 2 + + + + + let!(:content_object) { ContentObject.new(test_data) } +
    118. +
      + +
      +
    119. + 2 + + + + + let!(:test_data) { { "some_data" => [12345] } } +
    120. +
      + +
      +
    121. + + + + + + +
    122. +
      + +
      +
    123. + 1 + + + + + it 'returns true' do +
    124. +
      + +
      +
    125. + 1 + + + + + allow(content_object).to receive(:display_link).and_return('www.example.com') +
    126. +
      + +
      +
    127. + 1 + + + + + expect(content_object.has_link?).to eq(true) +
    128. +
      + +
      +
    129. + + + + + + end +
    130. +
      + +
      +
    131. + + + + + + end +
    132. +
      + +
      +
    133. + + + + + + end +
    134. +
      + +
      +
    135. + + + + + + +
    136. +
      + +
      +
    137. + + + + + + end +
    138. +
      + +
    +
    +
    + + +
    +
    +

    spec/models/edm_spec.rb

    +

    + + 98.42% + + + lines covered +

    + + + +
    + 190 relevant lines. + 187 lines covered and + 3 lines missed. +
    + + + +
    + +
    +    
      + +
      +
    1. + 1 + + + + + require 'rails_helper' +
    2. +
      + +
      +
    3. + + + + + + +
    4. +
      + +
      +
    5. + 1 + + + + + RSpec.describe Edm, type: :model do +
    6. +
      + +
      +
    7. + 13 + + + + + let!(:edm) { Edm.new({}) } +
    8. +
      + +
      +
    9. + + + + + + +
    10. +
      + +
      +
    11. + 1 + + + + + describe 'template' do +
    12. +
      + +
      +
    13. + 1 + + + + + it 'returns a string' do +
    14. +
      + +
      +
    15. + 1 + + + + + expect(edm.template).to be_a(String) +
    16. +
      + +
      +
    17. + + + + + + end +
    18. +
      + +
      +
    19. + + + + + + end +
    20. +
      + +
      +
    21. + + + + + + +
    22. +
      + +
      +
    23. + 1 + + + + + describe 'motion_text' do +
    24. +
      + +
      +
    25. + 1 + + + + + context 'where there is no data' do +
    26. +
      + +
      +
    27. + 1 + + + + + it 'returns nil' do +
    28. +
      + +
      +
    29. + 1 + + + + + expect(edm.motion_text).to be_nil +
    30. +
      + +
      +
    31. + + + + + + end +
    32. +
      + +
      +
    33. + + + + + + end +
    34. +
      + +
      +
    35. + + + + + + +
    36. +
      + +
      +
    37. + 1 + + + + + context 'where there is an empty array' do +
    38. +
      + +
      +
    39. + 2 + + + + + let!(:edm) { Edm.new({ 'motionText_t' => [] }) } +
    40. +
      + +
      +
    41. + 1 + + + + + it 'returns nil' do +
    42. +
      + +
      +
    43. + 1 + + + + + expect(edm.motion_text).to be_nil +
    44. +
      + +
      +
    45. + + + + + + end +
    46. +
      + +
      +
    47. + + + + + + end +
    48. +
      + +
      +
    49. + + + + + + +
    50. +
      + +
      +
    51. + 1 + + + + + context 'where data exists' do +
    52. +
      + +
      +
    53. + 2 + + + + + let!(:edm) { Edm.new({ 'motionText_t' => ['first item', 'second item'] }) } +
    54. +
      + +
      +
    55. + + + + + + +
    56. +
      + +
      +
    57. + 1 + + + + + it 'returns the first item' do +
    58. +
      + +
      +
    59. + 1 + + + + + expect(edm.motion_text).to eq('first item') +
    60. +
      + +
      +
    61. + + + + + + end +
    62. +
      + +
      +
    63. + + + + + + end +
    64. +
      + +
      +
    65. + + + + + + end +
    66. +
      + +
      +
    67. + + + + + + +
    68. +
      + +
      +
    69. + 1 + + + + + describe 'primary_sponsor' do +
    70. +
      + +
      +
    71. + 1 + + + + + context 'where there is no data' do +
    72. +
      + +
      +
    73. + 1 + + + + + it 'returns nil' do +
    74. +
      + +
      +
    75. + 1 + + + + + expect(edm.primary_sponsor).to be_nil +
    76. +
      + +
      +
    77. + + + + + + end +
    78. +
      + +
      +
    79. + + + + + + end +
    80. +
      + +
      +
    81. + + + + + + +
    82. +
      + +
      +
    83. + 1 + + + + + context 'where there is an empty array' do +
    84. +
      + +
      +
    85. + 2 + + + + + let!(:edm) { Edm.new({ 'primarySponsorPrinted_s' => [] }) } +
    86. +
      + +
      +
    87. + 1 + + + + + it 'returns nil' do +
    88. +
      + +
      +
    89. + 1 + + + + + expect(edm.primary_sponsor).to be_nil +
    90. +
      + +
      +
    91. + + + + + + end +
    92. +
      + +
      +
    93. + + + + + + end +
    94. +
      + +
      +
    95. + + + + + + +
    96. +
      + +
      +
    97. + 1 + + + + + context 'where data exists' do +
    98. +
      + +
      +
    99. + 2 + + + + + let!(:edm) { Edm.new({ 'primarySponsorPrinted_s' => ['first item', 'second item'] }) } +
    100. +
      + +
      +
    101. + + + + + + +
    102. +
      + +
      +
    103. + 1 + + + + + it 'returns the first item' do +
    104. +
      + +
      +
    105. + 1 + + + + + expect(edm.primary_sponsor).to eq('first item') +
    106. +
      + +
      +
    107. + + + + + + end +
    108. +
      + +
      +
    109. + + + + + + end +
    110. +
      + +
      +
    111. + + + + + + end +
    112. +
      + +
      +
    113. + + + + + + +
    114. +
      + +
      +
    115. + 1 + + + + + describe 'session' do +
    116. +
      + +
      +
    117. + 1 + + + + + context 'where there is no data' do +
    118. +
      + +
      +
    119. + 1 + + + + + it 'returns nil' do +
    120. +
      + +
      +
    121. + 1 + + + + + expect(edm.session).to be_nil +
    122. +
      + +
      +
    123. + + + + + + end +
    124. +
      + +
      +
    125. + + + + + + end +
    126. +
      + +
      +
    127. + + + + + + +
    128. +
      + +
      +
    129. + 1 + + + + + context 'where there is an empty array' do +
    130. +
      + +
      +
    131. + 2 + + + + + let!(:edm) { Edm.new({ 'session_t' => [] }) } +
    132. +
      + +
      +
    133. + 1 + + + + + it 'returns nil' do +
    134. +
      + +
      +
    135. + 1 + + + + + expect(edm.session).to be_nil +
    136. +
      + +
      +
    137. + + + + + + end +
    138. +
      + +
      +
    139. + + + + + + end +
    140. +
      + +
      +
    141. + + + + + + +
    142. +
      + +
      +
    143. + 1 + + + + + context 'where data exists' do +
    144. +
      + +
      +
    145. + 2 + + + + + let!(:edm) { Edm.new({ 'session_t' => ['first item', 'second item'] }) } +
    146. +
      + +
      +
    147. + + + + + + +
    148. +
      + +
      +
    149. + 1 + + + + + it 'returns the first item' do +
    150. +
      + +
      +
    151. + 1 + + + + + expect(edm.session).to eq('first item') +
    152. +
      + +
      +
    153. + + + + + + end +
    154. +
      + +
      +
    155. + + + + + + end +
    156. +
      + +
      +
    157. + + + + + + end +
    158. +
      + +
      +
    159. + + + + + + +
    160. +
      + +
      +
    161. + 1 + + + + + describe 'reference' do +
    162. +
      + +
      +
    163. + 1 + + + + + context 'where there is no data' do +
    164. +
      + +
      +
    165. + 1 + + + + + it 'returns nil' do +
    166. +
      + +
      +
    167. + 1 + + + + + expect(edm.reference).to be_nil +
    168. +
      + +
      +
    169. + + + + + + end +
    170. +
      + +
      +
    171. + + + + + + end +
    172. +
      + +
      +
    173. + + + + + + +
    174. +
      + +
      +
    175. + 1 + + + + + context 'where there is an empty array' do +
    176. +
      + +
      +
    177. + 2 + + + + + let!(:edm) { Edm.new({ 'identifier_t' => [] }) } +
    178. +
      + +
      +
    179. + 1 + + + + + it 'returns nil' do +
    180. +
      + +
      +
    181. + 1 + + + + + expect(edm.reference).to be_nil +
    182. +
      + +
      +
    183. + + + + + + end +
    184. +
      + +
      +
    185. + + + + + + end +
    186. +
      + +
      +
    187. + + + + + + +
    188. +
      + +
      +
    189. + 1 + + + + + context 'where data exists' do +
    190. +
      + +
      +
    191. + 2 + + + + + let!(:edm) { Edm.new({ 'identifier_t' => ['first item', 'second item'] }) } +
    192. +
      + +
      +
    193. + + + + + + +
    194. +
      + +
      +
    195. + 1 + + + + + it 'returns the first item' do +
    196. +
      + +
      +
    197. + 1 + + + + + expect(edm.reference).to eq('first item') +
    198. +
      + +
      +
    199. + + + + + + end +
    200. +
      + +
      +
    201. + + + + + + end +
    202. +
      + +
      +
    203. + + + + + + end +
    204. +
      + +
      +
    205. + + + + + + +
    206. +
      + +
      +
    207. + 1 + + + + + describe 'other_supporters' do +
    208. +
      + +
      +
    209. + 1 + + + + + context 'where there is no data' do +
    210. +
      + +
      +
    211. + 1 + + + + + it 'returns nil' do +
    212. +
      + +
      +
    213. + 1 + + + + + expect(edm.other_supporters).to be_nil +
    214. +
      + +
      +
    215. + + + + + + end +
    216. +
      + +
      +
    217. + + + + + + end +
    218. +
      + +
      +
    219. + + + + + + +
    220. +
      + +
      +
    221. + 1 + + + + + context 'where there is an empty array' do +
    222. +
      + +
      +
    223. + 2 + + + + + let!(:edm) { Edm.new({ 'signedMember_ses' => [] }) } +
    224. +
      + +
      +
    225. + 1 + + + + + it 'returns nil' do +
    226. +
      + +
      +
    227. + 1 + + + + + expect(edm.other_supporters).to be_nil +
    228. +
      + +
      +
    229. + + + + + + end +
    230. +
      + +
      +
    231. + + + + + + end +
    232. +
      + +
      +
    233. + + + + + + +
    234. +
      + +
      +
    235. + 1 + + + + + context 'where data exists' do +
    236. +
      + +
      +
    237. + 2 + + + + + let!(:edm) { Edm.new({ 'signedMember_ses' => ['first item', 'second item'] }) } +
    238. +
      + +
      +
    239. + + + + + + +
    240. +
      + +
      +
    241. + 1 + + + + + it 'returns all items' do +
    242. +
      + +
      +
    243. + 1 + + + + + expect(edm.other_supporters).to eq(['first item', 'second item']) +
    244. +
      + +
      +
    245. + + + + + + end +
    246. +
      + +
      +
    247. + + + + + + end +
    248. +
      + +
      +
    249. + + + + + + end +
    250. +
      + +
      +
    251. + + + + + + +
    252. +
      + +
      +
    253. + 1 + + + + + describe 'registered_interest_declared' do +
    254. +
      + +
      +
    255. + 1 + + + + + context 'where there is no data' do +
    256. +
      + +
      +
    257. + 1 + + + + + it 'returns nil' do +
    258. +
      + +
      +
    259. + 1 + + + + + expect(edm.registered_interest_declared).to be_nil +
    260. +
      + +
      +
    261. + + + + + + end +
    262. +
      + +
      +
    263. + + + + + + end +
    264. +
      + +
      +
    265. + + + + + + +
    266. +
      + +
      +
    267. + 1 + + + + + context 'where there is an empty array' do +
    268. +
      + +
      +
    269. + 2 + + + + + let!(:edm) { Edm.new({ 'registeredInterest_b' => [] }) } +
    270. +
      + +
      +
    271. + 1 + + + + + it 'returns nil' do +
    272. +
      + +
      +
    273. + 1 + + + + + expect(edm.registered_interest_declared).to be_nil +
    274. +
      + +
      +
    275. + + + + + + end +
    276. +
      + +
      +
    277. + + + + + + end +
    278. +
      + +
      +
    279. + + + + + + +
    280. +
      + +
      +
    281. + 1 + + + + + context 'where data exists' do +
    282. +
      + +
      +
    283. + 1 + + + + + context 'where first item is false' do +
    284. +
      + +
      +
    285. + 2 + + + + + let!(:edm) { Edm.new({ 'registeredInterest_b' => ['false'] }) } +
    286. +
      + +
      +
    287. + + + + + + +
    288. +
      + +
      +
    289. + 1 + + + + + it 'returns "no"' do +
    290. +
      + +
      +
    291. + 1 + + + + + expect(edm.registered_interest_declared).to eq('No') +
    292. +
      + +
      +
    293. + + + + + + end +
    294. +
      + +
      +
    295. + + + + + + end +
    296. +
      + +
      +
    297. + 1 + + + + + context 'where first item is true' do +
    298. +
      + +
      +
    299. + 2 + + + + + let!(:edm) { Edm.new({ 'registeredInterest_b' => ['true'] }) } +
    300. +
      + +
      +
    301. + + + + + + +
    302. +
      + +
      +
    303. + 1 + + + + + it 'returns "yes"' do +
    304. +
      + +
      +
    305. + 1 + + + + + expect(edm.registered_interest_declared).to eq('Yes') +
    306. +
      + +
      +
    307. + + + + + + end +
    308. +
      + +
      +
    309. + + + + + + end +
    310. +
      + +
      +
    311. + + + + + + +
    312. +
      + +
      +
    313. + + + + + + end +
    314. +
      + +
      +
    315. + + + + + + end +
    316. +
      + +
      +
    317. + + + + + + +
    318. +
      + +
      +
    319. + 1 + + + + + describe 'date_tabled' do +
    320. +
      + +
      +
    321. + 1 + + + + + context 'where there is no data' do +
    322. +
      + +
      +
    323. + 1 + + + + + it 'returns nil' do +
    324. +
      + +
      +
    325. + 1 + + + + + expect(edm.date_tabled).to be_nil +
    326. +
      + +
      +
    327. + + + + + + end +
    328. +
      + +
      +
    329. + + + + + + end +
    330. +
      + +
      +
    331. + + + + + + +
    332. +
      + +
      +
    333. + 1 + + + + + context 'where there is an empty array' do +
    334. +
      + +
      +
    335. + 2 + + + + + let!(:edm) { Edm.new({ 'dateTabled_dt' => [] }) } +
    336. +
      + +
      +
    337. + 1 + + + + + it 'returns nil' do +
    338. +
      + +
      +
    339. + 1 + + + + + expect(edm.date_tabled).to be_nil +
    340. +
      + +
      +
    341. + + + + + + end +
    342. +
      + +
      +
    343. + + + + + + end +
    344. +
      + +
      +
    345. + + + + + + +
    346. +
      + +
      +
    347. + 1 + + + + + context 'where data exists' do +
    348. +
      + +
      +
    349. + 1 + + + + + context 'where data is a valid date' do +
    350. +
      + +
      +
    351. + 2 + + + + + let!(:edm) { Edm.new({ 'dateTabled_dt' => [Date.today, Date.yesterday] }) } +
    352. +
      + +
      +
    353. + 1 + + + + + it 'returns a date object for the first item' do +
    354. +
      + +
      +
    355. + 1 + + + + + expect(edm.date_tabled).to eq(Date.today) +
    356. +
      + +
      +
    357. + + + + + + end +
    358. +
      + +
      +
    359. + + + + + + end +
    360. +
      + +
      +
    361. + 1 + + + + + context 'where data is not a valid date' do +
    362. +
      + +
      +
    363. + 2 + + + + + let!(:edm) { Edm.new({ 'dateTabled_dt' => ['date', 'another date'] }) } +
    364. +
      + +
      +
    365. + 1 + + + + + it 'raises an error' do +
    366. +
      + +
      +
    367. + 2 + + + + + expect { edm.date_tabled }.to raise_error(Date::Error, 'invalid date') +
    368. +
      + +
      +
    369. + + + + + + end +
    370. +
      + +
      +
    371. + + + + + + end +
    372. +
      + +
      +
    373. + + + + + + end +
    374. +
      + +
      +
    375. + + + + + + end +
    376. +
      + +
      +
    377. + + + + + + +
    378. +
      + +
      +
    379. + 1 + + + + + describe 'bibliographic_citations' do +
    380. +
      + +
      +
    381. + 1 + + + + + context 'where there is no data' do +
    382. +
      + +
      +
    383. + 1 + + + + + it 'returns nil' do +
    384. +
      + +
      +
    385. + 1 + + + + + expect(edm.bibliographic_citations).to be_nil +
    386. +
      + +
      +
    387. + + + + + + end +
    388. +
      + +
      +
    389. + + + + + + end +
    390. +
      + +
      +
    391. + + + + + + +
    392. +
      + +
      +
    393. + 1 + + + + + context 'where there is an empty array' do +
    394. +
      + +
      +
    395. + 2 + + + + + let!(:edm) { Edm.new({ 'bibliographicCitation_s' => [] }) } +
    396. +
      + +
      +
    397. + 1 + + + + + it 'returns nil' do +
    398. +
      + +
      +
    399. + 1 + + + + + expect(edm.bibliographic_citations).to be_nil +
    400. +
      + +
      +
    401. + + + + + + end +
    402. +
      + +
      +
    403. + + + + + + end +
    404. +
      + +
      +
    405. + + + + + + +
    406. +
      + +
      +
    407. + 1 + + + + + context 'where data exists' do +
    408. +
      + +
      +
    409. + 2 + + + + + let!(:edm) { Edm.new({ 'bibliographicCitation_s' => ['first item', 'second item'] }) } +
    410. +
      + +
      +
    411. + + + + + + +
    412. +
      + +
      +
    413. + 1 + + + + + it 'returns all items as an array' do +
    414. +
      + +
      +
    415. + 1 + + + + + expect(edm.bibliographic_citations).to eq(['first item', 'second item']) +
    416. +
      + +
      +
    417. + + + + + + end +
    418. +
      + +
      +
    419. + + + + + + end +
    420. +
      + +
      +
    421. + + + + + + end +
    422. +
      + +
      +
    423. + + + + + + +
    424. +
      + +
      +
    425. + 1 + + + + + describe 'subjects' do +
    426. +
      + +
      +
    427. + 1 + + + + + context 'where there is no data' do +
    428. +
      + +
      +
    429. + 1 + + + + + it 'returns nil' do +
    430. +
      + +
      +
    431. + 1 + + + + + expect(edm.subjects).to be_nil +
    432. +
      + +
      +
    433. + + + + + + end +
    434. +
      + +
      +
    435. + + + + + + end +
    436. +
      + +
      +
    437. + + + + + + +
    438. +
      + +
      +
    439. + 1 + + + + + context 'where there is an empty array' do +
    440. +
      + +
      +
    441. + 2 + + + + + let!(:edm) { Edm.new({ 'subject_sesrollup' => [] }) } +
    442. +
      + +
      +
    443. + 1 + + + + + it 'returns nil' do +
    444. +
      + +
      +
    445. + 1 + + + + + expect(edm.subjects).to be_nil +
    446. +
      + +
      +
    447. + + + + + + end +
    448. +
      + +
      +
    449. + + + + + + end +
    450. +
      + +
      +
    451. + + + + + + +
    452. +
      + +
      +
    453. + 1 + + + + + context 'where data exists' do +
    454. +
      + +
      +
    455. + 2 + + + + + let!(:edm) { Edm.new({ 'subject_sesrollup' => ['first item', 'second item'] }) } +
    456. +
      + +
      +
    457. + + + + + + +
    458. +
      + +
      +
    459. + 1 + + + + + it 'returns all items as an array' do +
    460. +
      + +
      +
    461. + 1 + + + + + expect(edm.subjects).to eq(['first item', 'second item']) +
    462. +
      + +
      +
    463. + + + + + + end +
    464. +
      + +
      +
    465. + + + + + + end +
    466. +
      + +
      +
    467. + + + + + + end +
    468. +
      + +
      +
    469. + + + + + + +
    470. +
      + +
      +
    471. + + + + + + # disabled due to lack of test data +
    472. +
      + +
      +
    473. + 1 + + + + + xdescribe 'legislation' do +
    474. +
      + +
      +
    475. + 1 + + + + + context 'where there is no data' do +
    476. +
      + +
      +
    477. + 1 + + + + + it 'returns nil' do +
    478. +
      + +
      +
    479. + + + + + + expect(edm.legislation).to be_nil +
    480. +
      + +
      +
    481. + + + + + + end +
    482. +
      + +
      +
    483. + + + + + + end +
    484. +
      + +
      +
    485. + + + + + + +
    486. +
      + +
      +
    487. + 1 + + + + + context 'where there is an empty array' do +
    488. +
      + +
      +
    489. + 1 + + + + + let!(:edm) { Edm.new({ '' => [] }) } +
    490. +
      + +
      +
    491. + 1 + + + + + it 'returns nil' do +
    492. +
      + +
      +
    493. + + + + + + expect(edm.legislation).to be_nil +
    494. +
      + +
      +
    495. + + + + + + end +
    496. +
      + +
      +
    497. + + + + + + end +
    498. +
      + +
      +
    499. + + + + + + +
    500. +
      + +
      +
    501. + 1 + + + + + context 'where data exists' do +
    502. +
      + +
      +
    503. + 1 + + + + + let!(:edm) { Edm.new({ '' => ['first item', 'second item'] }) } +
    504. +
      + +
      +
    505. + + + + + + +
    506. +
      + +
      +
    507. + 1 + + + + + it 'returns all items as an array' do +
    508. +
      + +
      +
    509. + + + + + + expect(edm.legislation).to eq(['first item', 'second item']) +
    510. +
      + +
      +
    511. + + + + + + end +
    512. +
      + +
      +
    513. + + + + + + end +
    514. +
      + +
      +
    515. + + + + + + end +
    516. +
      + +
      +
    517. + + + + + + +
    518. +
      + +
      +
    519. + 1 + + + + + describe 'external_location_uri' do +
    520. +
      + +
      +
    521. + 1 + + + + + context 'where there is no data' do +
    522. +
      + +
      +
    523. + 1 + + + + + it 'returns nil' do +
    524. +
      + +
      +
    525. + 1 + + + + + expect(edm.external_location_uri).to be_nil +
    526. +
      + +
      +
    527. + + + + + + end +
    528. +
      + +
      +
    529. + + + + + + end +
    530. +
      + +
      +
    531. + + + + + + +
    532. +
      + +
      +
    533. + 1 + + + + + context 'where there is an empty array' do +
    534. +
      + +
      +
    535. + 2 + + + + + let!(:edm) { Edm.new({ 'externalLocation_uri' => [] }) } +
    536. +
      + +
      +
    537. + 1 + + + + + it 'returns nil' do +
    538. +
      + +
      +
    539. + 1 + + + + + expect(edm.external_location_uri).to be_nil +
    540. +
      + +
      +
    541. + + + + + + end +
    542. +
      + +
      +
    543. + + + + + + end +
    544. +
      + +
      +
    545. + + + + + + +
    546. +
      + +
      +
    547. + 1 + + + + + context 'where data exists' do +
    548. +
      + +
      +
    549. + 2 + + + + + let!(:edm) { Edm.new({ 'externalLocation_uri' => ['first item', 'second item'] }) } +
    550. +
      + +
      +
    551. + + + + + + +
    552. +
      + +
      +
    553. + 1 + + + + + it 'returns the first item' do +
    554. +
      + +
      +
    555. + 1 + + + + + expect(edm.external_location_uri).to eq('first item') +
    556. +
      + +
      +
    557. + + + + + + end +
    558. +
      + +
      +
    559. + + + + + + end +
    560. +
      + +
      +
    561. + + + + + + end +
    562. +
      + +
      +
    563. + + + + + + +
    564. +
      + +
      +
    565. + 1 + + + + + describe 'amendment_text' do +
    566. +
      + +
      +
    567. + 1 + + + + + context 'where there is no data' do +
    568. +
      + +
      +
    569. + 1 + + + + + it 'returns nil' do +
    570. +
      + +
      +
    571. + 1 + + + + + expect(edm.amendment_text).to be_nil +
    572. +
      + +
      +
    573. + + + + + + end +
    574. +
      + +
      +
    575. + + + + + + end +
    576. +
      + +
      +
    577. + + + + + + +
    578. +
      + +
      +
    579. + 1 + + + + + context 'where there is an empty array' do +
    580. +
      + +
      +
    581. + 2 + + + + + let!(:edm) { Edm.new({ 'amendmentText_t' => [] }) } +
    582. +
      + +
      +
    583. + 1 + + + + + it 'returns nil' do +
    584. +
      + +
      +
    585. + 1 + + + + + expect(edm.amendment_text).to be_nil +
    586. +
      + +
      +
    587. + + + + + + end +
    588. +
      + +
      +
    589. + + + + + + end +
    590. +
      + +
      +
    591. + + + + + + +
    592. +
      + +
      +
    593. + 1 + + + + + context 'where data exists' do +
    594. +
      + +
      +
    595. + 2 + + + + + let!(:edm) { Edm.new({ 'amendmentText_t' => ['first item', 'second item'] }) } +
    596. +
      + +
      +
    597. + + + + + + +
    598. +
      + +
      +
    599. + 1 + + + + + it 'returns all items' do +
    600. +
      + +
      +
    601. + 1 + + + + + expect(edm.amendment_text).to eq(['first item', 'second item']) +
    602. +
      + +
      +
    603. + + + + + + end +
    604. +
      + +
      +
    605. + + + + + + end +
    606. +
      + +
      +
    607. + + + + + + end +
    608. +
      + +
      +
    609. + + + + + + +
    610. +
      + +
      +
    611. + 1 + + + + + describe 'amendments' do +
    612. +
      + +
      +
    613. + 1 + + + + + context 'where there is missing data' do +
    614. +
      + +
      +
    615. + 2 + + + + + let!(:edm) { Edm.new({}) } +
    616. +
      + +
      +
    617. + + + + + + +
    618. +
      + +
      +
    619. + 1 + + + + + it 'returns nil' do +
    620. +
      + +
      +
    621. + 1 + + + + + expect(edm.amendments).to eq(nil) +
    622. +
      + +
      +
    623. + + + + + + end +
    624. +
      + +
      +
    625. + + + + + + end +
    626. +
      + +
      +
    627. + + + + + + +
    628. +
      + +
      +
    629. + 1 + + + + + context 'where there is more than one amendment' do +
    630. +
      + +
      +
    631. + 2 + + + + + let!(:edm) { Edm.new({ +
    632. +
      + +
      +
    633. + + + + + + 'amendmentText_t' => ['first item', 'second item'], +
    634. +
      + +
      +
    635. + + + + + + 'amendment_numberOfSignatures_s' => [20, 10], +
    636. +
      + +
      +
    637. + + + + + + 'amendment_primarySponsorPrinted_t' => ['sponsor one', 'sponsor two'], +
    638. +
      + +
      +
    639. + + + + + + 'amendment_primarySponsorParty_ses' => [12345, 54321], +
    640. +
      + +
      +
    641. + + + + + + 'identifier_t' => ['main id', 'amendment 1 id', 'amendment 2 id'], +
    642. +
      + +
      +
    643. + + + + + + 'amendment_dateTabled_dt' => [DateTime.commercial(2022), DateTime.commercial(2021)], +
    644. +
      + +
      +
    645. + + + + + + }) } +
    646. +
      + +
      +
    647. + + + + + + +
    648. +
      + +
      +
    649. + 1 + + + + + it 'returns nil' do +
    650. +
      + +
      +
    651. + 1 + + + + + expect(edm.amendments).to be_nil +
    652. +
      + +
      +
    653. + + + + + + end +
    654. +
      + +
      +
    655. + + + + + + end +
    656. +
      + +
      +
    657. + + + + + + +
    658. +
      + +
      +
    659. + 1 + + + + + context 'where all data is present for one amendment' do +
    660. +
      + +
      +
    661. + 2 + + + + + let!(:edm) { Edm.new({ +
    662. +
      + +
      +
    663. + + + + + + 'amendmentText_t' => ['first item'], +
    664. +
      + +
      +
    665. + + + + + + 'amendment_numberOfSignatures_s' => [20], +
    666. +
      + +
      +
    667. + + + + + + 'amendment_primarySponsorPrinted_t' => ['sponsor one'], +
    668. +
      + +
      +
    669. + + + + + + 'amendment_primarySponsorParty_ses' => [12345], +
    670. +
      + +
      +
    671. + + + + + + 'identifier_t' => ['main id', 'amendment 1 id'], +
    672. +
      + +
      +
    673. + + + + + + 'amendment_dateTabled_dt' => [DateTime.commercial(2022)], +
    674. +
      + +
      +
    675. + + + + + + }) } +
    676. +
      + +
      +
    677. + + + + + + +
    678. +
      + +
      +
    679. + 1 + + + + + it 'returns all data grouped by amendment' do +
    680. +
      + +
      +
    681. + 1 + + + + + expect(edm.amendments).to eq( +
    682. +
      + +
      +
    683. + + + + + + [{ +
    684. +
      + +
      +
    685. + + + + + + date_tabled: DateTime.commercial(2022), +
    686. +
      + +
      +
    687. + + + + + + index: 0, +
    688. +
      + +
      +
    689. + + + + + + number_of_signatures: 20, +
    690. +
      + +
      +
    691. + + + + + + primary_sponsor: 'sponsor one', +
    692. +
      + +
      +
    693. + + + + + + primary_sponsor_party: 12345, +
    694. +
      + +
      +
    695. + + + + + + reference: 'amendment 1 id', +
    696. +
      + +
      +
    697. + + + + + + text: 'first item' +
    698. +
      + +
      +
    699. + + + + + + } +
    700. +
      + +
      +
    701. + + + + + + ] +
    702. +
      + +
      +
    703. + + + + + + ) +
    704. +
      + +
      +
    705. + + + + + + end +
    706. +
      + +
      +
    707. + + + + + + end +
    708. +
      + +
      +
    709. + + + + + + end +
    710. +
      + +
      +
    711. + + + + + + +
    712. +
      + +
      +
    713. + 1 + + + + + describe 'display_link' do +
    714. +
      + +
      +
    715. + 1 + + + + + context 'no links are present' do +
    716. +
      + +
      +
    717. + 2 + + + + + let!(:edm) { Edm.new({ 'internalLocation_uri' => [], 'externalLocation_uri' => [] }) } +
    718. +
      + +
      +
    719. + + + + + + +
    720. +
      + +
      +
    721. + 1 + + + + + it 'returns nil' do +
    722. +
      + +
      +
    723. + 1 + + + + + expect(edm.display_link).to be_nil +
    724. +
      + +
      +
    725. + + + + + + end +
    726. +
      + +
      +
    727. + + + + + + end +
    728. +
      + +
      +
    729. + + + + + + +
    730. +
      + +
      +
    731. + 1 + + + + + context 'internal link is present, external link is not present' do +
    732. +
      + +
      +
    733. + 2 + + + + + let!(:edm) { Edm.new({ 'internalLocation_uri' => ['www.example.com'], 'externalLocation_uri' => [] }) } +
    734. +
      + +
      +
    735. + + + + + + +
    736. +
      + +
      +
    737. + 1 + + + + + it 'returns nil' do +
    738. +
      + +
      +
    739. + 1 + + + + + expect(edm.display_link).to be_nil +
    740. +
      + +
      +
    741. + + + + + + end +
    742. +
      + +
      +
    743. + + + + + + end +
    744. +
      + +
      +
    745. + + + + + + +
    746. +
      + +
      +
    747. + 1 + + + + + context 'internal link is present, external link is present' do +
    748. +
      + +
      +
    749. + 2 + + + + + let!(:edm) { Edm.new({ 'internalLocation_uri' => ['www.example.com'], 'externalLocation_uri' => ['www.test.com'] }) } +
    750. +
      + +
      +
    751. + + + + + + +
    752. +
      + +
      +
    753. + 1 + + + + + it 'returns the external link' do +
    754. +
      + +
      +
    755. + 1 + + + + + expect(edm.display_link).to eq('www.test.com') +
    756. +
      + +
      +
    757. + + + + + + end +
    758. +
      + +
      +
    759. + + + + + + end +
    760. +
      + +
      +
    761. + + + + + + +
    762. +
      + +
      +
    763. + 1 + + + + + context 'internal link is not present, external link is present' do +
    764. +
      + +
      +
    765. + 2 + + + + + let!(:edm) { Edm.new({ 'internalLocation_uri' => [], 'externalLocation_uri' => ['www.test.com'] }) } +
    766. +
      + +
      +
    767. + + + + + + +
    768. +
      + +
      +
    769. + 1 + + + + + it 'returns the external link' do +
    770. +
      + +
      +
    771. + 1 + + + + + expect(edm.display_link).to eq('www.test.com') +
    772. +
      + +
      +
    773. + + + + + + end +
    774. +
      + +
      +
    775. + + + + + + end +
    776. +
      + +
      +
    777. + + + + + + end +
    778. +
      + +
      +
    779. + + + + + + +
    780. +
      + +
      +
    781. + + + + + + end +
    782. +
      + +
    +
    +
    + + +
    +
    +

    spec/models/research_briefing_spec.rb

    +

    + + 98.54% + + + lines covered +

    + + + +
    + 206 relevant lines. + 203 lines covered and + 3 lines missed. +
    + + + +
    + +
    +    
      + +
      +
    1. + 1 + + + + + require 'rails_helper' +
    2. +
      + +
      +
    3. + + + + + + +
    4. +
      + +
      +
    5. + 1 + + + + + RSpec.describe ResearchBriefing, type: :model do +
    6. +
      + +
      +
    7. + 15 + + + + + let!(:research_briefing) { ResearchBriefing.new({}) } +
    8. +
      + +
      +
    9. + + + + + + +
    10. +
      + +
      +
    11. + 1 + + + + + describe 'template' do +
    12. +
      + +
      +
    13. + 1 + + + + + it 'returns a string' do +
    14. +
      + +
      +
    15. + 1 + + + + + expect(research_briefing.template).to be_a(String) +
    16. +
      + +
      +
    17. + + + + + + end +
    18. +
      + +
      +
    19. + + + + + + end +
    20. +
      + +
      +
    21. + + + + + + +
    22. +
      + +
      +
    23. + 1 + + + + + describe 'object_name' do +
    24. +
      + +
      +
    25. + 1 + + + + + it 'returns a string' do +
    26. +
      + +
      +
    27. + 1 + + + + + expect(research_briefing.object_name).to be_a(String) +
    28. +
      + +
      +
    29. + + + + + + end +
    30. +
      + +
      +
    31. + + + + + + end +
    32. +
      + +
      +
    33. + + + + + + +
    34. +
      + +
      +
    35. + 1 + + + + + describe 'content' do +
    36. +
      + +
      +
    37. + 1 + + + + + context 'where there is no data' do +
    38. +
      + +
      +
    39. + 1 + + + + + it 'returns nil' do +
    40. +
      + +
      +
    41. + 1 + + + + + expect(research_briefing.content).to be_nil +
    42. +
      + +
      +
    43. + + + + + + end +
    44. +
      + +
      +
    45. + + + + + + end +
    46. +
      + +
      +
    47. + + + + + + +
    48. +
      + +
      +
    49. + 1 + + + + + context 'where there is an empty array' do +
    50. +
      + +
      +
    51. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'content_t' => [] }) } +
    52. +
      + +
      +
    53. + 1 + + + + + it 'returns nil' do +
    54. +
      + +
      +
    55. + 1 + + + + + expect(research_briefing.content).to be_nil +
    56. +
      + +
      +
    57. + + + + + + end +
    58. +
      + +
      +
    59. + + + + + + end +
    60. +
      + +
      +
    61. + + + + + + +
    62. +
      + +
      +
    63. + 1 + + + + + context 'where data exists' do +
    64. +
      + +
      +
    65. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'content_t' => ['first item', 'second item'] }) } +
    66. +
      + +
      +
    67. + + + + + + +
    68. +
      + +
      +
    69. + 1 + + + + + it 'returns the first item' do +
    70. +
      + +
      +
    71. + 1 + + + + + expect(research_briefing.content).to eq('first item') +
    72. +
      + +
      +
    73. + + + + + + end +
    74. +
      + +
      +
    75. + + + + + + end +
    76. +
      + +
      +
    77. + + + + + + end +
    78. +
      + +
      +
    79. + + + + + + +
    80. +
      + +
      +
    81. + 1 + + + + + describe 'html_summary' do +
    82. +
      + +
      +
    83. + + + + + + # TODO: test html handling +
    84. +
      + +
      +
    85. + 1 + + + + + context 'where there is no data' do +
    86. +
      + +
      +
    87. + 1 + + + + + it 'returns nil' do +
    88. +
      + +
      +
    89. + 1 + + + + + expect(research_briefing.html_summary).to be_nil +
    90. +
      + +
      +
    91. + + + + + + end +
    92. +
      + +
      +
    93. + + + + + + end +
    94. +
      + +
      +
    95. + + + + + + +
    96. +
      + +
      +
    97. + 1 + + + + + context 'where there is an empty array' do +
    98. +
      + +
      +
    99. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'htmlsummary_t' => [] }) } +
    100. +
      + +
      +
    101. + 1 + + + + + it 'returns nil' do +
    102. +
      + +
      +
    103. + 1 + + + + + expect(research_briefing.html_summary).to be_nil +
    104. +
      + +
      +
    105. + + + + + + end +
    106. +
      + +
      +
    107. + + + + + + end +
    108. +
      + +
      +
    109. + + + + + + +
    110. +
      + +
      +
    111. + 1 + + + + + context 'where data exists' do +
    112. +
      + +
      +
    113. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'htmlsummary_t' => ['first item', 'second item'] }) } +
    114. +
      + +
      +
    115. + + + + + + +
    116. +
      + +
      +
    117. + 1 + + + + + it 'returns the first item' do +
    118. +
      + +
      +
    119. + 1 + + + + + expect(research_briefing.html_summary).to eq('first item') +
    120. +
      + +
      +
    121. + + + + + + end +
    122. +
      + +
      +
    123. + + + + + + end +
    124. +
      + +
      +
    125. + + + + + + end +
    126. +
      + +
      +
    127. + + + + + + +
    128. +
      + +
      +
    129. + 1 + + + + + describe 'published?' do +
    130. +
      + +
      +
    131. + 1 + + + + + context 'where there is no data' do +
    132. +
      + +
      +
    133. + 1 + + + + + it 'returns nil' do +
    134. +
      + +
      +
    135. + 1 + + + + + expect(research_briefing.published?).to be_nil +
    136. +
      + +
      +
    137. + + + + + + end +
    138. +
      + +
      +
    139. + + + + + + end +
    140. +
      + +
      +
    141. + + + + + + +
    142. +
      + +
      +
    143. + 1 + + + + + context 'where there is an empty array' do +
    144. +
      + +
      +
    145. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'published_b' => [] }) } +
    146. +
      + +
      +
    147. + 1 + + + + + it 'returns nil' do +
    148. +
      + +
      +
    149. + 1 + + + + + expect(research_briefing.published?).to be_nil +
    150. +
      + +
      +
    151. + + + + + + end +
    152. +
      + +
      +
    153. + + + + + + end +
    154. +
      + +
      +
    155. + + + + + + +
    156. +
      + +
      +
    157. + 1 + + + + + context 'where data exists' do +
    158. +
      + +
      +
    159. + 1 + + + + + context 'where a string representing a boolean' do +
    160. +
      + +
      +
    161. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'published_b' => ['true'] }) } +
    162. +
      + +
      +
    163. + + + + + + +
    164. +
      + +
      +
    165. + 1 + + + + + it 'returns the relevant boolean' do +
    166. +
      + +
      +
    167. + 1 + + + + + expect(research_briefing.published?).to eq(true) +
    168. +
      + +
      +
    169. + + + + + + end +
    170. +
      + +
      +
    171. + + + + + + end +
    172. +
      + +
      +
    173. + 1 + + + + + context 'where not a boolean value' do +
    174. +
      + +
      +
    175. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'published_b' => ['first item', 'second item'] }) } +
    176. +
      + +
      +
    177. + + + + + + +
    178. +
      + +
      +
    179. + 1 + + + + + it 'returns false' do +
    180. +
      + +
      +
    181. + 1 + + + + + expect(research_briefing.published?).to eq(false) +
    182. +
      + +
      +
    183. + + + + + + end +
    184. +
      + +
      +
    185. + + + + + + end +
    186. +
      + +
      +
    187. + + + + + + end +
    188. +
      + +
      +
    189. + + + + + + end +
    190. +
      + +
      +
    191. + + + + + + +
    192. +
      + +
      +
    193. + 1 + + + + + describe 'published_by' do +
    194. +
      + +
      +
    195. + 1 + + + + + context 'where there is no data' do +
    196. +
      + +
      +
    197. + 1 + + + + + it 'returns nil' do +
    198. +
      + +
      +
    199. + 1 + + + + + expect(research_briefing.published_by).to be_nil +
    200. +
      + +
      +
    201. + + + + + + end +
    202. +
      + +
      +
    203. + + + + + + end +
    204. +
      + +
      +
    205. + + + + + + +
    206. +
      + +
      +
    207. + 1 + + + + + context 'where there is an empty array' do +
    208. +
      + +
      +
    209. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'publisher_ses' => [] }) } +
    210. +
      + +
      +
    211. + 1 + + + + + it 'returns nil' do +
    212. +
      + +
      +
    213. + 1 + + + + + expect(research_briefing.published_by).to be_nil +
    214. +
      + +
      +
    215. + + + + + + end +
    216. +
      + +
      +
    217. + + + + + + end +
    218. +
      + +
      +
    219. + + + + + + +
    220. +
      + +
      +
    221. + 1 + + + + + context 'where data exists' do +
    222. +
      + +
      +
    223. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'publisher_ses' => [12345, 54321] }) } +
    224. +
      + +
      +
    225. + + + + + + +
    226. +
      + +
      +
    227. + 1 + + + + + it 'returns the first item' do +
    228. +
      + +
      +
    229. + 1 + + + + + expect(research_briefing.published_by).to eq(12345) +
    230. +
      + +
      +
    231. + + + + + + end +
    232. +
      + +
      +
    233. + + + + + + end +
    234. +
      + +
      +
    235. + + + + + + end +
    236. +
      + +
      +
    237. + + + + + + +
    238. +
      + +
      +
    239. + 1 + + + + + describe 'creator' do +
    240. +
      + +
      +
    241. + 1 + + + + + context 'where there is no data' do +
    242. +
      + +
      +
    243. + 1 + + + + + it 'returns nil' do +
    244. +
      + +
      +
    245. + 1 + + + + + expect(research_briefing.creator).to be_nil +
    246. +
      + +
      +
    247. + + + + + + end +
    248. +
      + +
      +
    249. + + + + + + end +
    250. +
      + +
      +
    251. + + + + + + +
    252. +
      + +
      +
    253. + 1 + + + + + context 'where there is an empty array' do +
    254. +
      + +
      +
    255. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'creator_ses' => [] }) } +
    256. +
      + +
      +
    257. + 1 + + + + + it 'returns nil' do +
    258. +
      + +
      +
    259. + 1 + + + + + expect(research_briefing.creator).to be_nil +
    260. +
      + +
      +
    261. + + + + + + end +
    262. +
      + +
      +
    263. + + + + + + end +
    264. +
      + +
      +
    265. + + + + + + +
    266. +
      + +
      +
    267. + 1 + + + + + context 'where data exists' do +
    268. +
      + +
      +
    269. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'creator_ses' => [12345, 54321] }) } +
    270. +
      + +
      +
    271. + + + + + + +
    272. +
      + +
      +
    273. + 1 + + + + + it 'returns the first item' do +
    274. +
      + +
      +
    275. + 1 + + + + + expect(research_briefing.creator).to eq(12345) +
    276. +
      + +
      +
    277. + + + + + + end +
    278. +
      + +
      +
    279. + + + + + + end +
    280. +
      + +
      +
    281. + + + + + + end +
    282. +
      + +
      +
    283. + + + + + + +
    284. +
      + +
      +
    285. + 1 + + + + + describe 'publisher_string' do +
    286. +
      + +
      +
    287. + 1 + + + + + context 'where there is no data' do +
    288. +
      + +
      +
    289. + 1 + + + + + it 'returns nil' do +
    290. +
      + +
      +
    291. + 1 + + + + + expect(research_briefing.publisher_string).to be_nil +
    292. +
      + +
      +
    293. + + + + + + end +
    294. +
      + +
      +
    295. + + + + + + end +
    296. +
      + +
      +
    297. + + + + + + +
    298. +
      + +
      +
    299. + 1 + + + + + context 'where there is an empty array' do +
    300. +
      + +
      +
    301. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'publisherSnapshot_s' => [] }) } +
    302. +
      + +
      +
    303. + 1 + + + + + it 'returns nil' do +
    304. +
      + +
      +
    305. + 1 + + + + + expect(research_briefing.publisher_string).to be_nil +
    306. +
      + +
      +
    307. + + + + + + end +
    308. +
      + +
      +
    309. + + + + + + end +
    310. +
      + +
      +
    311. + + + + + + +
    312. +
      + +
      +
    313. + 1 + + + + + context 'where data exists' do +
    314. +
      + +
      +
    315. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'publisherSnapshot_s' => ['first item', 'second item'] }) } +
    316. +
      + +
      +
    317. + + + + + + +
    318. +
      + +
      +
    319. + 1 + + + + + it 'returns the first item' do +
    320. +
      + +
      +
    321. + 1 + + + + + expect(research_briefing.publisher_string).to eq('first item') +
    322. +
      + +
      +
    323. + + + + + + end +
    324. +
      + +
      +
    325. + + + + + + end +
    326. +
      + +
      +
    327. + + + + + + end +
    328. +
      + +
      +
    329. + + + + + + +
    330. +
      + +
      +
    331. + 1 + + + + + describe 'published_on' do +
    332. +
      + +
      +
    333. + 1 + + + + + context 'where there is no data' do +
    334. +
      + +
      +
    335. + 1 + + + + + it 'returns nil' do +
    336. +
      + +
      +
    337. + 1 + + + + + expect(research_briefing.published_on).to be_nil +
    338. +
      + +
      +
    339. + + + + + + end +
    340. +
      + +
      +
    341. + + + + + + end +
    342. +
      + +
      +
    343. + + + + + + +
    344. +
      + +
      +
    345. + 1 + + + + + context 'where there is an empty array' do +
    346. +
      + +
      +
    347. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'created_dt' => [] }) } +
    348. +
      + +
      +
    349. + 1 + + + + + it 'returns nil' do +
    350. +
      + +
      +
    351. + 1 + + + + + expect(research_briefing.published_on).to be_nil +
    352. +
      + +
      +
    353. + + + + + + end +
    354. +
      + +
      +
    355. + + + + + + end +
    356. +
      + +
      +
    357. + + + + + + +
    358. +
      + +
      +
    359. + 1 + + + + + context 'where data exists' do +
    360. +
      + +
      +
    361. + 1 + + + + + context 'where data is parsable as a date' do +
    362. +
      + +
      +
    363. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'created_dt' => ["2015-06-01T18:00:15.73Z", "2014-06-01T18:00:15.73Z"] }) } +
    364. +
      + +
      +
    365. + + + + + + +
    366. +
      + +
      +
    367. + 1 + + + + + it 'returns the first string parsed as a date' do +
    368. +
      + +
      +
    369. + 1 + + + + + expect(research_briefing.published_on).to eq("Mon, 01 Jun 2015".to_date) +
    370. +
      + +
      +
    371. + + + + + + end +
    372. +
      + +
      +
    373. + + + + + + end +
    374. +
      + +
      +
    375. + 1 + + + + + context 'where data is not parsable as a date' do +
    376. +
      + +
      +
    377. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'created_dt' => ["first item", "second item"] }) } +
    378. +
      + +
      +
    379. + + + + + + +
    380. +
      + +
      +
    381. + 1 + + + + + it 'returns nil' do +
    382. +
      + +
      +
    383. + 1 + + + + + expect(research_briefing.published_on).to be_nil +
    384. +
      + +
      +
    385. + + + + + + end +
    386. +
      + +
      +
    387. + + + + + + end +
    388. +
      + +
      +
    389. + + + + + + end +
    390. +
      + +
      +
    391. + + + + + + end +
    392. +
      + +
      +
    393. + + + + + + +
    394. +
      + +
      +
    395. + 1 + + + + + describe 'updated_on' do +
    396. +
      + +
      +
    397. + 1 + + + + + context 'where there is no data' do +
    398. +
      + +
      +
    399. + 1 + + + + + it 'returns nil' do +
    400. +
      + +
      +
    401. + 1 + + + + + expect(research_briefing.updated_on).to be_nil +
    402. +
      + +
      +
    403. + + + + + + end +
    404. +
      + +
      +
    405. + + + + + + end +
    406. +
      + +
      +
    407. + + + + + + +
    408. +
      + +
      +
    409. + 1 + + + + + context 'where there is an empty array' do +
    410. +
      + +
      +
    411. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'dateLastModified_dt' => [] }) } +
    412. +
      + +
      +
    413. + 1 + + + + + it 'returns nil' do +
    414. +
      + +
      +
    415. + 1 + + + + + expect(research_briefing.updated_on).to be_nil +
    416. +
      + +
      +
    417. + + + + + + end +
    418. +
      + +
      +
    419. + + + + + + end +
    420. +
      + +
      +
    421. + + + + + + +
    422. +
      + +
      +
    423. + 1 + + + + + context 'where data exists' do +
    424. +
      + +
      +
    425. + 1 + + + + + context 'where data is parsable as a date' do +
    426. +
      + +
      +
    427. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'dateLastModified_dt' => ["2015-06-01T18:00:15.73Z", "2014-06-01T18:00:15.73Z"] }) } +
    428. +
      + +
      +
    429. + + + + + + +
    430. +
      + +
      +
    431. + 1 + + + + + it 'returns the first string parsed as a date' do +
    432. +
      + +
      +
    433. + 1 + + + + + expect(research_briefing.updated_on).to eq("Mon, 01 Jun 2015".to_date) +
    434. +
      + +
      +
    435. + + + + + + end +
    436. +
      + +
      +
    437. + + + + + + end +
    438. +
      + +
      +
    439. + 1 + + + + + context 'where data is not parsable as a date' do +
    440. +
      + +
      +
    441. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'dateLastModified_dt' => ["first item", "second item"] }) } +
    442. +
      + +
      +
    443. + + + + + + +
    444. +
      + +
      +
    445. + 1 + + + + + it 'returns nil' do +
    446. +
      + +
      +
    447. + 1 + + + + + expect(research_briefing.updated_on).to be_nil +
    448. +
      + +
      +
    449. + + + + + + end +
    450. +
      + +
      +
    451. + + + + + + end +
    452. +
      + +
      +
    453. + + + + + + end +
    454. +
      + +
      +
    455. + + + + + + end +
    456. +
      + +
      +
    457. + + + + + + +
    458. +
      + +
      +
    459. + 1 + + + + + describe 'reference' do +
    460. +
      + +
      +
    461. + 1 + + + + + context 'where there is no data' do +
    462. +
      + +
      +
    463. + 1 + + + + + it 'returns nil' do +
    464. +
      + +
      +
    465. + 1 + + + + + expect(research_briefing.reference).to be_nil +
    466. +
      + +
      +
    467. + + + + + + end +
    468. +
      + +
      +
    469. + + + + + + end +
    470. +
      + +
      +
    471. + + + + + + +
    472. +
      + +
      +
    473. + 1 + + + + + context 'where there is an empty array' do +
    474. +
      + +
      +
    475. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'identifier_t' => [] }) } +
    476. +
      + +
      +
    477. + 1 + + + + + it 'returns nil' do +
    478. +
      + +
      +
    479. + 1 + + + + + expect(research_briefing.reference).to be_nil +
    480. +
      + +
      +
    481. + + + + + + end +
    482. +
      + +
      +
    483. + + + + + + end +
    484. +
      + +
      +
    485. + + + + + + +
    486. +
      + +
      +
    487. + 1 + + + + + context 'where data exists' do +
    488. +
      + +
      +
    489. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'identifier_t' => ['first item', 'second item'] }) } +
    490. +
      + +
      +
    491. + + + + + + +
    492. +
      + +
      +
    493. + 1 + + + + + it 'returns the first item' do +
    494. +
      + +
      +
    495. + 1 + + + + + expect(research_briefing.reference).to eq('first item') +
    496. +
      + +
      +
    497. + + + + + + end +
    498. +
      + +
      +
    499. + + + + + + end +
    500. +
      + +
      +
    501. + + + + + + end +
    502. +
      + +
      +
    503. + + + + + + +
    504. +
      + +
      +
    505. + 1 + + + + + describe 'subjects' do +
    506. +
      + +
      +
    507. + 1 + + + + + context 'where there is no data' do +
    508. +
      + +
      +
    509. + 1 + + + + + it 'returns nil' do +
    510. +
      + +
      +
    511. + 1 + + + + + expect(research_briefing.subjects).to be_nil +
    512. +
      + +
      +
    513. + + + + + + end +
    514. +
      + +
      +
    515. + + + + + + end +
    516. +
      + +
      +
    517. + + + + + + +
    518. +
      + +
      +
    519. + 1 + + + + + context 'where there is an empty array' do +
    520. +
      + +
      +
    521. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'subject_sesrollup' => [] }) } +
    522. +
      + +
      +
    523. + 1 + + + + + it 'returns nil' do +
    524. +
      + +
      +
    525. + 1 + + + + + expect(research_briefing.subjects).to be_nil +
    526. +
      + +
      +
    527. + + + + + + end +
    528. +
      + +
      +
    529. + + + + + + end +
    530. +
      + +
      +
    531. + + + + + + +
    532. +
      + +
      +
    533. + 1 + + + + + context 'where data exists' do +
    534. +
      + +
      +
    535. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'subject_sesrollup' => ['first item', 'second item'] }) } +
    536. +
      + +
      +
    537. + + + + + + +
    538. +
      + +
      +
    539. + 1 + + + + + it 'returns all items as an array' do +
    540. +
      + +
      +
    541. + 1 + + + + + expect(research_briefing.subjects).to eq(['first item', 'second item']) +
    542. +
      + +
      +
    543. + + + + + + end +
    544. +
      + +
      +
    545. + + + + + + end +
    546. +
      + +
      +
    547. + + + + + + end +
    548. +
      + +
      +
    549. + + + + + + +
    550. +
      + +
      +
    551. + + + + + + # disabled due to lack of test data +
    552. +
      + +
      +
    553. + 1 + + + + + xdescribe 'legislation' do +
    554. +
      + +
      +
    555. + 1 + + + + + context 'where there is no data' do +
    556. +
      + +
      +
    557. + 1 + + + + + it 'returns nil' do +
    558. +
      + +
      +
    559. + + + + + + expect(research_briefing.legislation).to be_nil +
    560. +
      + +
      +
    561. + + + + + + end +
    562. +
      + +
      +
    563. + + + + + + end +
    564. +
      + +
      +
    565. + + + + + + +
    566. +
      + +
      +
    567. + 1 + + + + + context 'where there is an empty array' do +
    568. +
      + +
      +
    569. + 1 + + + + + let!(:research_briefing) { ResearchBriefing.new({ '' => [] }) } +
    570. +
      + +
      +
    571. + 1 + + + + + it 'returns nil' do +
    572. +
      + +
      +
    573. + + + + + + expect(research_briefing.legislation).to be_nil +
    574. +
      + +
      +
    575. + + + + + + end +
    576. +
      + +
      +
    577. + + + + + + end +
    578. +
      + +
      +
    579. + + + + + + +
    580. +
      + +
      +
    581. + 1 + + + + + context 'where data exists' do +
    582. +
      + +
      +
    583. + 1 + + + + + let!(:research_briefing) { ResearchBriefing.new({ '' => ['first item', 'second item'] }) } +
    584. +
      + +
      +
    585. + + + + + + +
    586. +
      + +
      +
    587. + 1 + + + + + it 'returns all items as an array' do +
    588. +
      + +
      +
    589. + + + + + + expect(research_briefing.legislation).to eq(['first item', 'second item']) +
    590. +
      + +
      +
    591. + + + + + + end +
    592. +
      + +
      +
    593. + + + + + + end +
    594. +
      + +
      +
    595. + + + + + + end +
    596. +
      + +
      +
    597. + + + + + + +
    598. +
      + +
      +
    599. + 1 + + + + + describe 'external_location_uri' do +
    600. +
      + +
      +
    601. + 1 + + + + + context 'where there is no data' do +
    602. +
      + +
      +
    603. + 1 + + + + + it 'returns nil' do +
    604. +
      + +
      +
    605. + 1 + + + + + expect(research_briefing.external_location_uri).to be_nil +
    606. +
      + +
      +
    607. + + + + + + end +
    608. +
      + +
      +
    609. + + + + + + end +
    610. +
      + +
      +
    611. + + + + + + +
    612. +
      + +
      +
    613. + 1 + + + + + context 'where there is an empty array' do +
    614. +
      + +
      +
    615. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'externalLocation_uri' => [] }) } +
    616. +
      + +
      +
    617. + 1 + + + + + it 'returns nil' do +
    618. +
      + +
      +
    619. + 1 + + + + + expect(research_briefing.external_location_uri).to be_nil +
    620. +
      + +
      +
    621. + + + + + + end +
    622. +
      + +
      +
    623. + + + + + + end +
    624. +
      + +
      +
    625. + + + + + + +
    626. +
      + +
      +
    627. + 1 + + + + + context 'where data exists' do +
    628. +
      + +
      +
    629. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'externalLocation_uri' => ['first item', 'second item'] }) } +
    630. +
      + +
      +
    631. + + + + + + +
    632. +
      + +
      +
    633. + 1 + + + + + it 'returns the first item' do +
    634. +
      + +
      +
    635. + 1 + + + + + expect(research_briefing.external_location_uri).to eq('first item') +
    636. +
      + +
      +
    637. + + + + + + end +
    638. +
      + +
      +
    639. + + + + + + end +
    640. +
      + +
      +
    641. + + + + + + end +
    642. +
      + +
      +
    643. + + + + + + +
    644. +
      + +
      +
    645. + 1 + + + + + describe 'content_location_uri' do +
    646. +
      + +
      +
    647. + 1 + + + + + context 'where there is no data' do +
    648. +
      + +
      +
    649. + 1 + + + + + it 'returns nil' do +
    650. +
      + +
      +
    651. + 1 + + + + + expect(research_briefing.content_location_uri).to be_nil +
    652. +
      + +
      +
    653. + + + + + + end +
    654. +
      + +
      +
    655. + + + + + + end +
    656. +
      + +
      +
    657. + + + + + + +
    658. +
      + +
      +
    659. + 1 + + + + + context 'where there is an empty array' do +
    660. +
      + +
      +
    661. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'contentLocation_uri' => [] }) } +
    662. +
      + +
      +
    663. + 1 + + + + + it 'returns nil' do +
    664. +
      + +
      +
    665. + 1 + + + + + expect(research_briefing.content_location_uri).to be_nil +
    666. +
      + +
      +
    667. + + + + + + end +
    668. +
      + +
      +
    669. + + + + + + end +
    670. +
      + +
      +
    671. + + + + + + +
    672. +
      + +
      +
    673. + 1 + + + + + context 'where data exists' do +
    674. +
      + +
      +
    675. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'contentLocation_uri' => ['first item', 'second item'] }) } +
    676. +
      + +
      +
    677. + + + + + + +
    678. +
      + +
      +
    679. + 1 + + + + + it 'returns the first item' do +
    680. +
      + +
      +
    681. + 1 + + + + + expect(research_briefing.content_location_uri).to eq('first item') +
    682. +
      + +
      +
    683. + + + + + + end +
    684. +
      + +
      +
    685. + + + + + + end +
    686. +
      + +
      +
    687. + + + + + + end +
    688. +
      + +
      +
    689. + + + + + + +
    690. +
      + +
      +
    691. + 1 + + + + + describe 'publisher_logo_partial' do +
    692. +
      + +
      +
    693. + 1 + + + + + context 'where publisher is missing' do +
    694. +
      + +
      +
    695. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'publisherSnapshot_s' => [] }) } +
    696. +
      + +
      +
    697. + + + + + + +
    698. +
      + +
      +
    699. + 1 + + + + + it 'returns nil' do +
    700. +
      + +
      +
    701. + 1 + + + + + expect(research_briefing.publisher_logo_partial).to be_nil +
    702. +
      + +
      +
    703. + + + + + + end +
    704. +
      + +
      +
    705. + + + + + + end +
    706. +
      + +
      +
    707. + + + + + + +
    708. +
      + +
      +
    709. + 1 + + + + + context 'where publisher is present' do +
    710. +
      + +
      +
    711. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'publisherSnapshot_s' => ['a publisher name'] }) } +
    712. +
      + +
      +
    713. + + + + + + +
    714. +
      + +
      +
    715. + 1 + + + + + it 'returns a path to a partial' do +
    716. +
      + +
      +
    717. + 1 + + + + + expect(research_briefing.publisher_logo_partial).to eq('/search/logo_svgs/a-publisher-name') +
    718. +
      + +
      +
    719. + + + + + + end +
    720. +
      + +
      +
    721. + + + + + + end +
    722. +
      + +
      +
    723. + + + + + + end +
    724. +
      + +
      +
    725. + + + + + + +
    726. +
      + +
      +
    727. + 1 + + + + + describe 'display_link' do +
    728. +
      + +
      +
    729. + 1 + + + + + context 'no links are present' do +
    730. +
      + +
      +
    731. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'internalLocation_uri' => [], 'externalLocation_uri' => [] }) } +
    732. +
      + +
      +
    733. + + + + + + +
    734. +
      + +
      +
    735. + 1 + + + + + it 'returns nil' do +
    736. +
      + +
      +
    737. + 1 + + + + + expect(research_briefing.display_link).to be_nil +
    738. +
      + +
      +
    739. + + + + + + end +
    740. +
      + +
      +
    741. + + + + + + end +
    742. +
      + +
      +
    743. + + + + + + +
    744. +
      + +
      +
    745. + 1 + + + + + context 'internal link is present, external link is not present' do +
    746. +
      + +
      +
    747. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'internalLocation_uri' => ['www.example.com'], 'externalLocation_uri' => [] }) } +
    748. +
      + +
      +
    749. + + + + + + +
    750. +
      + +
      +
    751. + 1 + + + + + it 'returns the internal link' do +
    752. +
      + +
      +
    753. + 1 + + + + + expect(research_briefing.display_link).to eq('www.example.com') +
    754. +
      + +
      +
    755. + + + + + + end +
    756. +
      + +
      +
    757. + + + + + + end +
    758. +
      + +
      +
    759. + + + + + + +
    760. +
      + +
      +
    761. + 1 + + + + + context 'internal link is present, external link is present' do +
    762. +
      + +
      +
    763. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'internalLocation_uri' => ['www.example.com'], 'externalLocation_uri' => ['www.test.com'] }) } +
    764. +
      + +
      +
    765. + + + + + + +
    766. +
      + +
      +
    767. + 1 + + + + + it 'returns the external link' do +
    768. +
      + +
      +
    769. + 1 + + + + + expect(research_briefing.display_link).to eq('www.test.com') +
    770. +
      + +
      +
    771. + + + + + + end +
    772. +
      + +
      +
    773. + + + + + + end +
    774. +
      + +
      +
    775. + + + + + + +
    776. +
      + +
      +
    777. + 1 + + + + + context 'internal link is not present, external link is present' do +
    778. +
      + +
      +
    779. + 2 + + + + + let!(:research_briefing) { ResearchBriefing.new({ 'internalLocation_uri' => [], 'externalLocation_uri' => ['www.test.com'] }) } +
    780. +
      + +
      +
    781. + + + + + + +
    782. +
      + +
      +
    783. + 1 + + + + + it 'returns the external link' do +
    784. +
      + +
      +
    785. + 1 + + + + + expect(research_briefing.display_link).to eq('www.test.com') +
    786. +
      + +
      +
    787. + + + + + + end +
    788. +
      + +
      +
    789. + + + + + + end +
    790. +
      + +
      +
    791. + + + + + + end +
    792. +
      + +
      +
    793. + + + + + + end +
    794. +
      + +
    +
    +
    + + +
    +
    +

    spec/models/written_question_spec.rb

    +

    + + 98.85% + + + lines covered +

    + + + +
    + 262 relevant lines. + 259 lines covered and + 3 lines missed. +
    + + + +
    + +
    +    
      + +
      +
    1. + 1 + + + + + require 'rails_helper' +
    2. +
      + +
      +
    3. + + + + + + +
    4. +
      + +
      +
    5. + 1 + + + + + RSpec.describe WrittenQuestion, type: :model do +
    6. +
      + +
      +
    7. + 16 + + + + + let!(:written_question) { WrittenQuestion.new({}) } +
    8. +
      + +
      +
    9. + + + + + + +
    10. +
      + +
      +
    11. + 1 + + + + + describe 'template' do +
    12. +
      + +
      +
    13. + 1 + + + + + it 'returns a string' do +
    14. +
      + +
      +
    15. + 1 + + + + + expect(written_question.template).to be_a(String) +
    16. +
      + +
      +
    17. + + + + + + end +
    18. +
      + +
      +
    19. + + + + + + end +
    20. +
      + +
      +
    21. + + + + + + +
    22. +
      + +
      +
    23. + 1 + + + + + describe 'object_name' do +
    24. +
      + +
      +
    25. + 1 + + + + + it 'returns a string' do +
    26. +
      + +
      +
    27. + 1 + + + + + expect(written_question.object_name).to be_a(String) +
    28. +
      + +
      +
    29. + + + + + + end +
    30. +
      + +
      +
    31. + + + + + + end +
    32. +
      + +
      +
    33. + + + + + + +
    34. +
      + +
      +
    35. + 1 + + + + + describe 'state' do +
    36. +
      + +
      +
    37. + 1 + + + + + context 'where there is no data' do +
    38. +
      + +
      +
    39. + 1 + + + + + it 'returns nil' do +
    40. +
      + +
      +
    41. + 1 + + + + + expect(written_question.state).to be_nil +
    42. +
      + +
      +
    43. + + + + + + end +
    44. +
      + +
      +
    45. + + + + + + end +
    46. +
      + +
      +
    47. + + + + + + +
    48. +
      + +
      +
    49. + 1 + + + + + context 'where there is an empty array' do +
    50. +
      + +
      +
    51. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => [] }) } +
    52. +
      + +
      +
    53. + 1 + + + + + it 'returns nil' do +
    54. +
      + +
      +
    55. + 1 + + + + + expect(written_question.state).to be_nil +
    56. +
      + +
      +
    57. + + + + + + end +
    58. +
      + +
      +
    59. + + + + + + end +
    60. +
      + +
      +
    61. + + + + + + +
    62. +
      + +
      +
    63. + 1 + + + + + context 'where data exists' do +
    64. +
      + +
      +
    65. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => ['Answered'] }) } +
    66. +
      + +
      +
    67. + + + + + + +
    68. +
      + +
      +
    69. + 1 + + + + + it 'returns first item' do +
    70. +
      + +
      +
    71. + 1 + + + + + expect(written_question.state).to eq('Answered') +
    72. +
      + +
      +
    73. + + + + + + end +
    74. +
      + +
      +
    75. + + + + + + end +
    76. +
      + +
      +
    77. + + + + + + end +
    78. +
      + +
      +
    79. + + + + + + +
    80. +
      + +
      +
    81. + 1 + + + + + describe 'tabled?' do +
    82. +
      + +
      +
    83. + 4 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } +
    84. +
      + +
      +
    85. + 1 + + + + + context 'where state is tabled' do +
    86. +
      + +
      +
    87. + 1 + + + + + it 'returns true' do +
    88. +
      + +
      +
    89. + 1 + + + + + allow(written_question).to receive(:state).and_return('Tabled') +
    90. +
      + +
      +
    91. + 1 + + + + + expect(written_question.tabled?).to eq(true) +
    92. +
      + +
      +
    93. + + + + + + end +
    94. +
      + +
      +
    95. + + + + + + end +
    96. +
      + +
      +
    97. + 1 + + + + + context 'where state is missing' do +
    98. +
      + +
      +
    99. + 1 + + + + + it 'returns false' do +
    100. +
      + +
      +
    101. + 1 + + + + + allow(written_question).to receive(:state).and_return(nil) +
    102. +
      + +
      +
    103. + 1 + + + + + expect(written_question.tabled?).to eq(false) +
    104. +
      + +
      +
    105. + + + + + + end +
    106. +
      + +
      +
    107. + + + + + + end +
    108. +
      + +
      +
    109. + 1 + + + + + context 'where state is present but not tabled' do +
    110. +
      + +
      +
    111. + 1 + + + + + it 'returns false' do +
    112. +
      + +
      +
    113. + 1 + + + + + allow(written_question).to receive(:state).and_return('Answered') +
    114. +
      + +
      +
    115. + 1 + + + + + expect(written_question.tabled?).to eq(false) +
    116. +
      + +
      +
    117. + + + + + + end +
    118. +
      + +
      +
    119. + + + + + + end +
    120. +
      + +
      +
    121. + + + + + + end +
    122. +
      + +
      +
    123. + + + + + + +
    124. +
      + +
      +
    125. + 1 + + + + + describe 'answered?' do +
    126. +
      + +
      +
    127. + 4 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } +
    128. +
      + +
      +
    129. + 1 + + + + + context 'where state is answered' do +
    130. +
      + +
      +
    131. + 1 + + + + + it 'returns true' do +
    132. +
      + +
      +
    133. + 1 + + + + + allow(written_question).to receive(:state).and_return('Answered') +
    134. +
      + +
      +
    135. + 1 + + + + + expect(written_question.answered?).to eq(true) +
    136. +
      + +
      +
    137. + + + + + + end +
    138. +
      + +
      +
    139. + + + + + + end +
    140. +
      + +
      +
    141. + 1 + + + + + context 'where state is missing' do +
    142. +
      + +
      +
    143. + 1 + + + + + it 'returns false' do +
    144. +
      + +
      +
    145. + 1 + + + + + allow(written_question).to receive(:state).and_return(nil) +
    146. +
      + +
      +
    147. + 1 + + + + + expect(written_question.answered?).to eq(false) +
    148. +
      + +
      +
    149. + + + + + + end +
    150. +
      + +
      +
    151. + + + + + + end +
    152. +
      + +
      +
    153. + 1 + + + + + context 'where state is present but not answered' do +
    154. +
      + +
      +
    155. + 1 + + + + + it 'returns false' do +
    156. +
      + +
      +
    157. + 1 + + + + + allow(written_question).to receive(:state).and_return('Holding') +
    158. +
      + +
      +
    159. + 1 + + + + + expect(written_question.answered?).to eq(false) +
    160. +
      + +
      +
    161. + + + + + + end +
    162. +
      + +
      +
    163. + + + + + + end +
    164. +
      + +
      +
    165. + + + + + + end +
    166. +
      + +
      +
    167. + + + + + + +
    168. +
      + +
      +
    169. + 1 + + + + + describe 'holding?' do +
    170. +
      + +
      +
    171. + 4 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } +
    172. +
      + +
      +
    173. + 1 + + + + + context 'where state is holding' do +
    174. +
      + +
      +
    175. + 1 + + + + + it 'returns true' do +
    176. +
      + +
      +
    177. + 1 + + + + + allow(written_question).to receive(:state).and_return('Holding') +
    178. +
      + +
      +
    179. + 1 + + + + + expect(written_question.holding?).to eq(true) +
    180. +
      + +
      +
    181. + + + + + + end +
    182. +
      + +
      +
    183. + + + + + + end +
    184. +
      + +
      +
    185. + 1 + + + + + context 'where state is missing' do +
    186. +
      + +
      +
    187. + 1 + + + + + it 'returns false' do +
    188. +
      + +
      +
    189. + 1 + + + + + allow(written_question).to receive(:state).and_return(nil) +
    190. +
      + +
      +
    191. + 1 + + + + + expect(written_question.holding?).to eq(false) +
    192. +
      + +
      +
    193. + + + + + + end +
    194. +
      + +
      +
    195. + + + + + + end +
    196. +
      + +
      +
    197. + 1 + + + + + context 'where state is present but not holding' do +
    198. +
      + +
      +
    199. + 1 + + + + + it 'returns false' do +
    200. +
      + +
      +
    201. + 1 + + + + + allow(written_question).to receive(:state).and_return('Answered was holding') +
    202. +
      + +
      +
    203. + 1 + + + + + expect(written_question.holding?).to eq(false) +
    204. +
      + +
      +
    205. + + + + + + end +
    206. +
      + +
      +
    207. + + + + + + end +
    208. +
      + +
      +
    209. + + + + + + end +
    210. +
      + +
      +
    211. + + + + + + +
    212. +
      + +
      +
    213. + 1 + + + + + describe 'answered_was_holding?' do +
    214. +
      + +
      +
    215. + 5 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } +
    216. +
      + +
      +
    217. + 1 + + + + + context 'where state is answered' do +
    218. +
      + +
      +
    219. + 1 + + + + + context 'where answer is marked as holding and there is a holding answer date' do +
    220. +
      + +
      +
    221. + 1 + + + + + it 'returns true' do +
    222. +
      + +
      +
    223. + 1 + + + + + allow(written_question).to receive(:holding_answer?).and_return(true) +
    224. +
      + +
      +
    225. + 1 + + + + + allow(written_question).to receive(:date_of_holding_answer).and_return(Date.yesterday) +
    226. +
      + +
      +
    227. + 1 + + + + + allow(written_question).to receive(:state).and_return('Answered') +
    228. +
      + +
      +
    229. + 1 + + + + + expect(written_question.answered_was_holding?).to eq(true) +
    230. +
      + +
      +
    231. + + + + + + end +
    232. +
      + +
      +
    233. + + + + + + end +
    234. +
      + +
      +
    235. + 1 + + + + + context 'where other required fields are missing' do +
    236. +
      + +
      +
    237. + 1 + + + + + it 'returns false' do +
    238. +
      + +
      +
    239. + 1 + + + + + allow(written_question).to receive(:state).and_return('Answered') +
    240. +
      + +
      +
    241. + 1 + + + + + expect(written_question.answered_was_holding?).to eq(false) +
    242. +
      + +
      +
    243. + + + + + + end +
    244. +
      + +
      +
    245. + + + + + + end +
    246. +
      + +
      +
    247. + + + + + + end +
    248. +
      + +
      +
    249. + 1 + + + + + context 'where state is missing' do +
    250. +
      + +
      +
    251. + 1 + + + + + it 'returns false' do +
    252. +
      + +
      +
    253. + 1 + + + + + allow(written_question).to receive(:state).and_return(nil) +
    254. +
      + +
      +
    255. + 1 + + + + + expect(written_question.answered_was_holding?).to eq(false) +
    256. +
      + +
      +
    257. + + + + + + end +
    258. +
      + +
      +
    259. + + + + + + end +
    260. +
      + +
      +
    261. + 1 + + + + + context 'where state is present but not answered_was_holding' do +
    262. +
      + +
      +
    263. + 1 + + + + + it 'returns false' do +
    264. +
      + +
      +
    265. + 1 + + + + + allow(written_question).to receive(:state).and_return('Withdrawn') +
    266. +
      + +
      +
    267. + 1 + + + + + expect(written_question.answered_was_holding?).to eq(false) +
    268. +
      + +
      +
    269. + + + + + + end +
    270. +
      + +
      +
    271. + + + + + + end +
    272. +
      + +
      +
    273. + + + + + + end +
    274. +
      + +
      +
    275. + + + + + + +
    276. +
      + +
      +
    277. + 1 + + + + + describe 'withdrawn?' do +
    278. +
      + +
      +
    279. + 1 + + + + + context 'where state is withdrawn' do +
    280. +
      + +
      +
    281. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } +
    282. +
      + +
      +
    283. + 1 + + + + + it 'returns true' do +
    284. +
      + +
      +
    285. + 1 + + + + + allow(written_question).to receive(:state).and_return('Withdrawn') +
    286. +
      + +
      +
    287. + 1 + + + + + expect(written_question.withdrawn?).to eq(true) +
    288. +
      + +
      +
    289. + + + + + + end +
    290. +
      + +
      +
    291. + + + + + + end +
    292. +
      + +
      +
    293. + 1 + + + + + context 'where state is missing' do +
    294. +
      + +
      +
    295. + 1 + + + + + it 'returns false' do +
    296. +
      + +
      +
    297. + 1 + + + + + allow(written_question).to receive(:state).and_return(nil) +
    298. +
      + +
      +
    299. + 1 + + + + + expect(written_question.withdrawn?).to eq(false) +
    300. +
      + +
      +
    301. + + + + + + end +
    302. +
      + +
      +
    303. + + + + + + end +
    304. +
      + +
      +
    305. + 1 + + + + + context 'where state is present but not withdrawn' do +
    306. +
      + +
      +
    307. + 1 + + + + + it 'returns false' do +
    308. +
      + +
      +
    309. + 1 + + + + + allow(written_question).to receive(:state).and_return('Corrected') +
    310. +
      + +
      +
    311. + 1 + + + + + expect(written_question.withdrawn?).to eq(false) +
    312. +
      + +
      +
    313. + + + + + + end +
    314. +
      + +
      +
    315. + + + + + + end +
    316. +
      + +
      +
    317. + + + + + + end +
    318. +
      + +
      +
    319. + + + + + + +
    320. +
      + +
      +
    321. + 1 + + + + + describe 'corrected?' do +
    322. +
      + +
      +
    323. + 1 + + + + + context 'where state is corrected' do +
    324. +
      + +
      +
    325. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } +
    326. +
      + +
      +
    327. + 1 + + + + + it 'returns true' do +
    328. +
      + +
      +
    329. + 1 + + + + + allow(written_question).to receive(:state).and_return('Corrected') +
    330. +
      + +
      +
    331. + 1 + + + + + expect(written_question.corrected?).to eq(true) +
    332. +
      + +
      +
    333. + + + + + + end +
    334. +
      + +
      +
    335. + + + + + + end +
    336. +
      + +
      +
    337. + 1 + + + + + context 'where state is missing' do +
    338. +
      + +
      +
    339. + 1 + + + + + it 'returns false' do +
    340. +
      + +
      +
    341. + 1 + + + + + allow(written_question).to receive(:state).and_return(nil) +
    342. +
      + +
      +
    343. + 1 + + + + + expect(written_question.corrected?).to eq(false) +
    344. +
      + +
      +
    345. + + + + + + end +
    346. +
      + +
      +
    347. + + + + + + end +
    348. +
      + +
      +
    349. + 1 + + + + + context 'where state is present but not corrected' do +
    350. +
      + +
      +
    351. + 1 + + + + + it 'returns false' do +
    352. +
      + +
      +
    353. + 1 + + + + + allow(written_question).to receive(:state).and_return('Tabled') +
    354. +
      + +
      +
    355. + 1 + + + + + expect(written_question.corrected?).to eq(false) +
    356. +
      + +
      +
    357. + + + + + + end +
    358. +
      + +
      +
    359. + + + + + + end +
    360. +
      + +
      +
    361. + + + + + + end +
    362. +
      + +
      +
    363. + + + + + + +
    364. +
      + +
      +
    365. + 1 + + + + + describe 'department' do +
    366. +
      + +
      +
    367. + 1 + + + + + context 'where there is no data' do +
    368. +
      + +
      +
    369. + 1 + + + + + it 'returns nil' do +
    370. +
      + +
      +
    371. + 1 + + + + + expect(written_question.department).to be_nil +
    372. +
      + +
      +
    373. + + + + + + end +
    374. +
      + +
      +
    375. + + + + + + end +
    376. +
      + +
      +
    377. + + + + + + +
    378. +
      + +
      +
    379. + 1 + + + + + context 'where there is an empty array' do +
    380. +
      + +
      +
    381. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'department_ses' => [] }) } +
    382. +
      + +
      +
    383. + 1 + + + + + it 'returns nil' do +
    384. +
      + +
      +
    385. + 1 + + + + + expect(written_question.department).to be_nil +
    386. +
      + +
      +
    387. + + + + + + end +
    388. +
      + +
      +
    389. + + + + + + end +
    390. +
      + +
      +
    391. + + + + + + +
    392. +
      + +
      +
    393. + 1 + + + + + context 'where data exists' do +
    394. +
      + +
      +
    395. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'department_ses' => [12345, 67890] }) } +
    396. +
      + +
      +
    397. + + + + + + +
    398. +
      + +
      +
    399. + 1 + + + + + it 'returns first item' do +
    400. +
      + +
      +
    401. + 1 + + + + + expect(written_question.department).to eq(12345) +
    402. +
      + +
      +
    403. + + + + + + end +
    404. +
      + +
      +
    405. + + + + + + end +
    406. +
      + +
      +
    407. + + + + + + end +
    408. +
      + +
      +
    409. + + + + + + +
    410. +
      + +
      +
    411. + 1 + + + + + describe 'prelim_partial' do +
    412. +
      + +
      +
    413. + 7 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } +
    414. +
      + +
      +
    415. + 1 + + + + + context 'where tabled' do +
    416. +
      + +
      +
    417. + 1 + + + + + it 'returns the correct path' do +
    418. +
      + +
      +
    419. + 1 + + + + + allow(written_question).to receive(:state).and_return('Tabled') +
    420. +
      + +
      +
    421. + 1 + + + + + expect(written_question.prelim_partial).to eq('/search/fragments/written_question_prelim_tabled') +
    422. +
      + +
      +
    423. + + + + + + end +
    424. +
      + +
      +
    425. + + + + + + end +
    426. +
      + +
      +
    427. + 1 + + + + + context 'where answered' do +
    428. +
      + +
      +
    429. + 1 + + + + + it 'returns the correct path' do +
    430. +
      + +
      +
    431. + 1 + + + + + allow(written_question).to receive(:state).and_return('Answered') +
    432. +
      + +
      +
    433. + 1 + + + + + expect(written_question.prelim_partial).to eq('/search/fragments/written_question_prelim_answered') +
    434. +
      + +
      +
    435. + + + + + + end +
    436. +
      + +
      +
    437. + + + + + + end +
    438. +
      + +
      +
    439. + 1 + + + + + context 'where holding' do +
    440. +
      + +
      +
    441. + 1 + + + + + it 'returns the correct path' do +
    442. +
      + +
      +
    443. + 1 + + + + + allow(written_question).to receive(:state).and_return('Holding') +
    444. +
      + +
      +
    445. + 1 + + + + + expect(written_question.prelim_partial).to eq('/search/fragments/written_question_prelim_holding') +
    446. +
      + +
      +
    447. + + + + + + end +
    448. +
      + +
      +
    449. + + + + + + end +
    450. +
      + +
      +
    451. + 1 + + + + + context 'where answered_was_holding' do +
    452. +
      + +
      +
    453. + 1 + + + + + it 'returns the correct path' do +
    454. +
      + +
      +
    455. + 1 + + + + + allow(written_question).to receive(:answered_was_holding?).and_return(true) +
    456. +
      + +
      +
    457. + 1 + + + + + expect(written_question.prelim_partial).to eq('/search/fragments/written_question_prelim_answered_was_holding') +
    458. +
      + +
      +
    459. + + + + + + end +
    460. +
      + +
      +
    461. + + + + + + end +
    462. +
      + +
      +
    463. + 1 + + + + + context 'where withdrawn' do +
    464. +
      + +
      +
    465. + 1 + + + + + it 'returns the correct path' do +
    466. +
      + +
      +
    467. + 1 + + + + + allow(written_question).to receive(:state).and_return('Withdrawn') +
    468. +
      + +
      +
    469. + 1 + + + + + expect(written_question.prelim_partial).to eq('/search/fragments/written_question_prelim_withdrawn') +
    470. +
      + +
      +
    471. + + + + + + end +
    472. +
      + +
      +
    473. + + + + + + end +
    474. +
      + +
      +
    475. + 1 + + + + + context 'where corrected' do +
    476. +
      + +
      +
    477. + 1 + + + + + it 'returns the correct path' do +
    478. +
      + +
      +
    479. + 1 + + + + + allow(written_question).to receive(:state).and_return('Corrected') +
    480. +
      + +
      +
    481. + 1 + + + + + expect(written_question.prelim_partial).to eq('/search/fragments/written_question_prelim_corrected') +
    482. +
      + +
      +
    483. + + + + + + end +
    484. +
      + +
      +
    485. + + + + + + end +
    486. +
      + +
      +
    487. + + + + + + end +
    488. +
      + +
      +
    489. + + + + + + +
    490. +
      + +
      +
    491. + 1 + + + + + xdescribe 'uin' do +
    492. +
      + +
      +
    493. + + + + + + # disabled - no data +
    494. +
      + +
      +
    495. + 1 + + + + + context 'where there is no data' do +
    496. +
      + +
      +
    497. + 1 + + + + + it 'returns nil' do +
    498. +
      + +
      +
    499. + + + + + + expect(written_question.uin).to be_nil +
    500. +
      + +
      +
    501. + + + + + + end +
    502. +
      + +
      +
    503. + + + + + + end +
    504. +
      + +
      +
    505. + + + + + + +
    506. +
      + +
      +
    507. + 1 + + + + + context 'where there is an empty array' do +
    508. +
      + +
      +
    509. + 1 + + + + + let!(:written_question) { WrittenQuestion.new({ '' => [] }) } +
    510. +
      + +
      +
    511. + 1 + + + + + it 'returns nil' do +
    512. +
      + +
      +
    513. + + + + + + expect(written_question.uin).to be_nil +
    514. +
      + +
      +
    515. + + + + + + end +
    516. +
      + +
      +
    517. + + + + + + end +
    518. +
      + +
      +
    519. + + + + + + +
    520. +
      + +
      +
    521. + 1 + + + + + context 'where data exists' do +
    522. +
      + +
      +
    523. + 1 + + + + + let!(:written_question) { WrittenQuestion.new({ '' => [12345, 67890] }) } +
    524. +
      + +
      +
    525. + + + + + + +
    526. +
      + +
      +
    527. + 1 + + + + + it 'returns first item' do +
    528. +
      + +
      +
    529. + + + + + + expect(written_question.uin).to eq(12345) +
    530. +
      + +
      +
    531. + + + + + + end +
    532. +
      + +
      +
    533. + + + + + + end +
    534. +
      + +
      +
    535. + + + + + + end +
    536. +
      + +
      +
    537. + + + + + + +
    538. +
      + +
      +
    539. + 1 + + + + + describe 'date_of_question' do +
    540. +
      + +
      +
    541. + 1 + + + + + context 'where there is no data' do +
    542. +
      + +
      +
    543. + 1 + + + + + it 'returns nil' do +
    544. +
      + +
      +
    545. + 1 + + + + + expect(written_question.date_of_question).to be_nil +
    546. +
      + +
      +
    547. + + + + + + end +
    548. +
      + +
      +
    549. + + + + + + end +
    550. +
      + +
      +
    551. + + + + + + +
    552. +
      + +
      +
    553. + 1 + + + + + context 'where there is an empty array' do +
    554. +
      + +
      +
    555. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'date_dt' => '' }) } +
    556. +
      + +
      +
    557. + 1 + + + + + it 'returns nil' do +
    558. +
      + +
      +
    559. + 1 + + + + + expect(written_question.date_of_question).to be_nil +
    560. +
      + +
      +
    561. + + + + + + end +
    562. +
      + +
      +
    563. + + + + + + end +
    564. +
      + +
      +
    565. + + + + + + +
    566. +
      + +
      +
    567. + 1 + + + + + context 'where data exists' do +
    568. +
      + +
      +
    569. + 1 + + + + + context 'where data is a valid date' do +
    570. +
      + +
      +
    571. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'date_dt' => Date.yesterday.to_s }) } +
    572. +
      + +
      +
    573. + 1 + + + + + it 'returns the first object as a date' do +
    574. +
      + +
      +
    575. + 1 + + + + + expect(written_question.date_of_question).to eq(Date.yesterday) +
    576. +
      + +
      +
    577. + + + + + + end +
    578. +
      + +
      +
    579. + + + + + + end +
    580. +
      + +
      +
    581. + 1 + + + + + context 'where data is not a valid date' do +
    582. +
      + +
      +
    583. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'date_dt' => 'date' }) } +
    584. +
      + +
      +
    585. + 1 + + + + + it 'returns nil' do +
    586. +
      + +
      +
    587. + 1 + + + + + expect(written_question.date_of_question).to be_nil +
    588. +
      + +
      +
    589. + + + + + + end +
    590. +
      + +
      +
    591. + + + + + + end +
    592. +
      + +
      +
    593. + + + + + + end +
    594. +
      + +
      +
    595. + + + + + + end +
    596. +
      + +
      +
    597. + + + + + + +
    598. +
      + +
      +
    599. + 1 + + + + + describe 'date_of_answer' do +
    600. +
      + +
      +
    601. + 1 + + + + + context 'where there is no data' do +
    602. +
      + +
      +
    603. + 1 + + + + + it 'returns nil' do +
    604. +
      + +
      +
    605. + 1 + + + + + expect(written_question.date_of_answer).to be_nil +
    606. +
      + +
      +
    607. + + + + + + end +
    608. +
      + +
      +
    609. + + + + + + end +
    610. +
      + +
      +
    611. + + + + + + +
    612. +
      + +
      +
    613. + 1 + + + + + context 'where there is an empty array' do +
    614. +
      + +
      +
    615. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'dateOfAnswer_dt' => [] }) } +
    616. +
      + +
      +
    617. + 1 + + + + + it 'returns nil' do +
    618. +
      + +
      +
    619. + 1 + + + + + expect(written_question.date_of_answer).to be_nil +
    620. +
      + +
      +
    621. + + + + + + end +
    622. +
      + +
      +
    623. + + + + + + end +
    624. +
      + +
      +
    625. + + + + + + +
    626. +
      + +
      +
    627. + 1 + + + + + context 'where data exists' do +
    628. +
      + +
      +
    629. + 1 + + + + + let!(:written_question) { WrittenQuestion.new({ 'dateOfAnswer_dt' => [Date.yesterday.to_s, Date.today.to_s] }) } +
    630. +
      + +
      +
    631. + + + + + + +
    632. +
      + +
      +
    633. + 1 + + + + + context 'where data is a valid date' do +
    634. +
      + +
      +
    635. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'dateOfAnswer_dt' => [Date.yesterday.to_s, Date.today.to_s] }) } +
    636. +
      + +
      +
    637. + 1 + + + + + it 'returns the first object as a date' do +
    638. +
      + +
      +
    639. + 1 + + + + + expect(written_question.date_of_answer).to eq(Date.yesterday) +
    640. +
      + +
      +
    641. + + + + + + end +
    642. +
      + +
      +
    643. + + + + + + end +
    644. +
      + +
      +
    645. + 1 + + + + + context 'where data is not a valid date' do +
    646. +
      + +
      +
    647. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'dateOfAnswer_dt' => 'date' }) } +
    648. +
      + +
      +
    649. + 1 + + + + + it 'returns nil' do +
    650. +
      + +
      +
    651. + 1 + + + + + expect(written_question.date_of_answer).to be_nil +
    652. +
      + +
      +
    653. + + + + + + end +
    654. +
      + +
      +
    655. + + + + + + end +
    656. +
      + +
      +
    657. + + + + + + end +
    658. +
      + +
      +
    659. + + + + + + end +
    660. +
      + +
      +
    661. + + + + + + +
    662. +
      + +
      +
    663. + 1 + + + + + describe 'tabling_member' do +
    664. +
      + +
      +
    665. + 1 + + + + + context 'where there is no data' do +
    666. +
      + +
      +
    667. + 1 + + + + + it 'returns nil' do +
    668. +
      + +
      +
    669. + 1 + + + + + expect(written_question.tabling_member).to be_nil +
    670. +
      + +
      +
    671. + + + + + + end +
    672. +
      + +
      +
    673. + + + + + + end +
    674. +
      + +
      +
    675. + + + + + + +
    676. +
      + +
      +
    677. + 1 + + + + + context 'where there is an empty array' do +
    678. +
      + +
      +
    679. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'tablingMember_ses' => [] }) } +
    680. +
      + +
      +
    681. + 1 + + + + + it 'returns nil' do +
    682. +
      + +
      +
    683. + 1 + + + + + expect(written_question.tabling_member).to be_nil +
    684. +
      + +
      +
    685. + + + + + + end +
    686. +
      + +
      +
    687. + + + + + + end +
    688. +
      + +
      +
    689. + + + + + + +
    690. +
      + +
      +
    691. + 1 + + + + + context 'where data exists' do +
    692. +
      + +
      +
    693. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'tablingMember_ses' => [12345, 67890] }) } +
    694. +
      + +
      +
    695. + + + + + + +
    696. +
      + +
      +
    697. + 1 + + + + + it 'returns first item' do +
    698. +
      + +
      +
    699. + 1 + + + + + expect(written_question.tabling_member).to eq(12345) +
    700. +
      + +
      +
    701. + + + + + + end +
    702. +
      + +
      +
    703. + + + + + + end +
    704. +
      + +
      +
    705. + + + + + + end +
    706. +
      + +
      +
    707. + + + + + + +
    708. +
      + +
      +
    709. + 1 + + + + + describe 'answering_member' do +
    710. +
      + +
      +
    711. + 1 + + + + + context 'where there is no data' do +
    712. +
      + +
      +
    713. + 1 + + + + + it 'returns nil' do +
    714. +
      + +
      +
    715. + 1 + + + + + expect(written_question.answering_member).to be_nil +
    716. +
      + +
      +
    717. + + + + + + end +
    718. +
      + +
      +
    719. + + + + + + end +
    720. +
      + +
      +
    721. + + + + + + +
    722. +
      + +
      +
    723. + 1 + + + + + context 'where there is an empty array' do +
    724. +
      + +
      +
    725. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'answeringMember_ses' => [] }) } +
    726. +
      + +
      +
    727. + 1 + + + + + it 'returns nil' do +
    728. +
      + +
      +
    729. + 1 + + + + + expect(written_question.answering_member).to be_nil +
    730. +
      + +
      +
    731. + + + + + + end +
    732. +
      + +
      +
    733. + + + + + + end +
    734. +
      + +
      +
    735. + + + + + + +
    736. +
      + +
      +
    737. + 1 + + + + + context 'where data exists' do +
    738. +
      + +
      +
    739. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'answeringMember_ses' => [12345, 67890] }) } +
    740. +
      + +
      +
    741. + + + + + + +
    742. +
      + +
      +
    743. + 1 + + + + + it 'returns first item' do +
    744. +
      + +
      +
    745. + 1 + + + + + expect(written_question.answering_member).to eq(12345) +
    746. +
      + +
      +
    747. + + + + + + end +
    748. +
      + +
      +
    749. + + + + + + end +
    750. +
      + +
      +
    751. + + + + + + end +
    752. +
      + +
      +
    753. + + + + + + +
    754. +
      + +
      +
    755. + 1 + + + + + describe 'question_text' do +
    756. +
      + +
      +
    757. + 1 + + + + + context 'where there is no data' do +
    758. +
      + +
      +
    759. + 1 + + + + + it 'returns nil' do +
    760. +
      + +
      +
    761. + 1 + + + + + expect(written_question.question_text).to be_nil +
    762. +
      + +
      +
    763. + + + + + + end +
    764. +
      + +
      +
    765. + + + + + + end +
    766. +
      + +
      +
    767. + + + + + + +
    768. +
      + +
      +
    769. + 1 + + + + + context 'where there is an empty array' do +
    770. +
      + +
      +
    771. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'answeringMember_ses' => [] }) } +
    772. +
      + +
      +
    773. + 1 + + + + + it 'returns nil' do +
    774. +
      + +
      +
    775. + 1 + + + + + expect(written_question.question_text).to be_nil +
    776. +
      + +
      +
    777. + + + + + + end +
    778. +
      + +
      +
    779. + + + + + + end +
    780. +
      + +
      +
    781. + + + + + + +
    782. +
      + +
      +
    783. + 1 + + + + + context 'where data exists' do +
    784. +
      + +
      +
    785. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'answeringMember_ses' => [12345, 67890] }) } +
    786. +
      + +
      +
    787. + + + + + + +
    788. +
      + +
      +
    789. + 1 + + + + + it 'returns first item' do +
    790. +
      + +
      +
    791. + 1 + + + + + expect(written_question.answering_member).to eq(12345) +
    792. +
      + +
      +
    793. + + + + + + end +
    794. +
      + +
      +
    795. + + + + + + end +
    796. +
      + +
      +
    797. + + + + + + end +
    798. +
      + +
      +
    799. + + + + + + +
    800. +
      + +
      +
    801. + 1 + + + + + describe 'attachment' do +
    802. +
      + +
      +
    803. + 1 + + + + + context 'where there is no data' do +
    804. +
      + +
      +
    805. + 1 + + + + + it 'returns nil' do +
    806. +
      + +
      +
    807. + 1 + + + + + expect(written_question.attachment).to be_nil +
    808. +
      + +
      +
    809. + + + + + + end +
    810. +
      + +
      +
    811. + + + + + + end +
    812. +
      + +
      +
    813. + + + + + + +
    814. +
      + +
      +
    815. + 1 + + + + + context 'where there is an empty array' do +
    816. +
      + +
      +
    817. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'attachmentTitle_t' => [] }) } +
    818. +
      + +
      +
    819. + 1 + + + + + it 'returns nil' do +
    820. +
      + +
      +
    821. + 1 + + + + + expect(written_question.attachment).to be_nil +
    822. +
      + +
      +
    823. + + + + + + end +
    824. +
      + +
      +
    825. + + + + + + end +
    826. +
      + +
      +
    827. + + + + + + +
    828. +
      + +
      +
    829. + 1 + + + + + context 'where data exists' do +
    830. +
      + +
      +
    831. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'attachmentTitle_t' => ['first item', 'second item'] }) } +
    832. +
      + +
      +
    833. + + + + + + +
    834. +
      + +
      +
    835. + 1 + + + + + it 'returns all items' do +
    836. +
      + +
      +
    837. + 1 + + + + + expect(written_question.attachment).to eq(['first item', 'second item']) +
    838. +
      + +
      +
    839. + + + + + + end +
    840. +
      + +
      +
    841. + + + + + + end +
    842. +
      + +
      +
    843. + + + + + + end +
    844. +
      + +
      +
    845. + + + + + + +
    846. +
      + +
      +
    847. + 1 + + + + + describe 'transferred?' do +
    848. +
      + +
      +
    849. + 1 + + + + + context 'where there is no data' do +
    850. +
      + +
      +
    851. + 1 + + + + + it 'returns nil' do +
    852. +
      + +
      +
    853. + 1 + + + + + expect(written_question.transferred?).to be_nil +
    854. +
      + +
      +
    855. + + + + + + end +
    856. +
      + +
      +
    857. + + + + + + end +
    858. +
      + +
      +
    859. + + + + + + +
    860. +
      + +
      +
    861. + 1 + + + + + context 'where there is no value' do +
    862. +
      + +
      +
    863. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'transferredQuestion_b' => nil }) } +
    864. +
      + +
      +
    865. + 1 + + + + + it 'returns nil' do +
    866. +
      + +
      +
    867. + 1 + + + + + expect(written_question.transferred?).to be_nil +
    868. +
      + +
      +
    869. + + + + + + end +
    870. +
      + +
      +
    871. + + + + + + end +
    872. +
      + +
      +
    873. + + + + + + +
    874. +
      + +
      +
    875. + 1 + + + + + context 'where data exists' do +
    876. +
      + +
      +
    877. + 1 + + + + + context 'where true' do +
    878. +
      + +
      +
    879. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'transferredQuestion_b' => 'true' }) } +
    880. +
      + +
      +
    881. + 1 + + + + + it 'returns true' do +
    882. +
      + +
      +
    883. + 1 + + + + + expect(written_question.transferred?).to eq(true) +
    884. +
      + +
      +
    885. + + + + + + end +
    886. +
      + +
      +
    887. + + + + + + end +
    888. +
      + +
      +
    889. + + + + + + +
    890. +
      + +
      +
    891. + 1 + + + + + context 'where false' do +
    892. +
      + +
      +
    893. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'transferredQuestion_b' => 'false' }) } +
    894. +
      + +
      +
    895. + 1 + + + + + it 'returns false' do +
    896. +
      + +
      +
    897. + 1 + + + + + expect(written_question.transferred?).to eq(false) +
    898. +
      + +
      +
    899. + + + + + + end +
    900. +
      + +
      +
    901. + + + + + + end +
    902. +
      + +
      +
    903. + + + + + + end +
    904. +
      + +
      +
    905. + + + + + + end +
    906. +
      + +
      +
    907. + + + + + + end +
    908. +
      + +
    +
    +
    + + +
    +
    +

    spec/models/written_statement_spec.rb

    +

    + + 94.78% + + + lines covered +

    + + + +
    + 115 relevant lines. + 109 lines covered and + 6 lines missed. +
    + + + +
    + +
    +    
      + +
      +
    1. + 1 + + + + + require 'rails_helper' +
    2. +
      + +
      +
    3. + + + + + + +
    4. +
      + +
      +
    5. + 1 + + + + + RSpec.describe WrittenStatement, type: :model do +
    6. +
      + +
      +
    7. + 9 + + + + + let!(:written_statement) { WrittenStatement.new({}) } +
    8. +
      + +
      +
    9. + + + + + + +
    10. +
      + +
      +
    11. + 1 + + + + + describe 'template' do +
    12. +
      + +
      +
    13. + 1 + + + + + it 'returns a string' do +
    14. +
      + +
      +
    15. + 1 + + + + + expect(written_statement.template).to be_a(String) +
    16. +
      + +
      +
    17. + + + + + + end +
    18. +
      + +
      +
    19. + + + + + + end +
    20. +
      + +
      +
    21. + + + + + + +
    22. +
      + +
      +
    23. + 1 + + + + + describe 'object_name' do +
    24. +
      + +
      +
    25. + 1 + + + + + it 'returns a string' do +
    26. +
      + +
      +
    27. + 1 + + + + + expect(written_statement.object_name).to be_a(String) +
    28. +
      + +
      +
    29. + + + + + + end +
    30. +
      + +
      +
    31. + + + + + + end +
    32. +
      + +
      +
    33. + + + + + + +
    34. +
      + +
      +
    35. + 1 + + + + + xdescribe 'attachment' do +
    36. +
      + +
      +
    37. + + + + + + # disabled - awaiting feedback +
    38. +
      + +
      +
    39. + 1 + + + + + context 'where there is no data' do +
    40. +
      + +
      +
    41. + 1 + + + + + it 'returns nil' do +
    42. +
      + +
      +
    43. + + + + + + expect(written_statement.attachment).to be_nil +
    44. +
      + +
      +
    45. + + + + + + end +
    46. +
      + +
      +
    47. + + + + + + end +
    48. +
      + +
      +
    49. + + + + + + +
    50. +
      + +
      +
    51. + 1 + + + + + context 'where there is an empty array' do +
    52. +
      + +
      +
    53. + 1 + + + + + let!(:written_statement) { WrittenStatement.new({ 'attachment_t' => [] }) } +
    54. +
      + +
      +
    55. + 1 + + + + + it 'returns nil' do +
    56. +
      + +
      +
    57. + + + + + + expect(written_statement.attachment).to be_nil +
    58. +
      + +
      +
    59. + + + + + + end +
    60. +
      + +
      +
    61. + + + + + + end +
    62. +
      + +
      +
    63. + + + + + + +
    64. +
      + +
      +
    65. + 1 + + + + + context 'where data exists' do +
    66. +
      + +
      +
    67. + 1 + + + + + let!(:written_statement) { WrittenStatement.new({ 'attachment_t' => ['first item', 'second item'] }) } +
    68. +
      + +
      +
    69. + + + + + + +
    70. +
      + +
      +
    71. + 1 + + + + + it 'returns all items as an array' do +
    72. +
      + +
      +
    73. + + + + + + expect(written_statement.attachment).to eq(['first item', 'second item']) +
    74. +
      + +
      +
    75. + + + + + + end +
    76. +
      + +
      +
    77. + + + + + + end +
    78. +
      + +
      +
    79. + + + + + + end +
    80. +
      + +
      +
    81. + + + + + + +
    82. +
      + +
      +
    83. + 1 + + + + + xdescribe 'notes' do +
    84. +
      + +
      +
    85. + + + + + + # disabled - awaiting feedback +
    86. +
      + +
      +
    87. + 1 + + + + + context 'where there is no data' do +
    88. +
      + +
      +
    89. + 1 + + + + + it 'returns nil' do +
    90. +
      + +
      +
    91. + + + + + + expect(written_statement.notes).to be_nil +
    92. +
      + +
      +
    93. + + + + + + end +
    94. +
      + +
      +
    95. + + + + + + end +
    96. +
      + +
      +
    97. + + + + + + +
    98. +
      + +
      +
    99. + 1 + + + + + context 'where there is an empty array' do +
    100. +
      + +
      +
    101. + 1 + + + + + let!(:written_statement) { WrittenStatement.new({ 'notes_t' => [] }) } +
    102. +
      + +
      +
    103. + 1 + + + + + it 'returns nil' do +
    104. +
      + +
      +
    105. + + + + + + expect(written_statement.notes).to be_nil +
    106. +
      + +
      +
    107. + + + + + + end +
    108. +
      + +
      +
    109. + + + + + + end +
    110. +
      + +
      +
    111. + + + + + + +
    112. +
      + +
      +
    113. + 1 + + + + + context 'where data exists' do +
    114. +
      + +
      +
    115. + 1 + + + + + let!(:written_statement) { WrittenStatement.new({ 'notes_t' => ['first item', 'second item'] }) } +
    116. +
      + +
      +
    117. + + + + + + +
    118. +
      + +
      +
    119. + 1 + + + + + it 'returns all items as an array' do +
    120. +
      + +
      +
    121. + + + + + + expect(written_statement.notes).to eq(['first item', 'second item']) +
    122. +
      + +
      +
    123. + + + + + + end +
    124. +
      + +
      +
    125. + + + + + + end +
    126. +
      + +
      +
    127. + + + + + + end +
    128. +
      + +
      +
    129. + + + + + + +
    130. +
      + +
      +
    131. + 1 + + + + + describe 'member' do +
    132. +
      + +
      +
    133. + 1 + + + + + context 'where there is no data' do +
    134. +
      + +
      +
    135. + 1 + + + + + it 'returns nil' do +
    136. +
      + +
      +
    137. + 1 + + + + + expect(written_statement.member).to be_nil +
    138. +
      + +
      +
    139. + + + + + + end +
    140. +
      + +
      +
    141. + + + + + + end +
    142. +
      + +
      +
    143. + + + + + + +
    144. +
      + +
      +
    145. + 1 + + + + + context 'where there is an empty array' do +
    146. +
      + +
      +
    147. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'member_ses' => [] }) } +
    148. +
      + +
      +
    149. + 1 + + + + + it 'returns nil' do +
    150. +
      + +
      +
    151. + 1 + + + + + expect(written_statement.member).to be_nil +
    152. +
      + +
      +
    153. + + + + + + end +
    154. +
      + +
      +
    155. + + + + + + end +
    156. +
      + +
      +
    157. + + + + + + +
    158. +
      + +
      +
    159. + 1 + + + + + context 'where data exists' do +
    160. +
      + +
      +
    161. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'member_ses' => [12345, 67890] }) } +
    162. +
      + +
      +
    163. + + + + + + +
    164. +
      + +
      +
    165. + 1 + + + + + it 'returns first item' do +
    166. +
      + +
      +
    167. + 1 + + + + + expect(written_statement.member).to eq(12345) +
    168. +
      + +
      +
    169. + + + + + + end +
    170. +
      + +
      +
    171. + + + + + + end +
    172. +
      + +
      +
    173. + + + + + + end +
    174. +
      + +
      +
    175. + + + + + + +
    176. +
      + +
      +
    177. + 1 + + + + + describe 'member_party' do +
    178. +
      + +
      +
    179. + 1 + + + + + context 'where there is no data' do +
    180. +
      + +
      +
    181. + 1 + + + + + it 'returns nil' do +
    182. +
      + +
      +
    183. + 1 + + + + + expect(written_statement.member_party).to be_nil +
    184. +
      + +
      +
    185. + + + + + + end +
    186. +
      + +
      +
    187. + + + + + + end +
    188. +
      + +
      +
    189. + + + + + + +
    190. +
      + +
      +
    191. + 1 + + + + + context 'where there is an empty array' do +
    192. +
      + +
      +
    193. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'memberParty_ses' => [] }) } +
    194. +
      + +
      +
    195. + 1 + + + + + it 'returns nil' do +
    196. +
      + +
      +
    197. + 1 + + + + + expect(written_statement.member_party).to be_nil +
    198. +
      + +
      +
    199. + + + + + + end +
    200. +
      + +
      +
    201. + + + + + + end +
    202. +
      + +
      +
    203. + + + + + + +
    204. +
      + +
      +
    205. + 1 + + + + + context 'where data exists' do +
    206. +
      + +
      +
    207. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'memberParty_ses' => [12345, 67890] }) } +
    208. +
      + +
      +
    209. + + + + + + +
    210. +
      + +
      +
    211. + 1 + + + + + it 'returns first item' do +
    212. +
      + +
      +
    213. + 1 + + + + + expect(written_statement.member_party).to eq(12345) +
    214. +
      + +
      +
    215. + + + + + + end +
    216. +
      + +
      +
    217. + + + + + + end +
    218. +
      + +
      +
    219. + + + + + + end +
    220. +
      + +
      +
    221. + + + + + + +
    222. +
      + +
      +
    223. + 1 + + + + + describe 'legislature' do +
    224. +
      + +
      +
    225. + 1 + + + + + context 'where there is no data' do +
    226. +
      + +
      +
    227. + 1 + + + + + it 'returns nil' do +
    228. +
      + +
      +
    229. + 1 + + + + + expect(written_statement.legislature).to be_nil +
    230. +
      + +
      +
    231. + + + + + + end +
    232. +
      + +
      +
    233. + + + + + + end +
    234. +
      + +
      +
    235. + + + + + + +
    236. +
      + +
      +
    237. + 1 + + + + + context 'where there is an empty array' do +
    238. +
      + +
      +
    239. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'legislature_ses' => [] }) } +
    240. +
      + +
      +
    241. + 1 + + + + + it 'returns nil' do +
    242. +
      + +
      +
    243. + 1 + + + + + expect(written_statement.legislature).to be_nil +
    244. +
      + +
      +
    245. + + + + + + end +
    246. +
      + +
      +
    247. + + + + + + end +
    248. +
      + +
      +
    249. + + + + + + +
    250. +
      + +
      +
    251. + 1 + + + + + context 'where data exists' do +
    252. +
      + +
      +
    253. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'legislature_ses' => ['first item', 'second item'] }) } +
    254. +
      + +
      +
    255. + + + + + + +
    256. +
      + +
      +
    257. + 1 + + + + + it 'returns first item' do +
    258. +
      + +
      +
    259. + 1 + + + + + expect(written_statement.legislature).to eq('first item') +
    260. +
      + +
      +
    261. + + + + + + end +
    262. +
      + +
      +
    263. + + + + + + end +
    264. +
      + +
      +
    265. + + + + + + end +
    266. +
      + +
      +
    267. + + + + + + +
    268. +
      + +
      +
    269. + 1 + + + + + describe 'corrected?' do +
    270. +
      + +
      +
    271. + 1 + + + + + context 'where there is no data' do +
    272. +
      + +
      +
    273. + 1 + + + + + it 'returns nil' do +
    274. +
      + +
      +
    275. + 1 + + + + + expect(written_statement.corrected?).to be_nil +
    276. +
      + +
      +
    277. + + + + + + end +
    278. +
      + +
      +
    279. + + + + + + end +
    280. +
      + +
      +
    281. + + + + + + +
    282. +
      + +
      +
    283. + 1 + + + + + context 'where there is no value' do +
    284. +
      + +
      +
    285. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'correctedWmsMc_b' => nil }) } +
    286. +
      + +
      +
    287. + 1 + + + + + it 'returns nil' do +
    288. +
      + +
      +
    289. + 1 + + + + + expect(written_statement.corrected?).to be_nil +
    290. +
      + +
      +
    291. + + + + + + end +
    292. +
      + +
      +
    293. + + + + + + end +
    294. +
      + +
      +
    295. + + + + + + +
    296. +
      + +
      +
    297. + 1 + + + + + context 'where data exists' do +
    298. +
      + +
      +
    299. + 1 + + + + + context 'where true' do +
    300. +
      + +
      +
    301. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'correctedWmsMc_b' => 'true' }) } +
    302. +
      + +
      +
    303. + 1 + + + + + it 'returns true' do +
    304. +
      + +
      +
    305. + 1 + + + + + expect(written_statement.corrected?).to eq(true) +
    306. +
      + +
      +
    307. + + + + + + end +
    308. +
      + +
      +
    309. + + + + + + end +
    310. +
      + +
      +
    311. + + + + + + +
    312. +
      + +
      +
    313. + 1 + + + + + context 'where false' do +
    314. +
      + +
      +
    315. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'correctedWmsMc_b' => 'false' }) } +
    316. +
      + +
      +
    317. + 1 + + + + + it 'returns false' do +
    318. +
      + +
      +
    319. + 1 + + + + + expect(written_statement.corrected?).to eq(false) +
    320. +
      + +
      +
    321. + + + + + + end +
    322. +
      + +
      +
    323. + + + + + + end +
    324. +
      + +
      +
    325. + + + + + + end +
    326. +
      + +
      +
    327. + + + + + + end +
    328. +
      + +
      +
    329. + + + + + + +
    330. +
      + +
      +
    331. + 1 + + + + + describe 'department' do +
    332. +
      + +
      +
    333. + 1 + + + + + context 'where there is no data' do +
    334. +
      + +
      +
    335. + 1 + + + + + it 'returns nil' do +
    336. +
      + +
      +
    337. + 1 + + + + + expect(written_statement.department).to be_nil +
    338. +
      + +
      +
    339. + + + + + + end +
    340. +
      + +
      +
    341. + + + + + + end +
    342. +
      + +
      +
    343. + + + + + + +
    344. +
      + +
      +
    345. + 1 + + + + + context 'where there is an empty array' do +
    346. +
      + +
      +
    347. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'department_ses' => [] }) } +
    348. +
      + +
      +
    349. + 1 + + + + + it 'returns nil' do +
    350. +
      + +
      +
    351. + 1 + + + + + expect(written_statement.department).to be_nil +
    352. +
      + +
      +
    353. + + + + + + end +
    354. +
      + +
      +
    355. + + + + + + end +
    356. +
      + +
      +
    357. + + + + + + +
    358. +
      + +
      +
    359. + 1 + + + + + context 'where data exists' do +
    360. +
      + +
      +
    361. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'department_ses' => [12345, 67890] }) } +
    362. +
      + +
      +
    363. + + + + + + +
    364. +
      + +
      +
    365. + 1 + + + + + it 'returns first item' do +
    366. +
      + +
      +
    367. + 1 + + + + + expect(written_statement.department).to eq(12345) +
    368. +
      + +
      +
    369. + + + + + + end +
    370. +
      + +
      +
    371. + + + + + + end +
    372. +
      + +
      +
    373. + + + + + + end +
    374. +
      + +
      +
    375. + + + + + + +
    376. +
      + +
      +
    377. + 1 + + + + + describe 'statement_date' do +
    378. +
      + +
      +
    379. + 1 + + + + + context 'where there is no data' do +
    380. +
      + +
      +
    381. + 1 + + + + + it 'returns nil' do +
    382. +
      + +
      +
    383. + 1 + + + + + expect(written_statement.statement_date).to be_nil +
    384. +
      + +
      +
    385. + + + + + + end +
    386. +
      + +
      +
    387. + + + + + + end +
    388. +
      + +
      +
    389. + + + + + + +
    390. +
      + +
      +
    391. + 1 + + + + + context 'where there is an empty array' do +
    392. +
      + +
      +
    393. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'date_dt' => [] }) } +
    394. +
      + +
      +
    395. + 1 + + + + + it 'returns nil' do +
    396. +
      + +
      +
    397. + 1 + + + + + expect(written_statement.statement_date).to be_nil +
    398. +
      + +
      +
    399. + + + + + + end +
    400. +
      + +
      +
    401. + + + + + + end +
    402. +
      + +
      +
    403. + + + + + + +
    404. +
      + +
      +
    405. + 1 + + + + + context 'where data exists' do +
    406. +
      + +
      +
    407. + 1 + + + + + context 'where data is a valid date' do +
    408. +
      + +
      +
    409. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'date_dt' => Date.today.to_s }) } +
    410. +
      + +
      +
    411. + 1 + + + + + it 'returns a date object' do +
    412. +
      + +
      +
    413. + 1 + + + + + expect(written_statement.statement_date).to eq(Date.today) +
    414. +
      + +
      +
    415. + + + + + + end +
    416. +
      + +
      +
    417. + + + + + + end +
    418. +
      + +
      +
    419. + 1 + + + + + context 'where data is not a valid date' do +
    420. +
      + +
      +
    421. + 2 + + + + + let!(:written_statement) { WrittenStatement.new({ 'date_dt' => 'date' }) } +
    422. +
      + +
      +
    423. + 1 + + + + + it 'returns nil' do +
    424. +
      + +
      +
    425. + 1 + + + + + expect(written_statement.statement_date).to be_nil +
    426. +
      + +
      +
    427. + + + + + + end +
    428. +
      + +
      +
    429. + + + + + + end +
    430. +
      + +
      +
    431. + + + + + + end +
    432. +
      + +
      +
    433. + + + + + + end +
    434. +
      + +
      +
    435. + + + + + + end +
    436. +
      + +
    +
    +
    + + +
    +
    +

    spec/requests/content_objects_spec.rb

    +

    + + 100.0% + + + lines covered +

    + + + +
    + 9 relevant lines. + 9 lines covered and + 0 lines missed. +
    + + + +
    + +
    +    
      + +
      +
    1. + 1 + + + + + require 'rails_helper' +
    2. +
      + +
      +
    3. + + + + + + +
    4. +
      + +
      +
    5. + 1 + + + + + RSpec.describe 'ContentObjects', type: :request do +
    6. +
      + +
      +
    7. + 1 + + + + + describe 'GET /show' do +
    8. +
      + +
      +
    9. + 2 + + + + + let!(:edm_instance) { Edm.new('test') } +
    10. +
      + +
      +
    11. + + + + + + +
    12. +
      + +
      +
    13. + 1 + + + + + it 'returns http success' do +
    14. +
      + +
      +
    15. + 1 + + + + + allow_any_instance_of(ApiCall).to receive(:object_data).and_return('test') +
    16. +
      + +
      +
    17. + 1 + + + + + allow(ContentObject).to receive(:generate).and_return(edm_instance) +
    18. +
      + +
      +
    19. + 1 + + + + + get '/search-prototype/objects', params: { :object => 'test_string' } +
    20. +
      + +
      +
    21. + 1 + + + + + expect(response).to have_http_status(:ok) +
    22. +
      + +
      +
    23. + + + + + + end +
    24. +
      + +
      +
    25. + + + + + + end +
    26. +
      + +
      +
    27. + + + + + + end +
    28. +
      + +
    +
    +
    + + +
    +
    +

    spec/requests/edm_spec.rb

    +

    + + 94.12% + + + lines covered +

    + + + +
    + 34 relevant lines. + 32 lines covered and + 2 lines missed. +
    + + + +
    + +
    +    
      + +
      +
    1. + 1 + + + + + require 'rails_helper' +
    2. +
      + +
      +
    3. + + + + + + +
    4. +
      + +
      +
    5. + 1 + + + + + RSpec.describe 'ContentObjects', type: :request do +
    6. +
      + +
      +
    7. + 1 + + + + + describe 'GET /show' do +
    8. +
      + +
      +
    9. + 2 + + + + + let!(:edm_instance) { Edm.new('test') } +
    10. +
      + +
      +
    11. + + + + + + +
    12. +
      + +
      +
    13. + 1 + + + + + it 'returns http success' do +
    14. +
      + +
      +
    15. + 1 + + + + + allow_any_instance_of(ApiCall).to receive(:object_data).and_return('test') +
    16. +
      + +
      +
    17. + 1 + + + + + allow(ContentObject).to receive(:generate).and_return(edm_instance) +
    18. +
      + +
      +
    19. + 1 + + + + + get '/search-prototype/objects', params: { :object => 'test_string' } +
    20. +
      + +
      +
    21. + 1 + + + + + expect(response).to have_http_status(:ok) +
    22. +
      + +
      +
    23. + + + + + + end +
    24. +
      + +
      +
    25. + + + + + + end +
    26. +
      + +
      +
    27. + + + + + + +
    28. +
      + +
      +
    29. + 1 + + + + + describe 'test data' do +
    30. +
      + +
      +
    31. + 1 + + + + + test_data = JSON.parse(File.read("spec/fixtures/edm_test_data.json")) +
    32. +
      + +
      +
    33. + 1 + + + + + docs = test_data["response"]["docs"] +
    34. +
      + +
      +
    35. + + + + + + +
    36. +
      + +
      +
    37. + 1 + + + + + docs.each_with_index do |doc, index| +
    38. +
      + +
      +
    39. + 50 + + + + + context "object #{index}" do +
    40. +
      + +
      +
    41. + 100 + + + + + let(:data) { doc } +
    42. +
      + +
      +
    43. + + + + + + +
    44. +
      + +
      +
    45. + 50 + + + + + it 'displays the expected data' do +
    46. +
      + +
      +
    47. + 50 + + + + + edm_instance = Edm.new(data) +
    48. +
      + +
      +
    49. + 50 + + + + + allow_any_instance_of(ApiCall).to receive(:object_data).and_return('test') +
    50. +
      + +
      +
    51. + 50 + + + + + allow(ContentObject).to receive(:generate).and_return(edm_instance) +
    52. +
      + +
      +
    53. + 50 + + + + + get '/search-prototype/objects', params: { :object => edm_instance } +
    54. +
      + +
      +
    55. + + + + + + +
    56. +
      + +
      +
    57. + 50 + + + + + expect(CGI::unescapeHTML(response.body)).to include(edm_instance.reference) +
    58. +
      + +
      +
    59. + 50 + + + + + expect(CGI::unescapeHTML(response.body)).to include(edm_instance.session) +
    60. +
      + +
      +
    61. + 50 + + + + + expect(CGI::unescapeHTML(response.body)).to include(edm_instance.motion_text) +
    62. +
      + +
      +
    63. + 50 + + + + + expect(CGI::unescapeHTML(response.body)).to include(edm_instance.primary_sponsor) +
    64. +
      + +
      +
    65. + 50 + + + + + expect(CGI::unescapeHTML(response.body)).to include(edm_instance.display_link) +
    66. +
      + +
      +
    67. + + + + + + +
    68. +
      + +
      +
    69. + 50 + + + + + unless edm_instance.other_supporters.blank? +
    70. +
      + +
      +
    71. + 50 + + + + + edm_instance.other_supporters.each do |supporter| +
    72. +
      + +
      +
    73. + 1109 + + + + + expect(CGI::unescapeHTML(response.body)).to include(supporter.to_s) +
    74. +
      + +
      +
    75. + + + + + + end +
    76. +
      + +
      +
    77. + + + + + + end +
    78. +
      + +
      +
    79. + + + + + + +
    80. +
      + +
      +
    81. + 50 + + + + + unless edm_instance.subjects.blank? +
    82. +
      + +
      +
    83. + 50 + + + + + edm_instance.subjects.each do |subject| +
    84. +
      + +
      +
    85. + 950 + + + + + expect(CGI::unescapeHTML(response.body)).to include(subject.to_s) +
    86. +
      + +
      +
    87. + + + + + + end +
    88. +
      + +
      +
    89. + + + + + + end +
    90. +
      + +
      +
    91. + + + + + + +
    92. +
      + +
      +
    93. + 50 + + + + + unless edm_instance.legislation.blank? +
    94. +
      + +
      +
    95. + + + + + + edm_instance.legislation.each do |legislation| +
    96. +
      + +
      +
    97. + + + + + + expect(CGI::unescapeHTML(response.body)).to include(legislation.to_s) +
    98. +
      + +
      +
    99. + + + + + + end +
    100. +
      + +
      +
    101. + + + + + + end +
    102. +
      + +
      +
    103. + + + + + + end +
    104. +
      + +
      +
    105. + + + + + + end +
    106. +
      + +
      +
    107. + + + + + + end +
    108. +
      + +
      +
    109. + + + + + + end +
    110. +
      + +
      +
    111. + + + + + end
    112. From 073c36e0c14460bb2d76949e3e2162d56cc25529 Mon Sep 17 00:00:00 2001 From: j-corry Date: Thu, 21 Sep 2023 15:43:21 +0100 Subject: [PATCH 2/6] - Updates to logic for corrected written questions - Add test for uin --- app/models/written_question.rb | 37 +- coverage/.last_run.json | 2 +- coverage/.resultset.json | 94 +- coverage/index.html | 2590 ++++++++++++++++---------- spec/models/written_question_spec.rb | 53 +- 5 files changed, 1765 insertions(+), 1011 deletions(-) diff --git a/app/models/written_question.rb b/app/models/written_question.rb index 04d5ff1e..af9b7af8 100644 --- a/app/models/written_question.rb +++ b/app/models/written_question.rb @@ -48,8 +48,35 @@ def withdrawn? def corrected? # There is no state string for this, it must be derived # Prior to July 2014, correctedWmsMc_b flag + related links will contain a link to the correction - # After July 2014, correctedWmsMc_b + correctingItem_uri OR correctingItem_t - state == 'Corrected' + # After July 2014, correctedWmsMc_b + correctingItem_uri OR correctingItem_t / s as a fallback + + # There's the potential for some confusion here at this is not mutually exclusive with the other states + # e.g. a written question could, under this model, be answered and corrected, or tabled and corrected + + return false unless content_object_data['correctedWmsMc_b'] == 'true' + + true + end + + def correcting_object + # Note - this is experimental and sets up correcting_object as a written question in its own right. + # + # In the view, we can then call object.correcting_object.department, object.correcting_object.date_of_question and + # object.correcting_object.correcting_member to get the information we need regarding the correction. + # + # This only applies to corrections before July 2014, and for corrected written questions after this date + # this method should return nil as content_object_data['correctingItem_uri'] will be blank. We can therefore + # check correcting_object is not nil to determine whether or not we attempt to show its data in the view. + # + # May need to adjust this to cache response first time around + # Also worth noting here: we're assuming that the correcting object is a written question + + return unless corrected? + + return if content_object_data['correctingItem_uri'].blank? + + correcting_item_data = ApiCall.new(object_uri: content_object_data['correctingItem_uri']).object_data + ContentObject.generate(correcting_item_data) end def prelim_partial @@ -122,6 +149,12 @@ def answering_member content_object_data['answeringMember_ses'].first end + def correcting_member + return if content_object_data['correctingMember_ses'].blank? + + content_object_data['correctingMember_ses'].first + end + def answer_text return if content_object_data['answerText_t'].blank? diff --git a/coverage/.last_run.json b/coverage/.last_run.json index 66c8434a..a88459f2 100644 --- a/coverage/.last_run.json +++ b/coverage/.last_run.json @@ -1,5 +1,5 @@ { "result": { - "line": 95.28 + "line": 95.69 } } diff --git a/coverage/.resultset.json b/coverage/.resultset.json index 3ea4b5d0..ff74185e 100644 --- a/coverage/.resultset.json +++ b/coverage/.resultset.json @@ -400,7 +400,7 @@ null, null, 1, - 54, + 55, null, null, 1, @@ -445,15 +445,15 @@ 1, null, 1, - 228, + 235, null, null, 1, null, null, - 3, + 4, null, - 3, + 4, null, null, 1, @@ -565,13 +565,13 @@ 1, null, 1, - 3, + 4, null, 1, null, 0, null, - 0, + 1, null, 0, null, @@ -803,7 +803,7 @@ 1, null, 1, - 57, + 64, null, null, 1, @@ -815,7 +815,7 @@ null, null, 1, - 6, + 11, null, 1, null, @@ -851,7 +851,34 @@ null, null, null, - 4, + null, + null, + null, + null, + 3, + null, + 1, + null, + null, + 1, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 3, + null, + 2, + null, + 1, + 1, null, null, 1, @@ -872,9 +899,9 @@ null, 1, null, - 0, + 3, null, - 0, + 1, null, null, 1, @@ -931,6 +958,12 @@ null, null, 1, + 0, + null, + 0, + null, + null, + 1, 2, null, 0, @@ -1947,7 +1980,7 @@ 1, null, 1, - 16, + 17, null, 1, 1, @@ -2109,15 +2142,41 @@ 2, 1, 1, + null, + null, + 1, + 1, + 1, + null, + null, + 1, + 2, + 1, + 1, + null, + null, + null, + null, + 1, + 1, + 1, + 2, + 1, + 1, 1, null, null, 1, + 2, + 2, + null, + 1, 1, 1, 1, null, null, + null, 1, 1, 1, @@ -2190,25 +2249,24 @@ null, null, 1, - null, 1, 1, - 0, + 1, null, null, null, 1, + 2, 1, 1, - 0, null, null, null, 1, - 1, + 2, null, 1, - 0, + 1, null, null, null, @@ -2701,6 +2759,6 @@ ] } }, - "timestamp": 1695223703 + "timestamp": 1695307173 } } diff --git a/coverage/index.html b/coverage/index.html index 168c0f1d..00fb668c 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -14,7 +14,7 @@ loading
    -
    Generated 2023-09-20T16:28:23+01:00
    +
    Generated 2023-09-21T15:39:33+01:00
      @@ -23,14 +23,14 @@

      All Files ( - 95.28% + 95.7% covered at - 7.41 + 7.31 hits/line ) @@ -43,11 +43,11 @@

      - 1230 relevant lines, - 1172 lines covered and - 58 lines missed. + 1255 relevant lines, + 1201 lines covered and + 54 lines missed. ( - 95.28% + 95.7% )
      @@ -209,7 +209,7 @@

      20 17 3 - 3.60 + 3.65 @@ -226,12 +226,12 @@

      app/models/content_object.rb - 86.57 % + 88.06 % 150 67 - 58 - 9 - 31.82 + 59 + 8 + 31.99 @@ -270,12 +270,12 @@

      app/models/written_question.rb - 85.14 % - 157 - 74 - 63 + 86.75 % + 190 + 83 + 72 11 - 2.65 + 2.66 @@ -457,12 +457,12 @@

      spec/models/written_question_spec.rb - 98.85 % - 454 - 262 - 259 - 3 - 1.21 + 100.00 % + 479 + 278 + 278 + 0 + 1.23 @@ -2466,8 +2466,8 @@

      -
    • - 54 +
    • + 55 @@ -2858,7 +2858,7 @@

      app/models/content_object.rb

      - 86.57% + 88.06% lines covered @@ -2868,8 +2868,8 @@

      67 relevant lines. - 58 lines covered and - 9 lines missed. + 59 lines covered and + 8 lines missed.
      @@ -2935,8 +2935,8 @@

    • -
    • - 228 +
    • + 235 @@ -3001,8 +3001,8 @@

    • -
    • - 3 +
    • + 4 @@ -3023,8 +3023,8 @@

    • -
    • - 3 +
    • + 4 @@ -4255,8 +4255,8 @@

    • -
    • - 3 +
    • + 4 @@ -4321,8 +4321,8 @@

    • -
    • - +
    • + 1 @@ -6766,7 +6766,7 @@

      app/models/written_question.rb

      - 85.14% + 86.75% lines covered @@ -6775,8 +6775,8 @@

      - 74 relevant lines. - 63 lines covered and + 83 relevant lines. + 72 lines covered and 11 lines missed.
      @@ -6821,8 +6821,8 @@

    • -
    • - 57 +
    • + 64 @@ -6953,8 +6953,8 @@

    • -
    • - 6 +
    • + 11 @@ -7344,18 +7344,18 @@

      - # After July 2014, correctedWmsMc_b + correctingItem_uri OR correctingItem_t + # After July 2014, correctedWmsMc_b + correctingItem_uri OR correctingItem_t / s as a fallback

    • -
    • - 4 +
    • + - state == 'Corrected' +
    • @@ -7366,7 +7366,7 @@

      - end + # There's the potential for some confusion here at this is not mutually exclusive with the other states

    • @@ -7377,29 +7377,29 @@

      - + # e.g. a written question could, under this model, be answered and corrected, or tabled and corrected

    • -
    • - 1 +
    • + - def prelim_partial +
    • -
    • - 6 +
    • + 3 - return '/search/fragments/written_question_prelim_tabled' if tabled? + return false unless content_object_data['correctedWmsMc_b'] == 'true'
    • @@ -7415,13 +7415,13 @@

    • -
    • - 5 +
    • + 1 - return '/search/fragments/written_question_prelim_answered' if answered? + true
    • @@ -7432,40 +7432,40 @@

      - + end

    • -
    • - 4 +
    • + - return '/search/fragments/written_question_prelim_holding' if holding? +
    • -
    • - +
    • + 1 - + def correcting_object
    • -
    • - 3 +
    • + - return '/search/fragments/written_question_prelim_answered_was_holding' if answered_was_holding? + # Note - this is experimental and sets up correcting_object as a written question in its own right.
    • @@ -7476,18 +7476,18 @@

      - + #

    • -
    • - 2 +
    • + - return '/search/fragments/written_question_prelim_withdrawn' if withdrawn? + # In the view, we can then call object.correcting_object.department, object.correcting_object.date_of_question and
    • @@ -7498,18 +7498,18 @@

      - + # object.correcting_object.correcting_member to get the information we need regarding the correction.

    • -
    • - 1 +
    • + - return '/search/fragments/written_question_prelim_corrected' if corrected? + #
    • @@ -7520,7 +7520,7 @@

      - + # This only applies to corrections before July 2014, and for corrected written questions after this date @@ -7531,7 +7531,7 @@

      - nil + # this method should return nil as content_object_data['correctingItem_uri'] will be blank. We can therefore @@ -7542,7 +7542,7 @@

      - end + # check correcting_object is not nil to determine whether or not we attempt to show its data in the view. @@ -7553,18 +7553,18 @@

      - + #
      -
    • - 1 +
    • + - def uin + # May need to adjust this to cache response first time around
    • @@ -7575,51 +7575,51 @@

      - # UIN with optional Hansard reference in same field + # Also worth noting here: we're assuming that the correcting object is a written question
      -
    • +
    • - return if content_object_data['identifier_t'].blank? +
    • -
    • - +
    • + 3 - + return unless corrected?
    • -
    • +
    • - content_object_data['identifier_t'] +
    • -
    • - +
    • + 2 - end + return if content_object_data['correctingItem_uri'].blank?
    • @@ -7641,7 +7641,7 @@

      - def holding_answer? + correcting_item_data = ApiCall.new(object_uri: content_object_data['correctingItem_uri']).object_data @@ -7652,7 +7652,7 @@

      - return if content_object_data['holdingAnswer_b'].blank? + ContentObject.generate(correcting_item_data) @@ -7663,40 +7663,40 @@

      - + end
      -
    • +
    • - return true if content_object_data['holdingAnswer_b'] == 'true' +
    • -
    • - +
    • + 1 - + def prelim_partial
    • -
    • - +
    • + 6 - false + return '/search/fragments/written_question_prelim_tabled' if tabled?
    • @@ -7707,29 +7707,29 @@

      - end +
      -
    • - +
    • + 5 - + return '/search/fragments/written_question_prelim_answered' if answered?
    • -
    • - 1 +
    • + - def date_of_question +
    • @@ -7740,7 +7740,7 @@

      - return if content_object_data['date_dt'].blank? + return '/search/fragments/written_question_prelim_holding' if holding? @@ -7756,57 +7756,57 @@

      -
    • - 2 +
    • + 3 - valid_date_string = validate_date(content_object_data['date_dt']) + return '/search/fragments/written_question_prelim_answered_was_holding' if answered_was_holding?
    • -
    • - 2 +
    • + - return unless valid_date_string +
    • -
    • - +
    • + 2 - + return '/search/fragments/written_question_prelim_withdrawn' if withdrawn?
    • -
    • - 1 +
    • + - valid_date_string.to_date +
    • -
    • - +
    • + 1 - end + return '/search/fragments/written_question_prelim_corrected' if corrected?
    • @@ -7822,24 +7822,24 @@

      -
    • - 1 +
    • + - def date_of_answer + nil
    • -
    • - 4 +
    • + - return if content_object_data['dateOfAnswer_dt'].blank? + end
    • @@ -7855,57 +7855,57 @@

      -
    • - 2 +
    • + 1 - valid_date_string = validate_date(content_object_data['dateOfAnswer_dt'].first) + def uin
    • -
    • - 2 +
    • + - return unless valid_date_string + # UIN with optional Hansard reference in same field
    • -
    • - +
    • + 3 - + return if content_object_data['identifier_t'].blank?
    • -
    • - 1 +
    • + - valid_date_string.to_date +
    • -
    • - +
    • + 1 - end + content_object_data['identifier_t']
    • @@ -7916,51 +7916,51 @@

      - + end
      -
    • - 1 +
    • + - def date_of_holding_answer +
    • -
    • - +
    • + 1 - return if content_object_data['dateOfHoldingAnswer_dt'].blank? + def holding_answer?
    • -
    • - +
    • + 1 - + return if content_object_data['holdingAnswer_b'].blank?
    • -
    • +
    • - valid_date_string = validate_date(content_object_data['dateOfHoldingAnswer_dt'].first) +
    • @@ -7971,7 +7971,7 @@

      - return unless valid_date_string + return true if content_object_data['holdingAnswer_b'] == 'true' @@ -7993,7 +7993,7 @@

      - valid_date_string.to_date + false @@ -8026,18 +8026,18 @@

      - def tabling_member + def date_of_question
      -
    • - 3 +
    • + 4 - return if content_object_data['tablingMember_ses'].blank? + return if content_object_data['date_dt'].blank?
    • @@ -8053,24 +8053,24 @@

      -
    • - 1 +
    • + 2 - content_object_data['tablingMember_ses'].first + valid_date_string = validate_date(content_object_data['date_dt'])
    • -
    • - +
    • + 2 - end + return unless valid_date_string
    • @@ -8092,18 +8092,18 @@

      - def answering_member + valid_date_string.to_date
      -
    • - 4 +
    • + - return if content_object_data['answeringMember_ses'].blank? + end
    • @@ -8119,24 +8119,24 @@

      -
    • - 2 +
    • + 1 - content_object_data['answeringMember_ses'].first + def date_of_answer
    • -
    • - +
    • + 4 - end + return if content_object_data['dateOfAnswer_dt'].blank?
    • @@ -8152,24 +8152,24 @@

      -
    • - 1 +
    • + 2 - def answer_text + valid_date_string = validate_date(content_object_data['dateOfAnswer_dt'].first)
    • -
    • - +
    • + 2 - return if content_object_data['answerText_t'].blank? + return unless valid_date_string
    • @@ -8185,13 +8185,13 @@

      -
    • - +
    • + 1 - CGI::unescapeHTML(content_object_data['answerText_t'].first) + valid_date_string.to_date
    • @@ -8224,18 +8224,18 @@

      - def question_text + def date_of_holding_answer
      -
    • - 2 +
    • + - return if content_object_data['questionText_t'].blank? + return if content_object_data['dateOfHoldingAnswer_dt'].blank?
    • @@ -8257,18 +8257,18 @@

      - CGI::unescapeHTML(content_object_data['questionText_t'].first) + valid_date_string = validate_date(content_object_data['dateOfHoldingAnswer_dt'].first)
      -
    • +
    • - end + return unless valid_date_string
    • @@ -8284,24 +8284,24 @@

      -
    • - 1 +
    • + - def transferred? + valid_date_string.to_date
    • -
    • - 4 +
    • + - return if content_object_data['transferredQuestion_b'].blank? + end
    • @@ -8317,46 +8317,46 @@

      -
    • - 2 +
    • + 1 - return true if content_object_data['transferredQuestion_b'] == 'true' + def tabling_member
    • -
    • - +
    • + 3 - + return if content_object_data['tablingMember_ses'].blank?
    • -
    • - 1 +
    • + - false +
    • -
    • - +
    • + 1 - end + content_object_data['tablingMember_ses'].first
    • @@ -8367,40 +8367,40 @@

      - + end
      -
    • - 1 +
    • + - def attachment +
    • -
    • - +
    • + 1 - # this is the title of the attachment, rather than a link to the resource + def answering_member
    • -
    • - +
    • + 4 - # there can be multiple titles, all of which will be displayed + return if content_object_data['answeringMember_ses'].blank?
    • @@ -8416,13 +8416,13 @@

      -
    • - 3 +
    • + 2 - return if content_object_data['attachmentTitle_t'].blank? + content_object_data['answeringMember_ses'].first
    • @@ -8433,62 +8433,62 @@

      - + end
      -
    • - 1 +
    • + - content_object_data['attachmentTitle_t'] +
    • -
    • - +
    • + 1 - end + def correcting_member
    • -
    • +
    • - + return if content_object_data['correctingMember_ses'].blank?
    • -
    • - 1 +
    • + - def procedure +
    • -
    • +
    • - # no data on this currently + content_object_data['correctingMember_ses'].first
    • @@ -8510,87 +8510,56 @@

      - end + - - - - - -
      -
      -

      app/models/written_statement.rb

      -

      - - 85.71% - - - lines covered -

      - - - -
      - 28 relevant lines. - 24 lines covered and - 4 lines missed. -
      - - - -
      - -
      -    
        -
        -
      1. +
      2. 1 - class WrittenStatement < ContentObject + def answer_text
      3. -
      4. +
      5. - + return if content_object_data['answerText_t'].blank?
      6. -
      7. - 1 +
      8. + - def initialize(content_object_data) +
      9. -
      10. - 22 +
      11. + - super + CGI::unescapeHTML(content_object_data['answerText_t'].first)
      12. -
      13. +
      14. @@ -8601,7 +8570,7 @@

      15. -
      16. +
      17. @@ -8612,117 +8581,117 @@

      18. -
      19. +
      20. 1 - def template + def question_text
      21. -
      22. - 1 +
      23. + 2 - 'search/objects/written_statement' + return if content_object_data['questionText_t'].blank?
      24. -
      25. +
      26. - end +
      27. -
      28. +
      29. - + CGI::unescapeHTML(content_object_data['questionText_t'].first)
      30. -
      31. - 1 +
      32. + - def object_name + end
      33. -
      34. - 1 +
      35. + - "written statement" +
      36. -
      37. - +
      38. + 1 - end + def transferred?
      39. -
      40. - +
      41. + 4 - + return if content_object_data['transferredQuestion_b'].blank?
      42. -
      43. - 1 +
      44. + - def attachment +
      45. -
      46. - +
      47. + 2 - return if content_object_data['attachment_t'].blank? + return true if content_object_data['transferredQuestion_b'] == 'true'
      48. -
      49. +
      50. @@ -8733,18 +8702,18 @@

      51. -
      52. - +
      53. + 1 - content_object_data['attachment_t'].first + false
      54. -
      55. +
      56. @@ -8755,7 +8724,7 @@

      57. -
      58. +
      59. @@ -8766,62 +8735,62 @@

      60. -
      61. +
      62. 1 - def notes + def attachment
      63. -
      64. +
      65. - return if content_object_data['notes_t'].blank? + # this is the title of the attachment, rather than a link to the resource
      66. -
      67. +
      68. - + # there can be multiple titles, all of which will be displayed
      69. -
      70. +
      71. - content_object_data['notes_t'].first +
      72. -
      73. - +
      74. + 3 - end + return if content_object_data['attachmentTitle_t'].blank?
      75. -
      76. +
      77. @@ -8832,29 +8801,29 @@

      78. -
      79. +
      80. 1 - def member + content_object_data['attachmentTitle_t']
      81. -
      82. - 3 +
      83. + - return if content_object_data['member_ses'].blank? + end
      84. -
      85. +
      86. @@ -8865,40 +8834,434 @@

      87. -
      88. +
      89. 1 - content_object_data['member_ses'].first + def procedure
      90. -
      91. +
      92. - end + # no data on this currently
      93. -
      94. +
      95. - + end
      96. -
      97. +
      98. + + + + + + end +
      99. +
        + +
      +
      +
      + + +
      +
      +

      app/models/written_statement.rb

      +

      + + 85.71% + + + lines covered +

      + + + +
      + 28 relevant lines. + 24 lines covered and + 4 lines missed. +
      + + + +
      + +
      +    
        + +
        +
      1. + 1 + + + + + class WrittenStatement < ContentObject +
      2. +
        + +
        +
      3. + + + + + + +
      4. +
        + +
        +
      5. + 1 + + + + + def initialize(content_object_data) +
      6. +
        + +
        +
      7. + 22 + + + + + super +
      8. +
        + +
        +
      9. + + + + + + end +
      10. +
        + +
        +
      11. + + + + + + +
      12. +
        + +
        +
      13. + 1 + + + + + def template +
      14. +
        + +
        +
      15. + 1 + + + + + 'search/objects/written_statement' +
      16. +
        + +
        +
      17. + + + + + + end +
      18. +
        + +
        +
      19. + + + + + + +
      20. +
        + +
        +
      21. + 1 + + + + + def object_name +
      22. +
        + +
        +
      23. + 1 + + + + + "written statement" +
      24. +
        + +
        +
      25. + + + + + + end +
      26. +
        + +
        +
      27. + + + + + + +
      28. +
        + +
        +
      29. + 1 + + + + + def attachment +
      30. +
        + +
        +
      31. + + + + + + return if content_object_data['attachment_t'].blank? +
      32. +
        + +
        +
      33. + + + + + + +
      34. +
        + +
        +
      35. + + + + + + content_object_data['attachment_t'].first +
      36. +
        + +
        +
      37. + + + + + + end +
      38. +
        + +
        +
      39. + + + + + + +
      40. +
        + +
        +
      41. + 1 + + + + + def notes +
      42. +
        + +
        +
      43. + + + + + + return if content_object_data['notes_t'].blank? +
      44. +
        + +
        +
      45. + + + + + + +
      46. +
        + +
        +
      47. + + + + + + content_object_data['notes_t'].first +
      48. +
        + +
        +
      49. + + + + + + end +
      50. +
        + +
        +
      51. + + + + + + +
      52. +
        + +
        +
      53. + 1 + + + + + def member +
      54. +
        + +
        +
      55. + 3 + + + + + return if content_object_data['member_ses'].blank? +
      56. +
        + +
        +
      57. + + + + + + +
      58. +
        + +
        +
      59. + 1 + + + + + content_object_data['member_ses'].first +
      60. +
        + +
        +
      61. + + + + + + end +
      62. +
        + +
        +
      63. + + + + + + +
      64. +
        + +
        +
      65. 1 @@ -21417,7 +21780,7 @@

        spec/models/written_question_spec.rb

        - 98.85% + 100.0% lines covered @@ -21426,9 +21789,9 @@

        - 262 relevant lines. - 259 lines covered and - 3 lines missed. + 278 relevant lines. + 278 lines covered and + 0 lines missed.
        @@ -21472,8 +21835,8 @@

      66. -
      67. - 16 +
      68. + 17 @@ -21780,62 +22143,304 @@

      69. -
      70. - 1 +
      71. + 1 + + + + + context 'where data exists' do +
      72. +
        + +
        +
      73. + 2 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => ['Answered'] }) } +
      74. +
        + +
        +
      75. + + + + + + +
      76. +
        + +
        +
      77. + 1 + + + + + it 'returns first item' do +
      78. +
        + +
        +
      79. + 1 + + + + + expect(written_question.state).to eq('Answered') +
      80. +
        + +
        +
      81. + + + + + + end +
      82. +
        + +
        +
      83. + + + + + + end +
      84. +
        + +
        +
      85. + + + + + + end +
      86. +
        + +
        +
      87. + + + + + + +
      88. +
        + +
        +
      89. + 1 + + + + + describe 'tabled?' do +
      90. +
        + +
        +
      91. + 4 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } +
      92. +
        + +
        +
      93. + 1 + + + + + context 'where state is tabled' do +
      94. +
        + +
        +
      95. + 1 + + + + + it 'returns true' do +
      96. +
        + +
        +
      97. + 1 + + + + + allow(written_question).to receive(:state).and_return('Tabled') +
      98. +
        + +
        +
      99. + 1 + + + + + expect(written_question.tabled?).to eq(true) +
      100. +
        + +
        +
      101. + + + + + + end +
      102. +
        + +
        +
      103. + + + + + + end +
      104. +
        + +
        +
      105. + 1 + + + + + context 'where state is missing' do +
      106. +
        + +
        +
      107. + 1 + + + + + it 'returns false' do +
      108. +
        + +
        +
      109. + 1 + + + + + allow(written_question).to receive(:state).and_return(nil) +
      110. +
        + +
        +
      111. + 1 + + + + + expect(written_question.tabled?).to eq(false) +
      112. +
        + +
        +
      113. + + + + + + end +
      114. +
        + +
        +
      115. + - context 'where data exists' do + end
      116. -
      117. - 2 +
      118. + 1 - let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => ['Answered'] }) } + context 'where state is present but not tabled' do
      119. -
      120. - +
      121. + 1 - + it 'returns false' do
      122. -
      123. +
      124. 1 - it 'returns first item' do + allow(written_question).to receive(:state).and_return('Answered')
      125. -
      126. +
      127. 1 - expect(written_question.state).to eq('Answered') + expect(written_question.tabled?).to eq(false)
      128. -
      129. +
      130. @@ -21846,7 +22451,7 @@

      131. -
      132. +
      133. @@ -21857,7 +22462,7 @@

      134. -
      135. +
      136. @@ -21868,7 +22473,7 @@

      137. -
      138. +
      139. @@ -21879,18 +22484,18 @@

      140. -
      141. +
      142. 1 - describe 'tabled?' do + describe 'answered?' do
      143. -
      144. +
      145. 4 @@ -21901,18 +22506,18 @@

      146. -
      147. +
      148. 1 - context 'where state is tabled' do + context 'where state is answered' do
      149. -
      150. +
      151. 1 @@ -21923,29 +22528,29 @@

      152. -
      153. +
      154. 1 - allow(written_question).to receive(:state).and_return('Tabled') + allow(written_question).to receive(:state).and_return('Answered')
      155. -
      156. +
      157. 1 - expect(written_question.tabled?).to eq(true) + expect(written_question.answered?).to eq(true)
      158. -
      159. +
      160. @@ -21956,7 +22561,7 @@

      161. -
      162. +
      163. @@ -21967,7 +22572,7 @@

      164. -
      165. +
      166. 1 @@ -21978,7 +22583,7 @@

      167. -
      168. +
      169. 1 @@ -21989,7 +22594,7 @@

      170. -
      171. +
      172. 1 @@ -22000,18 +22605,18 @@

      173. -
      174. +
      175. 1 - expect(written_question.tabled?).to eq(false) + expect(written_question.answered?).to eq(false)
      176. -
      177. +
      178. @@ -22022,7 +22627,7 @@

      179. -
      180. +
      181. @@ -22033,18 +22638,18 @@

      182. -
      183. +
      184. 1 - context 'where state is present but not tabled' do + context 'where state is present but not answered' do
      185. -
      186. +
      187. 1 @@ -22055,29 +22660,29 @@

      188. -
      189. +
      190. 1 - allow(written_question).to receive(:state).and_return('Answered') + allow(written_question).to receive(:state).and_return('Holding')
      191. -
      192. +
      193. 1 - expect(written_question.tabled?).to eq(false) + expect(written_question.answered?).to eq(false)
      194. -
      195. +
      196. @@ -22088,7 +22693,7 @@

      197. -
      198. +
      199. @@ -22099,7 +22704,7 @@

      200. -
      201. +
      202. @@ -22110,7 +22715,7 @@

      203. -
      204. +
      205. @@ -22121,18 +22726,18 @@

      206. -
      207. +
      208. 1 - describe 'answered?' do + describe 'holding?' do
      209. -
      210. +
      211. 4 @@ -22143,18 +22748,18 @@

      212. -
      213. +
      214. 1 - context 'where state is answered' do + context 'where state is holding' do
      215. -
      216. +
      217. 1 @@ -22165,29 +22770,29 @@

      218. -
      219. +
      220. 1 - allow(written_question).to receive(:state).and_return('Answered') + allow(written_question).to receive(:state).and_return('Holding')
      221. -
      222. +
      223. 1 - expect(written_question.answered?).to eq(true) + expect(written_question.holding?).to eq(true)
      224. -
      225. +
      226. @@ -22198,7 +22803,7 @@

      227. -
      228. +
      229. @@ -22209,7 +22814,7 @@

      230. -
      231. +
      232. 1 @@ -22220,7 +22825,7 @@

      233. -
      234. +
      235. 1 @@ -22231,7 +22836,7 @@

      236. -
      237. +
      238. 1 @@ -22242,18 +22847,18 @@

      239. -
      240. +
      241. 1 - expect(written_question.answered?).to eq(false) + expect(written_question.holding?).to eq(false)
      242. -
      243. +
      244. @@ -22264,7 +22869,7 @@

      245. -
      246. +
      247. @@ -22275,18 +22880,18 @@

      248. -
      249. +
      250. 1 - context 'where state is present but not answered' do + context 'where state is present but not holding' do
      251. -
      252. +
      253. 1 @@ -22297,139 +22902,249 @@

      254. -
      255. +
      256. 1 - allow(written_question).to receive(:state).and_return('Holding') + allow(written_question).to receive(:state).and_return('Answered was holding')
      257. -
      258. +
      259. 1 - expect(written_question.answered?).to eq(false) + expect(written_question.holding?).to eq(false)
      260. -
      261. +
      262. + + + + + + end +
      263. +
        + +
        +
      264. + + + + + + end +
      265. +
        + +
        +
      266. + + + + + + end +
      267. +
        + +
        +
      268. + + + + + + +
      269. +
        + +
        +
      270. + 1 + + + + + describe 'answered_was_holding?' do +
      271. +
        + +
        +
      272. + 5 + + + + + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } +
      273. +
        + +
        +
      274. + 1 + + + + + context 'where state is answered' do +
      275. +
        + +
        +
      276. + 1 + + + + + context 'where answer is marked as holding and there is a holding answer date' do +
      277. +
        + +
        +
      278. + 1 + + + + + it 'returns true' do +
      279. +
        + +
        +
      280. + 1 + + + + allow(written_question).to receive(:holding_answer?).and_return(true) +
      281. +
        + +
        +
      282. + 1 - end + allow(written_question).to receive(:date_of_holding_answer).and_return(Date.yesterday)
      283. -
      284. - +
      285. + 1 - end + allow(written_question).to receive(:state).and_return('Answered')
      286. -
      287. - +
      288. + 1 - end + expect(written_question.answered_was_holding?).to eq(true)
      289. -
      290. +
      291. - + end
      292. -
      293. - 1 +
      294. + - describe 'holding?' do + end
      295. -
      296. - 4 +
      297. + 1 - let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } + context 'where other required fields are missing' do
      298. -
      299. +
      300. 1 - context 'where state is holding' do + it 'returns false' do
      301. -
      302. +
      303. 1 - it 'returns true' do + allow(written_question).to receive(:state).and_return('Answered')
      304. -
      305. +
      306. 1 - allow(written_question).to receive(:state).and_return('Holding') + expect(written_question.answered_was_holding?).to eq(false)
      307. -
      308. - 1 +
      309. + - expect(written_question.holding?).to eq(true) + end
      310. -
      311. +
      312. @@ -22440,7 +23155,7 @@

      313. -
      314. +
      315. @@ -22451,7 +23166,7 @@

      316. -
      317. +
      318. 1 @@ -22462,7 +23177,7 @@

      319. -
      320. +
      321. 1 @@ -22473,7 +23188,7 @@

      322. -
      323. +
      324. 1 @@ -22484,18 +23199,18 @@

      325. -
      326. +
      327. 1 - expect(written_question.holding?).to eq(false) + expect(written_question.answered_was_holding?).to eq(false)
      328. -
      329. +
      330. @@ -22506,7 +23221,7 @@

      331. -
      332. +
      333. @@ -22517,18 +23232,18 @@

      334. -
      335. +
      336. 1 - context 'where state is present but not holding' do + context 'where state is present but not answered_was_holding' do
      337. -
      338. +
      339. 1 @@ -22539,29 +23254,29 @@

      340. -
      341. +
      342. 1 - allow(written_question).to receive(:state).and_return('Answered was holding') + allow(written_question).to receive(:state).and_return('Withdrawn')
      343. -
      344. +
      345. 1 - expect(written_question.holding?).to eq(false) + expect(written_question.answered_was_holding?).to eq(false)
      346. -
      347. +
      348. @@ -22572,7 +23287,7 @@

      349. -
      350. +
      351. @@ -22583,7 +23298,7 @@

      352. -
      353. +
      354. @@ -22594,7 +23309,7 @@

      355. -
      356. +
      357. @@ -22605,183 +23320,139 @@

      358. -
      359. - 1 - - - - - describe 'answered_was_holding?' do -
      360. -
        - -
        -
      361. - 5 - - - - - let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } -
      362. -
        - -
        -
      363. - 1 - - - - - context 'where state is answered' do -
      364. -
        - -
        -
      365. +
      366. 1 - context 'where answer is marked as holding and there is a holding answer date' do + describe 'withdrawn?' do
      367. -
      368. +
      369. 1 - it 'returns true' do + context 'where state is withdrawn' do
      370. -
      371. - 1 +
      372. + 2 - allow(written_question).to receive(:holding_answer?).and_return(true) + let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) }
      373. -
      374. +
      375. 1 - allow(written_question).to receive(:date_of_holding_answer).and_return(Date.yesterday) + it 'returns true' do
      376. -
      377. +
      378. 1 - allow(written_question).to receive(:state).and_return('Answered') + allow(written_question).to receive(:state).and_return('Withdrawn')
      379. -
      380. +
      381. 1 - expect(written_question.answered_was_holding?).to eq(true) + expect(written_question.withdrawn?).to eq(true)
      382. -
      383. +
      384. - end + end
      385. -
      386. +
      387. - end + end
      388. -
      389. +
      390. 1 - context 'where other required fields are missing' do + context 'where state is missing' do
      391. -
      392. +
      393. 1 - it 'returns false' do + it 'returns false' do
      394. -
      395. +
      396. 1 - allow(written_question).to receive(:state).and_return('Answered') + allow(written_question).to receive(:state).and_return(nil)
      397. -
      398. +
      399. 1 - expect(written_question.answered_was_holding?).to eq(false) -
      400. -
        - -
        -
      401. - - - - - - end + expect(written_question.withdrawn?).to eq(false)
      402. -
      403. +
      404. @@ -22792,7 +23463,7 @@

      405. -
      406. +
      407. @@ -22803,18 +23474,18 @@

      408. -
      409. +
      410. 1 - context 'where state is missing' do + context 'where state is present but not withdrawn' do
      411. -
      412. +
      413. 1 @@ -22825,29 +23496,29 @@

      414. -
      415. +
      416. 1 - allow(written_question).to receive(:state).and_return(nil) + allow(written_question).to receive(:state).and_return('Corrected')
      417. -
      418. +
      419. 1 - expect(written_question.answered_was_holding?).to eq(false) + expect(written_question.withdrawn?).to eq(false)
      420. -
      421. +
      422. @@ -22858,7 +23529,7 @@

      423. -
      424. +
      425. @@ -22869,161 +23540,139 @@

      426. -
      427. - 1 - - +
      428. - - context 'where state is present but not answered_was_holding' do -
      429. -
        - -
        -
      430. - 1 - it 'returns false' do + end
      431. -
      432. - 1 - - +
      433. - - allow(written_question).to receive(:state).and_return('Withdrawn') -
      434. -
        - -
        -
      435. - 1 - expect(written_question.answered_was_holding?).to eq(false) +
      436. -
      437. - +
      438. + 1 - end + describe 'corrected?' do
      439. -
      440. - +
      441. + 1 - end + context 'where corrected boolean is true' do
      442. -
      443. - +
      444. + 2 - end + let!(:written_question) { WrittenQuestion.new({ 'correctedWmsMc_b' => 'true' }) }
      445. -
      446. - +
      447. + 1 - + it 'returns true' do
      448. -
      449. +
      450. 1 - describe 'withdrawn?' do + expect(written_question.corrected?).to eq(true)
      451. -
      452. - 1 +
      453. + - context 'where state is withdrawn' do + end
      454. -
      455. - 2 +
      456. + - let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } + end
      457. -
      458. +
      459. 1 - it 'returns true' do + context 'where corrected boolean is missing' do
      460. -
      461. +
      462. 1 - allow(written_question).to receive(:state).and_return('Withdrawn') + it 'returns false' do
      463. -
      464. +
      465. 1 - expect(written_question.withdrawn?).to eq(true) + expect(written_question.corrected?).to eq(false)
      466. -
      467. +
      468. @@ -23034,7 +23683,7 @@

      469. -
      470. +
      471. @@ -23045,51 +23694,51 @@

      472. -
      473. +
      474. 1 - context 'where state is missing' do + context 'where state is present but not true' do
      475. -
      476. - 1 +
      477. + 2 - it 'returns false' do + let!(:written_question) { WrittenQuestion.new({ 'correctedWmsMc_b' => 'false' }) }
      478. -
      479. +
      480. 1 - allow(written_question).to receive(:state).and_return(nil) + it 'returns false' do
      481. -
      482. +
      483. 1 - expect(written_question.withdrawn?).to eq(false) + expect(written_question.corrected?).to eq(false)
      484. -
      485. +
      486. @@ -23100,7 +23749,7 @@

      487. -
      488. +
      489. @@ -23111,227 +23760,227 @@

      490. -
      491. - 1 +
      492. + - context 'where state is present but not withdrawn' do + end
      493. -
      494. - 1 +
      495. + - it 'returns false' do +
      496. -
      497. +
      498. 1 - allow(written_question).to receive(:state).and_return('Corrected') + describe 'correcting_object' do
      499. -
      500. +
      501. 1 - expect(written_question.withdrawn?).to eq(false) + context 'where corrected' do
      502. -
      503. - +
      504. + 1 - end + context 'where URI is missing' do
      505. -
      506. - +
      507. + 2 - end + let!(:written_question) { WrittenQuestion.new({ 'correctingItem_uri' => '' }) }
      508. -
      509. - +
      510. + 1 - end + it 'returns nil' do
      511. -
      512. - +
      513. + 1 - + allow(written_question).to receive(:corrected?).and_return(true)
      514. -
      515. +
      516. 1 - describe 'corrected?' do + expect(written_question.correcting_object).to be_nil
      517. -
      518. - 1 +
      519. + - context 'where state is corrected' do + end
      520. -
      521. - 2 +
      522. + - let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } + end
      523. -
      524. +
      525. 1 - it 'returns true' do + context 'where URI is present' do
      526. -
      527. - 1 +
      528. + 2 - allow(written_question).to receive(:state).and_return('Corrected') + let!(:written_question) { WrittenQuestion.new({ 'correctingItem_uri' => 'test' }) }
      529. -
      530. - 1 +
      531. + 2 - expect(written_question.corrected?).to eq(true) + let!(:test_data) { { "type_ses" => [93522] } }
      532. -
      533. +
      534. - end +
      535. -
      536. - +
      537. + 1 - end + it 'returns a written question object' do
      538. -
      539. +
      540. 1 - context 'where state is missing' do + allow(written_question).to receive(:corrected?).and_return(true)
      541. -
      542. +
      543. 1 - it 'returns false' do + allow_any_instance_of(ApiCall).to receive(:object_data).and_return(test_data)
      544. -
      545. +
      546. 1 - allow(written_question).to receive(:state).and_return(nil) + expect(written_question.correcting_object).to be_an_instance_of(WrittenQuestion)
      547. -
      548. - 1 +
      549. + - expect(written_question.corrected?).to eq(false) + end
      550. -
      551. +
      552. @@ -23342,7 +23991,7 @@

      553. -
      554. +
      555. @@ -23353,51 +24002,51 @@

      556. -
      557. +
      558. 1 - context 'where state is present but not corrected' do + context 'where not corrected' do
      559. -
      560. +
      561. 1 - it 'returns false' do + it 'returns nil' do
      562. -
      563. +
      564. 1 - allow(written_question).to receive(:state).and_return('Tabled') + allow(written_question).to receive(:corrected?).and_return(false)
      565. -
      566. +
      567. 1 - expect(written_question.corrected?).to eq(false) + expect(written_question.correcting_object).to be_nil
      568. -
      569. +
      570. @@ -23408,7 +24057,7 @@

      571. -
      572. +
      573. @@ -23419,7 +24068,7 @@

      574. -
      575. +
      576. @@ -23430,7 +24079,7 @@

      577. -
      578. +
      579. @@ -23441,7 +24090,7 @@

      580. -
      581. +
      582. 1 @@ -23452,7 +24101,7 @@

      583. -
      584. +
      585. 1 @@ -23463,7 +24112,7 @@

      586. -
      587. +
      588. 1 @@ -23474,7 +24123,7 @@

      589. -
      590. +
      591. 1 @@ -23485,7 +24134,7 @@

      592. -
      593. +
      594. @@ -23496,7 +24145,7 @@

      595. -
      596. +
      597. @@ -23507,7 +24156,7 @@

      598. -
      599. +
      600. @@ -23518,7 +24167,7 @@

      601. -
      602. +
      603. 1 @@ -23529,7 +24178,7 @@

      604. -
      605. +
      606. 2 @@ -23540,7 +24189,7 @@

      607. -
      608. +
      609. 1 @@ -23551,7 +24200,7 @@

      610. -
      611. +
      612. 1 @@ -23562,7 +24211,7 @@

      613. -
      614. +
      615. @@ -23573,7 +24222,7 @@

      616. -
      617. +
      618. @@ -23584,7 +24233,7 @@

      619. -
      620. +
      621. @@ -23595,7 +24244,7 @@

      622. -
      623. +
      624. 1 @@ -23606,7 +24255,7 @@

      625. -
      626. +
      627. 2 @@ -23617,7 +24266,7 @@

      628. -
      629. +
      630. @@ -23628,7 +24277,7 @@

      631. -
      632. +
      633. 1 @@ -23639,7 +24288,7 @@

      634. -
      635. +
      636. 1 @@ -23650,7 +24299,7 @@

      637. -
      638. +
      639. @@ -23661,7 +24310,7 @@

      640. -
      641. +
      642. @@ -23672,7 +24321,7 @@

      643. -
      644. +
      645. @@ -23683,7 +24332,7 @@

      646. -
      647. +
      648. @@ -23694,7 +24343,7 @@

      649. -
      650. +
      651. 1 @@ -23705,7 +24354,7 @@

      652. -
      653. +
      654. 7 @@ -23716,7 +24365,7 @@

      655. -
      656. +
      657. 1 @@ -23727,7 +24376,7 @@

      658. -
      659. +
      660. 1 @@ -23738,7 +24387,7 @@

      661. -
      662. +
      663. 1 @@ -23749,7 +24398,7 @@

      664. -
      665. +
      666. 1 @@ -23760,7 +24409,7 @@

      667. -
      668. +
      669. @@ -23771,7 +24420,7 @@

      670. -
      671. +
      672. @@ -23782,7 +24431,7 @@

      673. -
      674. +
      675. 1 @@ -23793,7 +24442,7 @@

      676. -
      677. +
      678. 1 @@ -23804,7 +24453,7 @@

      679. -
      680. +
      681. 1 @@ -23815,7 +24464,7 @@

      682. -
      683. +
      684. 1 @@ -23826,7 +24475,7 @@

      685. -
      686. +
      687. @@ -23837,7 +24486,7 @@

      688. -
      689. +
      690. @@ -23848,7 +24497,7 @@

      691. -
      692. +
      693. 1 @@ -23859,7 +24508,7 @@

      694. -
      695. +
      696. 1 @@ -23870,7 +24519,7 @@

      697. -
      698. +
      699. 1 @@ -23881,7 +24530,7 @@

      700. -
      701. +
      702. 1 @@ -23892,7 +24541,7 @@

      703. -
      704. +
      705. @@ -23903,7 +24552,7 @@

      706. -
      707. +
      708. @@ -23914,7 +24563,7 @@

      709. -
      710. +
      711. 1 @@ -23925,7 +24574,7 @@

      712. -
      713. +
      714. 1 @@ -23936,7 +24585,7 @@

      715. -
      716. +
      717. 1 @@ -23947,7 +24596,7 @@

      718. -
      719. +
      720. 1 @@ -23958,7 +24607,7 @@

      721. -
      722. +
      723. @@ -23969,7 +24618,7 @@

      724. -
      725. +
      726. @@ -23980,7 +24629,7 @@

      727. -
      728. +
      729. 1 @@ -23991,7 +24640,7 @@

      730. -
      731. +
      732. 1 @@ -24002,7 +24651,7 @@

      733. -
      734. +
      735. 1 @@ -24013,7 +24662,7 @@

      736. -
      737. +
      738. 1 @@ -24024,7 +24673,7 @@

      739. -
      740. +
      741. @@ -24035,7 +24684,7 @@

      742. -
      743. +
      744. @@ -24046,7 +24695,7 @@

      745. -
      746. +
      747. 1 @@ -24057,7 +24706,7 @@

      748. -
      749. +
      750. 1 @@ -24068,18 +24717,18 @@

      751. -
      752. +
      753. 1 - allow(written_question).to receive(:state).and_return('Corrected') + allow(written_question).to receive(:corrected?).and_return(true)
      754. -
      755. +
      756. 1 @@ -24090,7 +24739,7 @@

      757. -
      758. +
      759. @@ -24101,7 +24750,7 @@

      760. -
      761. +
      762. @@ -24112,7 +24761,7 @@

      763. -
      764. +
      765. @@ -24123,7 +24772,7 @@

      766. -
      767. +
      768. @@ -24134,29 +24783,18 @@

      769. -
      770. +
      771. 1 - xdescribe 'uin' do -
      772. -
        - -
        -
      773. - - - - - - # disabled - no data + describe 'uin' do
      774. -
      775. +
      776. 1 @@ -24167,7 +24805,7 @@

      777. -
      778. +
      779. 1 @@ -24178,8 +24816,8 @@

      780. -
      781. - +
      782. + 1 @@ -24189,7 +24827,7 @@

      783. -
      784. +
      785. @@ -24200,7 +24838,7 @@

      786. -
      787. +
      788. @@ -24211,7 +24849,7 @@

      789. -
      790. +
      791. @@ -24222,7 +24860,7 @@

      792. -
      793. +
      794. 1 @@ -24233,18 +24871,18 @@

      795. -
      796. - 1 +
      797. + 2 - let!(:written_question) { WrittenQuestion.new({ '' => [] }) } + let!(:written_question) { WrittenQuestion.new({ 'identifier_t' => [] }) }
      798. -
      799. +
      800. 1 @@ -24255,8 +24893,8 @@

      801. -
      802. - +
      803. + 1 @@ -24266,7 +24904,7 @@

      804. -
      805. +
      806. @@ -24277,7 +24915,7 @@

      807. -
      808. +
      809. @@ -24288,7 +24926,7 @@

      810. -
      811. +
      812. @@ -24299,7 +24937,7 @@

      813. -
      814. +
      815. 1 @@ -24310,18 +24948,18 @@

      816. -
      817. - 1 +
      818. + 2 - let!(:written_question) { WrittenQuestion.new({ '' => [12345, 67890] }) } + let!(:written_question) { WrittenQuestion.new({ 'identifier_t' => ['item one', 'item two'] }) }
      819. -
      820. +
      821. @@ -24332,29 +24970,29 @@

      822. -
      823. +
      824. 1 - it 'returns first item' do + it 'returns all items' do
      825. -
      826. - +
      827. + 1 - expect(written_question.uin).to eq(12345) + expect(written_question.uin).to eq(['item one', 'item two'])
      828. -
      829. +
      830. @@ -24365,7 +25003,7 @@

      831. -
      832. +
      833. @@ -24376,7 +25014,7 @@

      834. -
      835. +
      836. @@ -24387,7 +25025,7 @@

      837. -
      838. +
      839. @@ -24398,7 +25036,7 @@

      840. -
      841. +
      842. 1 @@ -24409,7 +25047,7 @@

      843. -
      844. +
      845. 1 @@ -24420,7 +25058,7 @@

      846. -
      847. +
      848. 1 @@ -24431,7 +25069,7 @@

      849. -
      850. +
      851. 1 @@ -24442,7 +25080,7 @@

      852. -
      853. +
      854. @@ -24453,7 +25091,7 @@

      855. -
      856. +
      857. @@ -24464,7 +25102,7 @@

      858. -
      859. +
      860. @@ -24475,7 +25113,7 @@

      861. -
      862. +
      863. 1 @@ -24486,7 +25124,7 @@

      864. -
      865. +
      866. 2 @@ -24497,7 +25135,7 @@

      867. -
      868. +
      869. 1 @@ -24508,7 +25146,7 @@

      870. -
      871. +
      872. 1 @@ -24519,7 +25157,7 @@

      873. -
      874. +
      875. @@ -24530,7 +25168,7 @@

      876. -
      877. +
      878. @@ -24541,7 +25179,7 @@

      879. -
      880. +
      881. @@ -24552,7 +25190,7 @@

      882. -
      883. +
      884. 1 @@ -24563,7 +25201,7 @@

      885. -
      886. +
      887. 1 @@ -24574,7 +25212,7 @@

      888. -
      889. +
      890. 2 @@ -24585,7 +25223,7 @@

      891. -
      892. +
      893. 1 @@ -24596,7 +25234,7 @@

      894. -
      895. +
      896. 1 @@ -24607,7 +25245,7 @@

      897. -
      898. +
      899. @@ -24618,7 +25256,7 @@

      900. -
      901. +
      902. @@ -24629,7 +25267,7 @@

      903. -
      904. +
      905. 1 @@ -24640,7 +25278,7 @@

      906. -
      907. +
      908. 2 @@ -24651,7 +25289,7 @@

      909. -
      910. +
      911. 1 @@ -24662,7 +25300,7 @@

      912. -
      913. +
      914. 1 @@ -24673,7 +25311,7 @@

      915. -
      916. +
      917. @@ -24684,7 +25322,7 @@

      918. -
      919. +
      920. @@ -24695,7 +25333,7 @@

      921. -
      922. +
      923. @@ -24706,7 +25344,7 @@

      924. -
      925. +
      926. @@ -24717,7 +25355,7 @@

      927. -
      928. +
      929. @@ -24728,7 +25366,7 @@

      930. -
      931. +
      932. 1 @@ -24739,7 +25377,7 @@

      933. -
      934. +
      935. 1 @@ -24750,7 +25388,7 @@

      936. -
      937. +
      938. 1 @@ -24761,7 +25399,7 @@

      939. -
      940. +
      941. 1 @@ -24772,7 +25410,7 @@

      942. -
      943. +
      944. @@ -24783,7 +25421,7 @@

      945. -
      946. +
      947. @@ -24794,7 +25432,7 @@

      948. -
      949. +
      950. @@ -24805,7 +25443,7 @@

      951. -
      952. +
      953. 1 @@ -24816,7 +25454,7 @@

      954. -
      955. +
      956. 2 @@ -24827,7 +25465,7 @@

      957. -
      958. +
      959. 1 @@ -24838,7 +25476,7 @@

      960. -
      961. +
      962. 1 @@ -24849,7 +25487,7 @@

      963. -
      964. +
      965. @@ -24860,7 +25498,7 @@

      966. -
      967. +
      968. @@ -24871,7 +25509,7 @@

      969. -
      970. +
      971. @@ -24882,7 +25520,7 @@

      972. -
      973. +
      974. 1 @@ -24893,7 +25531,7 @@

      975. -
      976. +
      977. 1 @@ -24904,7 +25542,7 @@

      978. -
      979. +
      980. @@ -24915,7 +25553,7 @@

      981. -
      982. +
      983. 1 @@ -24926,7 +25564,7 @@

      984. -
      985. +
      986. 2 @@ -24937,7 +25575,7 @@

      987. -
      988. +
      989. 1 @@ -24948,7 +25586,7 @@

      990. -
      991. +
      992. 1 @@ -24959,7 +25597,7 @@

      993. -
      994. +
      995. @@ -24970,7 +25608,7 @@

      996. -
      997. +
      998. @@ -24981,7 +25619,7 @@

      999. -
      1000. +
      1001. 1 @@ -24992,7 +25630,7 @@

      1002. -
      1003. +
      1004. 2 @@ -25003,7 +25641,7 @@

      1005. -
      1006. +
      1007. 1 @@ -25014,7 +25652,7 @@

      1008. -
      1009. +
      1010. 1 @@ -25025,7 +25663,7 @@

      1011. -
      1012. +
      1013. @@ -25036,7 +25674,7 @@

      1014. -
      1015. +
      1016. @@ -25047,7 +25685,7 @@

      1017. -
      1018. +
      1019. @@ -25058,7 +25696,7 @@

      1020. -
      1021. +
      1022. @@ -25069,7 +25707,7 @@

      1023. -
      1024. +
      1025. @@ -25080,7 +25718,7 @@

      1026. -
      1027. +
      1028. 1 @@ -25091,7 +25729,7 @@

      1029. -
      1030. +
      1031. 1 @@ -25102,7 +25740,7 @@

      1032. -
      1033. +
      1034. 1 @@ -25113,7 +25751,7 @@

      1035. -
      1036. +
      1037. 1 @@ -25124,7 +25762,7 @@

      1038. -
      1039. +
      1040. @@ -25135,7 +25773,7 @@

      1041. -
      1042. +
      1043. @@ -25146,7 +25784,7 @@

      1044. -
      1045. +
      1046. @@ -25157,7 +25795,7 @@

      1047. -
      1048. +
      1049. 1 @@ -25168,7 +25806,7 @@

      1050. -
      1051. +
      1052. 2 @@ -25179,7 +25817,7 @@

      1053. -
      1054. +
      1055. 1 @@ -25190,7 +25828,7 @@

      1056. -
      1057. +
      1058. 1 @@ -25201,7 +25839,7 @@

      1059. -
      1060. +
      1061. @@ -25212,7 +25850,7 @@

      1062. -
      1063. +
      1064. @@ -25223,7 +25861,7 @@

      1065. -
      1066. +
      1067. @@ -25234,7 +25872,7 @@

      1068. -
      1069. +
      1070. 1 @@ -25245,7 +25883,7 @@

      1071. -
      1072. +
      1073. 2 @@ -25256,7 +25894,7 @@

      1074. -
      1075. +
      1076. @@ -25267,7 +25905,7 @@

      1077. -
      1078. +
      1079. 1 @@ -25278,7 +25916,7 @@

      1080. -
      1081. +
      1082. 1 @@ -25289,7 +25927,7 @@

      1083. -
      1084. +
      1085. @@ -25300,7 +25938,7 @@

      1086. -
      1087. +
      1088. @@ -25311,7 +25949,7 @@

      1089. -
      1090. +
      1091. @@ -25322,7 +25960,7 @@

      1092. -
      1093. +
      1094. @@ -25333,7 +25971,7 @@

      1095. -
      1096. +
      1097. 1 @@ -25344,7 +25982,7 @@

      1098. -
      1099. +
      1100. 1 @@ -25355,7 +25993,7 @@

      1101. -
      1102. +
      1103. 1 @@ -25366,7 +26004,7 @@

      1104. -
      1105. +
      1106. 1 @@ -25377,7 +26015,7 @@

      1107. -
      1108. +
      1109. @@ -25388,7 +26026,7 @@

      1110. -
      1111. +
      1112. @@ -25399,7 +26037,7 @@

      1113. -
      1114. +
      1115. @@ -25410,7 +26048,7 @@

      1116. -
      1117. +
      1118. 1 @@ -25421,7 +26059,7 @@

      1119. -
      1120. +
      1121. 2 @@ -25432,7 +26070,7 @@

      1122. -
      1123. +
      1124. 1 @@ -25443,7 +26081,7 @@

      1125. -
      1126. +
      1127. 1 @@ -25454,7 +26092,7 @@

      1128. -
      1129. +
      1130. @@ -25465,7 +26103,7 @@

      1131. -
      1132. +
      1133. @@ -25476,7 +26114,7 @@

      1134. -
      1135. +
      1136. @@ -25487,7 +26125,7 @@

      1137. -
      1138. +
      1139. 1 @@ -25498,7 +26136,7 @@

      1140. -
      1141. +
      1142. 2 @@ -25509,7 +26147,7 @@

      1143. -
      1144. +
      1145. @@ -25520,7 +26158,7 @@

      1146. -
      1147. +
      1148. 1 @@ -25531,7 +26169,7 @@

      1149. -
      1150. +
      1151. 1 @@ -25542,7 +26180,7 @@

      1152. -
      1153. +
      1154. @@ -25553,7 +26191,7 @@

      1155. -
      1156. +
      1157. @@ -25564,7 +26202,7 @@

      1158. -
      1159. +
      1160. @@ -25575,7 +26213,7 @@

      1161. -
      1162. +
      1163. @@ -25586,7 +26224,7 @@

      1164. -
      1165. +
      1166. 1 @@ -25597,7 +26235,7 @@

      1167. -
      1168. +
      1169. 1 @@ -25608,7 +26246,7 @@

      1170. -
      1171. +
      1172. 1 @@ -25619,7 +26257,7 @@

      1173. -
      1174. +
      1175. 1 @@ -25630,7 +26268,7 @@

      1176. -
      1177. +
      1178. @@ -25641,7 +26279,7 @@

      1179. -
      1180. +
      1181. @@ -25652,7 +26290,7 @@

      1182. -
      1183. +
      1184. @@ -25663,7 +26301,7 @@

      1185. -
      1186. +
      1187. 1 @@ -25674,7 +26312,7 @@

      1188. -
      1189. +
      1190. 2 @@ -25685,7 +26323,7 @@

      1191. -
      1192. +
      1193. 1 @@ -25696,7 +26334,7 @@

      1194. -
      1195. +
      1196. 1 @@ -25707,7 +26345,7 @@

      1197. -
      1198. +
      1199. @@ -25718,7 +26356,7 @@

      1200. -
      1201. +
      1202. @@ -25729,7 +26367,7 @@

      1203. -
      1204. +
      1205. @@ -25740,7 +26378,7 @@

      1206. -
      1207. +
      1208. 1 @@ -25751,7 +26389,7 @@

      1209. -
      1210. +
      1211. 2 @@ -25762,7 +26400,7 @@

      1212. -
      1213. +
      1214. @@ -25773,7 +26411,7 @@

      1215. -
      1216. +
      1217. 1 @@ -25784,7 +26422,7 @@

      1218. -
      1219. +
      1220. 1 @@ -25795,7 +26433,7 @@

      1221. -
      1222. +
      1223. @@ -25806,7 +26444,7 @@

      1224. -
      1225. +
      1226. @@ -25817,7 +26455,7 @@

      1227. -
      1228. +
      1229. @@ -25828,7 +26466,7 @@

      1230. -
      1231. +
      1232. @@ -25839,7 +26477,7 @@

      1233. -
      1234. +
      1235. 1 @@ -25850,7 +26488,7 @@

      1236. -
      1237. +
      1238. 1 @@ -25861,7 +26499,7 @@

      1239. -
      1240. +
      1241. 1 @@ -25872,7 +26510,7 @@

      1242. -
      1243. +
      1244. 1 @@ -25883,7 +26521,7 @@

      1245. -
      1246. +
      1247. @@ -25894,7 +26532,7 @@

      1248. -
      1249. +
      1250. @@ -25905,7 +26543,7 @@

      1251. -
      1252. +
      1253. @@ -25916,7 +26554,7 @@

      1254. -
      1255. +
      1256. 1 @@ -25927,7 +26565,7 @@

      1257. -
      1258. +
      1259. 2 @@ -25938,7 +26576,7 @@

      1260. -
      1261. +
      1262. 1 @@ -25949,7 +26587,7 @@

      1263. -
      1264. +
      1265. 1 @@ -25960,7 +26598,7 @@

      1266. -
      1267. +
      1268. @@ -25971,7 +26609,7 @@

      1269. -
      1270. +
      1271. @@ -25982,7 +26620,7 @@

      1272. -
      1273. +
      1274. @@ -25993,7 +26631,7 @@

      1275. -
      1276. +
      1277. 1 @@ -26004,7 +26642,7 @@

      1278. -
      1279. +
      1280. 2 @@ -26015,7 +26653,7 @@

      1281. -
      1282. +
      1283. @@ -26026,7 +26664,7 @@

      1284. -
      1285. +
      1286. 1 @@ -26037,7 +26675,7 @@

      1287. -
      1288. +
      1289. 1 @@ -26048,7 +26686,7 @@

      1290. -
      1291. +
      1292. @@ -26059,7 +26697,7 @@

      1293. -
      1294. +
      1295. @@ -26070,7 +26708,7 @@

      1296. -
      1297. +
      1298. @@ -26081,7 +26719,7 @@

      1299. -
      1300. +
      1301. @@ -26092,7 +26730,7 @@

      1302. -
      1303. +
      1304. 1 @@ -26103,7 +26741,7 @@

      1305. -
      1306. +
      1307. 1 @@ -26114,7 +26752,7 @@

      1308. -
      1309. +
      1310. 1 @@ -26125,7 +26763,7 @@

      1311. -
      1312. +
      1313. 1 @@ -26136,7 +26774,7 @@

      1314. -
      1315. +
      1316. @@ -26147,7 +26785,7 @@

      1317. -
      1318. +
      1319. @@ -26158,7 +26796,7 @@

      1320. -
      1321. +
      1322. @@ -26169,7 +26807,7 @@

      1323. -
      1324. +
      1325. 1 @@ -26180,7 +26818,7 @@

      1326. -
      1327. +
      1328. 2 @@ -26191,7 +26829,7 @@

      1329. -
      1330. +
      1331. 1 @@ -26202,7 +26840,7 @@

      1332. -
      1333. +
      1334. 1 @@ -26213,7 +26851,7 @@

      1335. -
      1336. +
      1337. @@ -26224,7 +26862,7 @@

      1338. -
      1339. +
      1340. @@ -26235,7 +26873,7 @@

      1341. -
      1342. +
      1343. @@ -26246,7 +26884,7 @@

      1344. -
      1345. +
      1346. 1 @@ -26257,7 +26895,7 @@

      1347. -
      1348. +
      1349. 1 @@ -26268,7 +26906,7 @@

      1350. -
      1351. +
      1352. 2 @@ -26279,7 +26917,7 @@

      1353. -
      1354. +
      1355. 1 @@ -26290,7 +26928,7 @@

      1356. -
      1357. +
      1358. 1 @@ -26301,7 +26939,7 @@

      1359. -
      1360. +
      1361. @@ -26312,7 +26950,7 @@

      1362. -
      1363. +
      1364. @@ -26323,7 +26961,7 @@

      1365. -
      1366. +
      1367. @@ -26334,7 +26972,7 @@

      1368. -
      1369. +
      1370. 1 @@ -26345,7 +26983,7 @@

      1371. -
      1372. +
      1373. 2 @@ -26356,7 +26994,7 @@

      1374. -
      1375. +
      1376. 1 @@ -26367,7 +27005,7 @@

      1377. -
      1378. +
      1379. 1 @@ -26378,7 +27016,7 @@

      1380. -
      1381. +
      1382. @@ -26389,7 +27027,7 @@

      1383. -
      1384. +
      1385. @@ -26400,7 +27038,7 @@

      1386. -
      1387. +
      1388. @@ -26411,7 +27049,7 @@

      1389. -
      1390. +
      1391. @@ -26422,7 +27060,7 @@

      1392. -
      1393. +
      1394. diff --git a/spec/models/written_question_spec.rb b/spec/models/written_question_spec.rb index 75c0bab5..e449c595 100644 --- a/spec/models/written_question_spec.rb +++ b/spec/models/written_question_spec.rb @@ -159,27 +159,53 @@ end describe 'corrected?' do - context 'where state is corrected' do - let!(:written_question) { WrittenQuestion.new({ 'pqStatus_t' => '' }) } + context 'where corrected boolean is true' do + let!(:written_question) { WrittenQuestion.new({ 'correctedWmsMc_b' => 'true' }) } it 'returns true' do - allow(written_question).to receive(:state).and_return('Corrected') expect(written_question.corrected?).to eq(true) end end - context 'where state is missing' do + context 'where corrected boolean is missing' do it 'returns false' do - allow(written_question).to receive(:state).and_return(nil) expect(written_question.corrected?).to eq(false) end end - context 'where state is present but not corrected' do + context 'where state is present but not true' do + let!(:written_question) { WrittenQuestion.new({ 'correctedWmsMc_b' => 'false' }) } it 'returns false' do - allow(written_question).to receive(:state).and_return('Tabled') expect(written_question.corrected?).to eq(false) end end end + describe 'correcting_object' do + context 'where corrected' do + context 'where URI is missing' do + let!(:written_question) { WrittenQuestion.new({ 'correctingItem_uri' => '' }) } + it 'returns nil' do + allow(written_question).to receive(:corrected?).and_return(true) + expect(written_question.correcting_object).to be_nil + end + end + context 'where URI is present' do + let!(:written_question) { WrittenQuestion.new({ 'correctingItem_uri' => 'test' }) } + let!(:test_data) { { "type_ses" => [93522] } } + + it 'returns a written question object' do + allow(written_question).to receive(:corrected?).and_return(true) + allow_any_instance_of(ApiCall).to receive(:object_data).and_return(test_data) + expect(written_question.correcting_object).to be_an_instance_of(WrittenQuestion) + end + end + end + context 'where not corrected' do + it 'returns nil' do + allow(written_question).to receive(:corrected?).and_return(false) + expect(written_question.correcting_object).to be_nil + end + end + end + describe 'department' do context 'where there is no data' do it 'returns nil' do @@ -237,14 +263,13 @@ end context 'where corrected' do it 'returns the correct path' do - allow(written_question).to receive(:state).and_return('Corrected') + allow(written_question).to receive(:corrected?).and_return(true) expect(written_question.prelim_partial).to eq('/search/fragments/written_question_prelim_corrected') end end end - xdescribe 'uin' do - # disabled - no data + describe 'uin' do context 'where there is no data' do it 'returns nil' do expect(written_question.uin).to be_nil @@ -252,17 +277,17 @@ end context 'where there is an empty array' do - let!(:written_question) { WrittenQuestion.new({ '' => [] }) } + let!(:written_question) { WrittenQuestion.new({ 'identifier_t' => [] }) } it 'returns nil' do expect(written_question.uin).to be_nil end end context 'where data exists' do - let!(:written_question) { WrittenQuestion.new({ '' => [12345, 67890] }) } + let!(:written_question) { WrittenQuestion.new({ 'identifier_t' => ['item one', 'item two'] }) } - it 'returns first item' do - expect(written_question.uin).to eq(12345) + it 'returns all items' do + expect(written_question.uin).to eq(['item one', 'item two']) end end end From 81c52e570aa1ea626dd31b0b9200f8763a800af7 Mon Sep 17 00:00:00 2001 From: j-corry Date: Fri, 22 Sep 2023 16:22:41 +0100 Subject: [PATCH 3/6] - Various changes to written question preliminary sentences --- app/models/content_object.rb | 1 - app/models/written_question.rb | 24 +- app/views/search/fragments/_data.html.erb | 20 +- ..._written_question_prelim_answered.html.erb | 10 +- ...stion_prelim_answered_was_holding.html.erb | 13 +- ...written_question_prelim_corrected.html.erb | 19 +- .../_written_question_prelim_holding.html.erb | 11 +- .../_written_question_prelim_tabled.html.erb | 8 +- ...written_question_prelim_withdrawn.html.erb | 4 +- .../search/objects/written_question.html.erb | 4 +- coverage/.resultset.json | 62 +- coverage/index.html | 1216 ++++++++--------- spec/models/edm_spec.rb | 3 +- spec/models/research_briefing_spec.rb | 3 +- spec/models/written_statement_spec.rb | 9 +- 15 files changed, 694 insertions(+), 713 deletions(-) diff --git a/app/models/content_object.rb b/app/models/content_object.rb index 727a1962..107d35a0 100644 --- a/app/models/content_object.rb +++ b/app/models/content_object.rb @@ -106,7 +106,6 @@ def notes end def related_items - # no test data for related items currently available # based on provided information, this will return one or more URIs of related item object pages return if content_object_data['relation_t'].blank? diff --git a/app/models/written_question.rb b/app/models/written_question.rb index af9b7af8..9df83310 100644 --- a/app/models/written_question.rb +++ b/app/models/written_question.rb @@ -34,8 +34,12 @@ def answered_was_holding? # There is no state string for this, it must be derived return false unless state == 'Answered' + # the following correspond to the holding state and their presence allows us to determine that this answered + # question formerly had the state 'holding': + # 1. the question has received a holding answer: return false unless holding_answer? + # 2. the date this question received a holding answer: return false if date_of_holding_answer.blank? true @@ -128,6 +132,14 @@ def date_of_answer valid_date_string.to_date end + def date_for_answer + # This is required by the views as currently wireframed: + # 'it was due for answer on ' + # Currently unclear on the field holding this information + + nil + end + def date_of_holding_answer return if content_object_data['dateOfHoldingAnswer_dt'].blank? @@ -143,16 +155,22 @@ def tabling_member content_object_data['tablingMember_ses'].first end + def tabling_member_party + return if content_object_data['tablingMemberParty_ses'].blank? + + content_object_data['tablingMemberParty_ses'].first + end + def answering_member return if content_object_data['answeringMember_ses'].blank? content_object_data['answeringMember_ses'].first end - def correcting_member - return if content_object_data['correctingMember_ses'].blank? + def answering_member_party + return if content_object_data['answeringMemberParty_ses'].blank? - content_object_data['correctingMember_ses'].first + content_object_data['tablingMemberParty_ses'].first end def answer_text diff --git a/app/views/search/fragments/_data.html.erb b/app/views/search/fragments/_data.html.erb index 9b19e972..dba66b40 100644 --- a/app/views/search/fragments/_data.html.erb +++ b/app/views/search/fragments/_data.html.erb @@ -1,9 +1,13 @@ <%# A template to render the raw SOLR data. %> -
        - - SOLR data - - - <%= data %> - -
        \ No newline at end of file +
        +
        +
        + + SOLR data + + + <%= data %> + +
        +
        +
        diff --git a/app/views/search/fragments/_written_question_prelim_answered.html.erb b/app/views/search/fragments/_written_question_prelim_answered.html.erb index b0a38c60..2843ccba 100644 --- a/app/views/search/fragments/_written_question_prelim_answered.html.erb +++ b/app/views/search/fragments/_written_question_prelim_answered.html.erb @@ -2,15 +2,15 @@
        A <%= object_link("#{object.object_name.titleize}", '/') %> - was asked by <%= object_link("#{object.tabling_member}", '/') %> + was asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, - in the <%= object_link("#{object.department}", '/') %>. + in the <%= object_link("#{object.legislature}", '/') %>. It was due for answer - on <%= object.date_of_answer.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> + on <%= object.date_for_answer.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> (named day). - It was answered by <%= object_link("#{object.answering_member}", '/') %> + It was answered by <%= object_link("#{object.answering_member}", '/') %> (<%= object.answering_member_party %>) on <%= object.date_of_answer.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> - on behalf of <%= object_link("#{object.legislature}", '/') %>. + on behalf of <%= object_link("#{object.department}", '/') %>.
      1395. diff --git a/app/views/search/fragments/_written_question_prelim_answered_was_holding.html.erb b/app/views/search/fragments/_written_question_prelim_answered_was_holding.html.erb index 0b95ec29..01b73392 100644 --- a/app/views/search/fragments/_written_question_prelim_answered_was_holding.html.erb +++ b/app/views/search/fragments/_written_question_prelim_answered_was_holding.html.erb @@ -2,18 +2,21 @@
        A <%= object_link("#{object.object_name.titleize}", '/') %> - was asked by <%= object_link("#{object.tabling_member}", '/') %> + was asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, - in the <%= object_link("#{object.department}", '/') %>. + in the <%= object_link("#{object.legislature}", '/') %>. It was due for answer on <%= object.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> (named day). A holding answer was provided by <%= object_link("#{object.answering_member}", '/') %> - on <%= object.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> - on behalf of <%= object_link("#{object.legislature}", '/') %>. + (<%= object.answering_member_party %>) + on <%= object.date_of_holding_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> + on behalf of <%= object_link("#{object.department}", '/') %>. + + A replacement answer was provided by <%= object_link("#{object.answering_member}", '/') %> on <%= object.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> - on behalf of <%= object_link("#{object.legislature}", '/') %>. + on behalf of <%= object_link("#{object.department}", '/') %>.
      diff --git a/app/views/search/fragments/_written_question_prelim_corrected.html.erb b/app/views/search/fragments/_written_question_prelim_corrected.html.erb index 99cf6474..22b60509 100644 --- a/app/views/search/fragments/_written_question_prelim_corrected.html.erb +++ b/app/views/search/fragments/_written_question_prelim_corrected.html.erb @@ -2,18 +2,23 @@
      A <%= object_link("#{object.object_name.titleize}", '/') %> - was asked by <%= object_link("#{object.tabling_member}", '/') %> + was asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, - in the <%= object_link("#{object.department}", '/') %>. + in the <%= object_link("#{object.legislature}", '/') %>. It was due for answer on <%= object.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> (named day). - It was answered by <%= object_link("#{object.answering_member}", '/') %> + It was answered by <%= object_link("#{object.answering_member}", '/') %> (<%= object.answering_member_party %>) on <%= object.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> - on behalf of <%= object_link("#{object.legislature}", '/') %>. - The answer was corrected by <%= object_link("#{object.answering_member}", '/') %> - on <%= object.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> - on behalf of <%= object_link("#{object.legislature}", '/') %>. + on behalf of <%= object_link("#{object.department}", '/') %>. + <% if object.correcting_item? %> + The answer was corrected by <%= object_link("#{object.correcting_item.answering_member}", '/') %> + (<%= object.correcting_item.answering_member_party %>) on + <%= object.correcting_item.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> + on behalf of <%= object_link("#{object.correcting_item.department}", '/') %>. + <% else %> + It has since been corrected. + <% end %>
      diff --git a/app/views/search/fragments/_written_question_prelim_holding.html.erb b/app/views/search/fragments/_written_question_prelim_holding.html.erb index a506f41c..953eb06b 100644 --- a/app/views/search/fragments/_written_question_prelim_holding.html.erb +++ b/app/views/search/fragments/_written_question_prelim_holding.html.erb @@ -2,15 +2,16 @@
      A <%= object_link("#{object.object_name.titleize}", '/') %> - was asked by <%= object_link("#{object.tabling_member}", '/') %> + was asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, - in the <%= object_link("#{object.department}", '/') %>. + in the <%= object_link("#{object.legislature}", '/') %>. It was due for answer - on <%= object.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> + on <%= object.date_for_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> (named day). A holding answer was provided by <%= object_link("#{object.answering_member}", '/') %> - on <%= object.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> - on behalf of <%= object_link("#{object.legislature}", '/') %>. + (<%= object.answering_member_party %>) + on <%= object.date_of_holding_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> + on behalf of <%= object_link("#{object.department}", '/') %>.
      diff --git a/app/views/search/fragments/_written_question_prelim_tabled.html.erb b/app/views/search/fragments/_written_question_prelim_tabled.html.erb index c8aaf7fe..02fa202e 100644 --- a/app/views/search/fragments/_written_question_prelim_tabled.html.erb +++ b/app/views/search/fragments/_written_question_prelim_tabled.html.erb @@ -2,12 +2,12 @@
      A <%= object_link("#{object.object_name.titleize}", '/') %> - was tabled by <%= object_link("#{object.tabling_member}", '/') %> + was tabled by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, - in the <%= object_link("#{object.department}", '/') %> for the - <%= object_link("#{object.legislature}", '/') %>. + in the <%= object_link("#{object.legislature}", '/') %> for the + <%= object_link("#{object.department}", '/') %>. It is due for answer - on <%= object.date_of_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> + on <%= object.date_for_answer&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> (named day).
      diff --git a/app/views/search/fragments/_written_question_prelim_withdrawn.html.erb b/app/views/search/fragments/_written_question_prelim_withdrawn.html.erb index 628e44a3..df43a57f 100644 --- a/app/views/search/fragments/_written_question_prelim_withdrawn.html.erb +++ b/app/views/search/fragments/_written_question_prelim_withdrawn.html.erb @@ -4,8 +4,8 @@ A <%= object_link("#{object.object_name.titleize}", '/') %> was asked by <%= object_link("#{object.tabling_member}", '/') %> on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, - in the <%= object_link("#{object.department}", '/') %>. - The asking Member has subsequently withdrawn this question and no longer needs to be answered by + in the <%= object_link("#{object.legislature}", '/') %>. + The Member has subsequently withdrawn this question. An answer is no longer expected from the <%= object_link("#{object.department}", '/') %>. diff --git a/app/views/search/objects/written_question.html.erb b/app/views/search/objects/written_question.html.erb index ccdcef04..8ada9835 100644 --- a/app/views/search/objects/written_question.html.erb +++ b/app/views/search/objects/written_question.html.erb @@ -1,4 +1,4 @@ -<%#= render 'search/fragments/data', data: object.content_object_data %> +<%= render 'search/fragments/data', data: object.content_object_data %> <% content_for(:before_title) do %> <%= link_to('UK Parliament', root_path) %> / <%= link_to('Open data', root_path) %>
      @@ -20,7 +20,9 @@ <%= render 'search/fragments/answer', object: object if object.answered? || object.answered_was_holding? %> + <%#= render 'search/fragments/holding_answer', object: object if object.holding? %> + <%#= render 'search/fragments/corrected_answer', object: object if object.corrected? %>
      diff --git a/coverage/.resultset.json b/coverage/.resultset.json index ff74185e..3a3d4f76 100644 --- a/coverage/.resultset.json +++ b/coverage/.resultset.json @@ -445,7 +445,7 @@ 1, null, 1, - 235, + 247, null, null, 1, @@ -488,7 +488,7 @@ null, null, 1, - 102, + 108, null, 0, null, @@ -550,7 +550,6 @@ 1, null, null, - null, 52, null, 0, @@ -597,7 +596,7 @@ 1, null, 1, - 96, + 99, null, null, 1, @@ -713,7 +712,7 @@ 1, null, 1, - 47, + 50, null, null, 1, @@ -997,7 +996,7 @@ 1, null, 1, - 22, + 28, null, null, 1, @@ -1009,15 +1008,15 @@ null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, - 0, + 3, null, - 0, + 1, null, null, 1, @@ -1184,7 +1183,7 @@ 1, null, 1, - 13, + 14, null, 1, 1, @@ -1416,26 +1415,25 @@ null, null, null, - null, 1, 1, 1, - 0, + 1, null, null, null, 1, + 2, 1, 1, - 0, null, null, null, 1, - 1, + 2, null, 1, - 0, + 1, null, null, null, @@ -1579,7 +1577,7 @@ 1, null, 1, - 15, + 16, null, 1, 1, @@ -1851,26 +1849,25 @@ null, null, null, - null, 1, 1, 1, - 0, + 1, null, null, null, 1, + 2, 1, 1, - 0, null, null, null, 1, - 1, + 2, null, 1, - 0, + 1, null, null, null, @@ -2463,7 +2460,7 @@ 1, null, 1, - 9, + 11, null, 1, 1, @@ -2481,46 +2478,45 @@ null, 1, 1, - 0, + 1, null, null, null, 1, + 2, 1, 1, - 0, null, null, null, 1, - 1, + 2, null, 1, - 0, + 1, null, null, null, null, 1, - null, 1, 1, - 0, + 1, null, null, null, 1, + 2, 1, 1, - 0, null, null, null, 1, - 1, + 2, null, 1, - 0, + 1, null, null, null, @@ -2759,6 +2755,6 @@ ] } }, - "timestamp": 1695307173 + "timestamp": 1695371096 } } diff --git a/coverage/index.html b/coverage/index.html index 00fb668c..5d0ae0d1 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -14,7 +14,7 @@ loading
      -
      Generated 2023-09-21T15:39:33+01:00
      +
      Generated 2023-09-22T09:24:57+01:00
        @@ -23,14 +23,14 @@

        All Files ( - 95.7% + 96.97% covered at - 7.31 + 7.36 hits/line ) @@ -44,10 +44,10 @@

        1255 relevant lines, - 1201 lines covered and - 54 lines missed. + 1217 lines covered and + 38 lines missed. ( - 95.7% + 96.97% )
        @@ -227,11 +227,11 @@

        app/models/content_object.rb 88.06 % - 150 + 149 67 59 8 - 31.99 + 32.25 @@ -242,7 +242,7 @@

        40 40 0 - 54.25 + 54.33 @@ -264,7 +264,7 @@

        38 38 0 - 3.03 + 3.11 @@ -281,12 +281,12 @@

        app/models/written_statement.rb - 85.71 % + 100.00 % 55 28 - 24 - 4 - 2.07 + 28 + 0 + 2.57 @@ -435,23 +435,23 @@

        spec/models/edm_spec.rb - 98.42 % - 391 + 100.00 % + 390 190 - 187 - 3 - 1.22 + 190 + 0 + 1.25 spec/models/research_briefing_spec.rb - 98.54 % - 397 + 100.00 % + 396 206 - 203 - 3 - 1.21 + 206 + 0 + 1.24 @@ -468,12 +468,12 @@

        spec/models/written_statement_spec.rb - 94.78 % - 218 + 100.00 % + 217 115 - 109 - 6 - 1.14 + 115 + 0 + 1.24 @@ -2935,8 +2935,8 @@

        -
      • - 235 +
      • + 247 @@ -3408,8 +3408,8 @@

      • -
      • - 102 +
      • + 108 @@ -4074,23 +4074,12 @@

        - # no test data for related items currently available -

      • -
        - -
        -
      • - - - - - # based on provided information, this will return one or more URIs of related item object pages
      • -
      • +
      • @@ -4101,7 +4090,7 @@

      • -
      • +
      • 52 @@ -4112,7 +4101,7 @@

      • -
      • +
      • @@ -4123,7 +4112,7 @@

      • -
      • +
      • @@ -4134,7 +4123,7 @@

      • -
      • +
      • @@ -4145,7 +4134,7 @@

      • -
      • +
      • @@ -4156,7 +4145,7 @@

      • -
      • +
      • 1 @@ -4167,7 +4156,7 @@

      • -
      • +
      • 155 @@ -4178,7 +4167,7 @@

      • -
      • +
      • @@ -4189,7 +4178,7 @@

      • -
      • +
      • 151 @@ -4200,7 +4189,7 @@

      • -
      • +
      • @@ -4211,7 +4200,7 @@

      • -
      • +
      • @@ -4222,7 +4211,7 @@

      • -
      • +
      • 1 @@ -4233,7 +4222,7 @@

      • -
      • +
      • @@ -4244,7 +4233,7 @@

      • -
      • +
      • 1 @@ -4255,7 +4244,7 @@

      • -
      • +
      • 4 @@ -4266,7 +4255,7 @@

      • -
      • +
      • @@ -4277,7 +4266,7 @@

      • -
      • +
      • 1 @@ -4288,7 +4277,7 @@

      • -
      • +
      • @@ -4299,7 +4288,7 @@

      • -
      • +
      • @@ -4310,7 +4299,7 @@

      • -
      • +
      • @@ -4321,7 +4310,7 @@

      • -
      • +
      • 1 @@ -4332,7 +4321,7 @@

      • -
      • +
      • @@ -4343,7 +4332,7 @@

      • -
      • +
      • @@ -4354,7 +4343,7 @@

      • -
      • +
      • @@ -4365,7 +4354,7 @@

      • -
      • +
      • 2 @@ -4376,7 +4365,7 @@

      • -
      • +
      • @@ -4387,7 +4376,7 @@

      • -
      • +
      • @@ -4398,7 +4387,7 @@

      • -
      • +
      • @@ -4409,7 +4398,7 @@

      • -
      • +
      • 1 @@ -4420,7 +4409,7 @@

      • -
      • +
      • @@ -4431,7 +4420,7 @@

      • -
      • +
      • 10 @@ -4442,7 +4431,7 @@

      • -
      • +
      • @@ -4453,7 +4442,7 @@

      • -
      • +
      • 5 @@ -4464,7 +4453,7 @@

      • -
      • +
      • @@ -4475,7 +4464,7 @@

      • -
      • +
      • @@ -4486,7 +4475,7 @@

      • -
      • +
      • 5 @@ -4497,7 +4486,7 @@

      • -
      • +
      • @@ -4508,7 +4497,7 @@

      • -
      • +
      • @@ -4519,7 +4508,7 @@

      • -
      • +
      • @@ -4594,8 +4583,8 @@

      • -
      • - 96 +
      • + 99 @@ -5844,8 +5833,8 @@

      • -
      • - 47 +
      • + 50 @@ -8886,8 +8875,8 @@

        app/models/written_statement.rb

        - - 85.71% + + 100.0% lines covered @@ -8897,8 +8886,8 @@

        28 relevant lines. - 24 lines covered and - 4 lines missed. + 28 lines covered and + 0 lines missed.
        @@ -8942,8 +8931,8 @@

        -
      • - 22 +
      • + 28 @@ -9074,8 +9063,8 @@

      • -
      • - +
      • + 3 @@ -9096,8 +9085,8 @@

      • -
      • - +
      • + 1 @@ -9140,8 +9129,8 @@

      • -
      • - +
      • + 3 @@ -9162,8 +9151,8 @@

      • -
      • - +
      • + 1 @@ -13050,7 +13039,7 @@

        spec/models/edm_spec.rb

        - 98.42% + 100.0% lines covered @@ -13060,8 +13049,8 @@

        190 relevant lines. - 187 lines covered and - 3 lines missed. + 190 lines covered and + 0 lines missed.
        @@ -13105,8 +13094,8 @@

      • -
      • - 13 +
      • + 14 @@ -15657,13 +15646,13 @@

      • -
      • - +
      • + 1 - # disabled due to lack of test data + describe 'legislation' do
      • @@ -15674,7 +15663,7 @@

        - xdescribe 'legislation' do + context 'where there is no data' do

      • @@ -15685,7 +15674,7 @@

        - context 'where there is no data' do + it 'returns nil' do

        @@ -15696,23 +15685,12 @@

        - it 'returns nil' do - - - -
        -
      • - - - - - expect(edm.legislation).to be_nil
      • -
      • +
      • @@ -15723,7 +15701,7 @@

      • -
      • +
      • @@ -15734,7 +15712,7 @@

      • -
      • +
      • @@ -15745,7 +15723,7 @@

      • -
      • +
      • 1 @@ -15756,8 +15734,8 @@

      • -
      • - 1 +
      • + 2 @@ -15767,7 +15745,7 @@

      • -
      • +
      • 1 @@ -15778,8 +15756,8 @@

      • -
      • - +
      • + 1 @@ -15789,7 +15767,7 @@

      • -
      • +
      • @@ -15800,7 +15778,7 @@

      • -
      • +
      • @@ -15811,7 +15789,7 @@

      • -
      • +
      • @@ -15822,7 +15800,7 @@

      • -
      • +
      • 1 @@ -15833,8 +15811,8 @@

      • -
      • - 1 +
      • + 2 @@ -15844,7 +15822,7 @@

      • -
      • +
      • @@ -15855,7 +15833,7 @@

      • -
      • +
      • 1 @@ -15866,8 +15844,8 @@

      • -
      • - +
      • + 1 @@ -15877,7 +15855,7 @@

      • -
      • +
      • @@ -15888,7 +15866,7 @@

      • -
      • +
      • @@ -15899,7 +15877,7 @@

      • -
      • +
      • @@ -15910,7 +15888,7 @@

      • -
      • +
      • @@ -15921,7 +15899,7 @@

      • -
      • +
      • 1 @@ -15932,7 +15910,7 @@

      • -
      • +
      • 1 @@ -15943,7 +15921,7 @@

      • -
      • +
      • 1 @@ -15954,7 +15932,7 @@

      • -
      • +
      • 1 @@ -15965,7 +15943,7 @@

      • -
      • +
      • @@ -15976,7 +15954,7 @@

      • -
      • +
      • @@ -15987,7 +15965,7 @@

      • -
      • +
      • @@ -15998,7 +15976,7 @@

      • -
      • +
      • 1 @@ -16009,7 +15987,7 @@

      • -
      • +
      • 2 @@ -16020,7 +15998,7 @@

      • -
      • +
      • 1 @@ -16031,7 +16009,7 @@

      • -
      • +
      • 1 @@ -16042,7 +16020,7 @@

      • -
      • +
      • @@ -16053,7 +16031,7 @@

      • -
      • +
      • @@ -16064,7 +16042,7 @@

      • -
      • +
      • @@ -16075,7 +16053,7 @@

      • -
      • +
      • 1 @@ -16086,7 +16064,7 @@

      • -
      • +
      • 2 @@ -16097,7 +16075,7 @@

      • -
      • +
      • @@ -16108,7 +16086,7 @@

      • -
      • +
      • 1 @@ -16119,7 +16097,7 @@

      • -
      • +
      • 1 @@ -16130,7 +16108,7 @@

      • -
      • +
      • @@ -16141,7 +16119,7 @@

      • -
      • +
      • @@ -16152,7 +16130,7 @@

      • -
      • +
      • @@ -16163,7 +16141,7 @@

      • -
      • +
      • @@ -16174,7 +16152,7 @@

      • -
      • +
      • 1 @@ -16185,7 +16163,7 @@

      • -
      • +
      • 1 @@ -16196,7 +16174,7 @@

      • -
      • +
      • 1 @@ -16207,7 +16185,7 @@

      • -
      • +
      • 1 @@ -16218,7 +16196,7 @@

      • -
      • +
      • @@ -16229,7 +16207,7 @@

      • -
      • +
      • @@ -16240,7 +16218,7 @@

      • -
      • +
      • @@ -16251,7 +16229,7 @@

      • -
      • +
      • 1 @@ -16262,7 +16240,7 @@

      • -
      • +
      • 2 @@ -16273,7 +16251,7 @@

      • -
      • +
      • 1 @@ -16284,7 +16262,7 @@

      • -
      • +
      • 1 @@ -16295,7 +16273,7 @@

      • -
      • +
      • @@ -16306,7 +16284,7 @@

      • -
      • +
      • @@ -16317,7 +16295,7 @@

      • -
      • +
      • @@ -16328,7 +16306,7 @@

      • -
      • +
      • 1 @@ -16339,7 +16317,7 @@

      • -
      • +
      • 2 @@ -16350,7 +16328,7 @@

      • -
      • +
      • @@ -16361,7 +16339,7 @@

      • -
      • +
      • 1 @@ -16372,7 +16350,7 @@

      • -
      • +
      • 1 @@ -16383,7 +16361,7 @@

      • -
      • +
      • @@ -16394,7 +16372,7 @@

      • -
      • +
      • @@ -16405,7 +16383,7 @@

      • -
      • +
      • @@ -16416,7 +16394,7 @@

      • -
      • +
      • @@ -16427,7 +16405,7 @@

      • -
      • +
      • 1 @@ -16438,7 +16416,7 @@

      • -
      • +
      • 1 @@ -16449,7 +16427,7 @@

      • -
      • +
      • 2 @@ -16460,7 +16438,7 @@

      • -
      • +
      • @@ -16471,7 +16449,7 @@

      • -
      • +
      • 1 @@ -16482,7 +16460,7 @@

      • -
      • +
      • 1 @@ -16493,7 +16471,7 @@

      • -
      • +
      • @@ -16504,7 +16482,7 @@

      • -
      • +
      • @@ -16515,7 +16493,7 @@

      • -
      • +
      • @@ -16526,7 +16504,7 @@

      • -
      • +
      • 1 @@ -16537,7 +16515,7 @@

      • -
      • +
      • 2 @@ -16548,7 +16526,7 @@

      • -
      • +
      • @@ -16559,7 +16537,7 @@

      • -
      • +
      • @@ -16570,7 +16548,7 @@

      • -
      • +
      • @@ -16581,7 +16559,7 @@

      • -
      • +
      • @@ -16592,7 +16570,7 @@

      • -
      • +
      • @@ -16603,7 +16581,7 @@

      • -
      • +
      • @@ -16614,7 +16592,7 @@

      • -
      • +
      • @@ -16625,7 +16603,7 @@

      • -
      • +
      • @@ -16636,7 +16614,7 @@

      • -
      • +
      • 1 @@ -16647,7 +16625,7 @@

      • -
      • +
      • 1 @@ -16658,7 +16636,7 @@

      • -
      • +
      • @@ -16669,7 +16647,7 @@

      • -
      • +
      • @@ -16680,7 +16658,7 @@

      • -
      • +
      • @@ -16691,7 +16669,7 @@

      • -
      • +
      • 1 @@ -16702,7 +16680,7 @@

      • -
      • +
      • 2 @@ -16713,7 +16691,7 @@

      • -
      • +
      • @@ -16724,7 +16702,7 @@

      • -
      • +
      • @@ -16735,7 +16713,7 @@

      • -
      • +
      • @@ -16746,7 +16724,7 @@

      • -
      • +
      • @@ -16757,7 +16735,7 @@

      • -
      • +
      • @@ -16768,7 +16746,7 @@

      • -
      • +
      • @@ -16779,7 +16757,7 @@

      • -
      • +
      • @@ -16790,7 +16768,7 @@

      • -
      • +
      • @@ -16801,7 +16779,7 @@

      • -
      • +
      • 1 @@ -16812,7 +16790,7 @@

      • -
      • +
      • 1 @@ -16823,7 +16801,7 @@

      • -
      • +
      • @@ -16834,7 +16812,7 @@

      • -
      • +
      • @@ -16845,7 +16823,7 @@

      • -
      • +
      • @@ -16856,7 +16834,7 @@

      • -
      • +
      • @@ -16867,7 +16845,7 @@

      • -
      • +
      • @@ -16878,7 +16856,7 @@

      • -
      • +
      • @@ -16889,7 +16867,7 @@

      • -
      • +
      • @@ -16900,7 +16878,7 @@

      • -
      • +
      • @@ -16911,7 +16889,7 @@

      • -
      • +
      • @@ -16922,7 +16900,7 @@

      • -
      • +
      • @@ -16933,7 +16911,7 @@

      • -
      • +
      • @@ -16944,7 +16922,7 @@

      • -
      • +
      • @@ -16955,7 +16933,7 @@

      • -
      • +
      • @@ -16966,7 +16944,7 @@

      • -
      • +
      • @@ -16977,7 +16955,7 @@

      • -
      • +
      • @@ -16988,7 +16966,7 @@

      • -
      • +
      • 1 @@ -16999,7 +16977,7 @@

      • -
      • +
      • 1 @@ -17010,7 +16988,7 @@

      • -
      • +
      • 2 @@ -17021,7 +16999,7 @@

      • -
      • +
      • @@ -17032,7 +17010,7 @@

      • -
      • +
      • 1 @@ -17043,7 +17021,7 @@

      • -
      • +
      • 1 @@ -17054,7 +17032,7 @@

      • -
      • +
      • @@ -17065,7 +17043,7 @@

      • -
      • +
      • @@ -17076,7 +17054,7 @@

      • -
      • +
      • @@ -17087,7 +17065,7 @@

      • -
      • +
      • 1 @@ -17098,7 +17076,7 @@

      • -
      • +
      • 2 @@ -17109,7 +17087,7 @@

      • -
      • +
      • @@ -17120,7 +17098,7 @@

      • -
      • +
      • 1 @@ -17131,7 +17109,7 @@

      • -
      • +
      • 1 @@ -17142,7 +17120,7 @@

      • -
      • +
      • @@ -17153,7 +17131,7 @@

      • -
      • +
      • @@ -17164,7 +17142,7 @@

      • -
      • +
      • @@ -17175,7 +17153,7 @@

      • -
      • +
      • 1 @@ -17186,7 +17164,7 @@

      • -
      • +
      • 2 @@ -17197,7 +17175,7 @@

      • -
      • +
      • @@ -17208,7 +17186,7 @@

      • -
      • +
      • 1 @@ -17219,7 +17197,7 @@

      • -
      • +
      • 1 @@ -17230,7 +17208,7 @@

      • -
      • +
      • @@ -17241,7 +17219,7 @@

      • -
      • +
      • @@ -17252,7 +17230,7 @@

      • -
      • +
      • @@ -17263,7 +17241,7 @@

      • -
      • +
      • 1 @@ -17274,7 +17252,7 @@

      • -
      • +
      • 2 @@ -17285,7 +17263,7 @@

      • -
      • +
      • @@ -17296,7 +17274,7 @@

      • -
      • +
      • 1 @@ -17307,7 +17285,7 @@

      • -
      • +
      • 1 @@ -17318,7 +17296,7 @@

      • -
      • +
      • @@ -17329,7 +17307,7 @@

      • -
      • +
      • @@ -17340,7 +17318,7 @@

      • -
      • +
      • @@ -17351,7 +17329,7 @@

      • -
      • +
      • @@ -17362,7 +17340,7 @@

      • -
      • +
      • @@ -17382,7 +17360,7 @@

        spec/models/research_briefing_spec.rb

        - 98.54% + 100.0% lines covered @@ -17392,8 +17370,8 @@

        206 relevant lines. - 203 lines covered and - 3 lines missed. + 206 lines covered and + 0 lines missed.
        @@ -17437,8 +17415,8 @@

      • -
      • - 15 +
      • + 16 @@ -20429,13 +20407,13 @@

      • -
      • - +
      • + 1 - # disabled due to lack of test data + describe 'legislation' do
      • @@ -20446,7 +20424,7 @@

        - xdescribe 'legislation' do + context 'where there is no data' do @@ -20457,7 +20435,7 @@

        - context 'where there is no data' do + it 'returns nil' do @@ -20468,23 +20446,12 @@

        - it 'returns nil' do - - - -
        -
      • - - - - - expect(research_briefing.legislation).to be_nil
      • -
      • +
      • @@ -20495,7 +20462,7 @@

      • -
      • +
      • @@ -20506,7 +20473,7 @@

      • -
      • +
      • @@ -20517,7 +20484,7 @@

      • -
      • +
      • 1 @@ -20528,8 +20495,8 @@

      • -
      • - 1 +
      • + 2 @@ -20539,7 +20506,7 @@

      • -
      • +
      • 1 @@ -20550,8 +20517,8 @@

      • -
      • - +
      • + 1 @@ -20561,7 +20528,7 @@

      • -
      • +
      • @@ -20572,7 +20539,7 @@

      • -
      • +
      • @@ -20583,7 +20550,7 @@

      • -
      • +
      • @@ -20594,7 +20561,7 @@

      • -
      • +
      • 1 @@ -20605,8 +20572,8 @@

      • -
      • - 1 +
      • + 2 @@ -20616,7 +20583,7 @@

      • -
      • +
      • @@ -20627,7 +20594,7 @@

      • -
      • +
      • 1 @@ -20638,8 +20605,8 @@

      • -
      • - +
      • + 1 @@ -20649,7 +20616,7 @@

      • -
      • +
      • @@ -20660,7 +20627,7 @@

      • -
      • +
      • @@ -20671,7 +20638,7 @@

      • -
      • +
      • @@ -20682,7 +20649,7 @@

      • -
      • +
      • @@ -20693,7 +20660,7 @@

      • -
      • +
      • 1 @@ -20704,7 +20671,7 @@

      • -
      • +
      • 1 @@ -20715,7 +20682,7 @@

      • -
      • +
      • 1 @@ -20726,7 +20693,7 @@

      • -
      • +
      • 1 @@ -20737,7 +20704,7 @@

      • -
      • +
      • @@ -20748,7 +20715,7 @@

      • -
      • +
      • @@ -20759,7 +20726,7 @@

      • -
      • +
      • @@ -20770,7 +20737,7 @@

      • -
      • +
      • 1 @@ -20781,7 +20748,7 @@

      • -
      • +
      • 2 @@ -20792,7 +20759,7 @@

      • -
      • +
      • 1 @@ -20803,7 +20770,7 @@

      • -
      • +
      • 1 @@ -20814,7 +20781,7 @@

      • -
      • +
      • @@ -20825,7 +20792,7 @@

      • -
      • +
      • @@ -20836,7 +20803,7 @@

      • -
      • +
      • @@ -20847,7 +20814,7 @@

      • -
      • +
      • 1 @@ -20858,7 +20825,7 @@

      • -
      • +
      • 2 @@ -20869,7 +20836,7 @@

      • -
      • +
      • @@ -20880,7 +20847,7 @@

      • -
      • +
      • 1 @@ -20891,7 +20858,7 @@

      • -
      • +
      • 1 @@ -20902,7 +20869,7 @@

      • -
      • +
      • @@ -20913,7 +20880,7 @@

      • -
      • +
      • @@ -20924,7 +20891,7 @@

      • -
      • +
      • @@ -20935,7 +20902,7 @@

      • -
      • +
      • @@ -20946,7 +20913,7 @@

      • -
      • +
      • 1 @@ -20957,7 +20924,7 @@

      • -
      • +
      • 1 @@ -20968,7 +20935,7 @@

      • -
      • +
      • 1 @@ -20979,7 +20946,7 @@

      • -
      • +
      • 1 @@ -20990,7 +20957,7 @@

      • -
      • +
      • @@ -21001,7 +20968,7 @@

      • -
      • +
      • @@ -21012,7 +20979,7 @@

      • -
      • +
      • @@ -21023,7 +20990,7 @@

      • -
      • +
      • 1 @@ -21034,7 +21001,7 @@

      • -
      • +
      • 2 @@ -21045,7 +21012,7 @@

      • -
      • +
      • 1 @@ -21056,7 +21023,7 @@

      • -
      • +
      • 1 @@ -21067,7 +21034,7 @@

      • -
      • +
      • @@ -21078,7 +21045,7 @@

      • -
      • +
      • @@ -21089,7 +21056,7 @@

      • -
      • +
      • @@ -21100,7 +21067,7 @@

      • -
      • +
      • 1 @@ -21111,7 +21078,7 @@

      • -
      • +
      • 2 @@ -21122,7 +21089,7 @@

      • -
      • +
      • @@ -21133,7 +21100,7 @@

      • -
      • +
      • 1 @@ -21144,7 +21111,7 @@

      • -
      • +
      • 1 @@ -21155,7 +21122,7 @@

      • -
      • +
      • @@ -21166,7 +21133,7 @@

      • -
      • +
      • @@ -21177,7 +21144,7 @@

      • -
      • +
      • @@ -21188,7 +21155,7 @@

      • -
      • +
      • @@ -21199,7 +21166,7 @@

      • -
      • +
      • 1 @@ -21210,7 +21177,7 @@

      • -
      • +
      • 1 @@ -21221,7 +21188,7 @@

      • -
      • +
      • 2 @@ -21232,7 +21199,7 @@

      • -
      • +
      • @@ -21243,7 +21210,7 @@

      • -
      • +
      • 1 @@ -21254,7 +21221,7 @@

      • -
      • +
      • 1 @@ -21265,7 +21232,7 @@

      • -
      • +
      • @@ -21276,7 +21243,7 @@

      • -
      • +
      • @@ -21287,7 +21254,7 @@

      • -
      • +
      • @@ -21298,7 +21265,7 @@

      • -
      • +
      • 1 @@ -21309,7 +21276,7 @@

      • -
      • +
      • 2 @@ -21320,7 +21287,7 @@

      • -
      • +
      • @@ -21331,7 +21298,7 @@

      • -
      • +
      • 1 @@ -21342,7 +21309,7 @@

      • -
      • +
      • 1 @@ -21353,7 +21320,7 @@

      • -
      • +
      • @@ -21364,7 +21331,7 @@

      • -
      • +
      • @@ -21375,7 +21342,7 @@

      • -
      • +
      • @@ -21386,7 +21353,7 @@

      • -
      • +
      • @@ -21397,7 +21364,7 @@

      • -
      • +
      • 1 @@ -21408,7 +21375,7 @@

      • -
      • +
      • 1 @@ -21419,7 +21386,7 @@

      • -
      • +
      • 2 @@ -21430,7 +21397,7 @@

      • -
      • +
      • @@ -21441,7 +21408,7 @@

      • -
      • +
      • 1 @@ -21452,7 +21419,7 @@

      • -
      • +
      • 1 @@ -21463,7 +21430,7 @@

      • -
      • +
      • @@ -21474,7 +21441,7 @@

      • -
      • +
      • @@ -21485,7 +21452,7 @@

      • -
      • +
      • @@ -21496,7 +21463,7 @@

      • -
      • +
      • 1 @@ -21507,7 +21474,7 @@

      • -
      • +
      • 2 @@ -21518,7 +21485,7 @@

      • -
      • +
      • @@ -21529,7 +21496,7 @@

      • -
      • +
      • 1 @@ -21540,7 +21507,7 @@

      • -
      • +
      • 1 @@ -21551,7 +21518,7 @@

      • -
      • +
      • @@ -21562,7 +21529,7 @@

      • -
      • +
      • @@ -21573,7 +21540,7 @@

      • -
      • +
      • @@ -21584,7 +21551,7 @@

      • -
      • +
      • 1 @@ -21595,7 +21562,7 @@

      • -
      • +
      • 2 @@ -21606,7 +21573,7 @@

      • -
      • +
      • @@ -21617,7 +21584,7 @@

      • -
      • +
      • 1 @@ -21628,7 +21595,7 @@

      • -
      • +
      • 1 @@ -21639,7 +21606,7 @@

      • -
      • +
      • @@ -21650,7 +21617,7 @@

      • -
      • +
      • @@ -21661,7 +21628,7 @@

      • -
      • +
      • @@ -21672,7 +21639,7 @@

      • -
      • +
      • 1 @@ -21683,7 +21650,7 @@

      • -
      • +
      • 2 @@ -21694,7 +21661,7 @@

      • -
      • +
      • @@ -21705,7 +21672,7 @@

      • -
      • +
      • 1 @@ -21716,7 +21683,7 @@

      • -
      • +
      • 1 @@ -21727,7 +21694,7 @@

      • -
      • +
      • @@ -21738,7 +21705,7 @@

      • -
      • +
      • @@ -21749,7 +21716,7 @@

      • -
      • +
      • @@ -21760,7 +21727,7 @@

      • -
      • +
      • @@ -27080,7 +27047,7 @@

        spec/models/written_statement_spec.rb

        - 94.78% + 100.0% lines covered @@ -27090,8 +27057,8 @@

        115 relevant lines. - 109 lines covered and - 6 lines missed. + 115 lines covered and + 0 lines missed.
        @@ -27135,8 +27102,8 @@

      • -
      • - 9 +
      • + 11 @@ -27295,7 +27262,7 @@

        - xdescribe 'attachment' do + describe 'attachment' do

      • @@ -27333,8 +27300,8 @@

        -
      • - +
      • + 1 @@ -27388,8 +27355,8 @@

      • -
      • - 1 +
      • + 2 @@ -27410,8 +27377,8 @@

      • -
      • - +
      • + 1 @@ -27465,8 +27432,8 @@

      • -
      • - 1 +
      • + 2 @@ -27498,8 +27465,8 @@

      • -
      • - +
      • + 1 @@ -27559,23 +27526,12 @@

        - xdescribe 'notes' do + describe 'notes' do

      • -
      • - - - - - - # disabled - awaiting feedback -
      • -
        - -
        -
      • +
      • 1 @@ -27586,7 +27542,7 @@

      • -
      • +
      • 1 @@ -27597,8 +27553,8 @@

      • -
      • - +
      • + 1 @@ -27608,7 +27564,7 @@

      • -
      • +
      • @@ -27619,7 +27575,7 @@

      • -
      • +
      • @@ -27630,7 +27586,7 @@

      • -
      • +
      • @@ -27641,7 +27597,7 @@

      • -
      • +
      • 1 @@ -27652,8 +27608,8 @@

      • -
      • - 1 +
      • + 2 @@ -27663,7 +27619,7 @@

      • -
      • +
      • 1 @@ -27674,8 +27630,8 @@

      • -
      • - +
      • + 1 @@ -27685,7 +27641,7 @@

      • -
      • +
      • @@ -27696,7 +27652,7 @@

      • -
      • +
      • @@ -27707,7 +27663,7 @@

      • -
      • +
      • @@ -27718,7 +27674,7 @@

      • -
      • +
      • 1 @@ -27729,8 +27685,8 @@

      • -
      • - 1 +
      • + 2 @@ -27740,7 +27696,7 @@

      • -
      • +
      • @@ -27751,29 +27707,29 @@

      • -
      • +
      • 1 - it 'returns all items as an array' do + it 'returns the first item' do
      • -
      • - +
      • + 1 - expect(written_statement.notes).to eq(['first item', 'second item']) + expect(written_statement.notes).to eq('first item')
      • -
      • +
      • @@ -27784,7 +27740,7 @@

      • -
      • +
      • @@ -27795,7 +27751,7 @@

      • -
      • +
      • @@ -27806,7 +27762,7 @@

      • -
      • +
      • @@ -27817,7 +27773,7 @@

      • -
      • +
      • 1 @@ -27828,7 +27784,7 @@

      • -
      • +
      • 1 @@ -27839,7 +27795,7 @@

      • -
      • +
      • 1 @@ -27850,7 +27806,7 @@

      • -
      • +
      • 1 @@ -27861,7 +27817,7 @@

      • -
      • +
      • @@ -27872,7 +27828,7 @@

      • -
      • +
      • @@ -27883,7 +27839,7 @@

      • -
      • +
      • @@ -27894,7 +27850,7 @@

      • -
      • +
      • 1 @@ -27905,7 +27861,7 @@

      • -
      • +
      • 2 @@ -27916,7 +27872,7 @@

      • -
      • +
      • 1 @@ -27927,7 +27883,7 @@

      • -
      • +
      • 1 @@ -27938,7 +27894,7 @@

      • -
      • +
      • @@ -27949,7 +27905,7 @@

      • -
      • +
      • @@ -27960,7 +27916,7 @@

      • -
      • +
      • @@ -27971,7 +27927,7 @@

      • -
      • +
      • 1 @@ -27982,7 +27938,7 @@

      • -
      • +
      • 2 @@ -27993,7 +27949,7 @@

      • -
      • +
      • @@ -28004,7 +27960,7 @@

      • -
      • +
      • 1 @@ -28015,7 +27971,7 @@

      • -
      • +
      • 1 @@ -28026,7 +27982,7 @@

      • -
      • +
      • @@ -28037,7 +27993,7 @@

      • -
      • +
      • @@ -28048,7 +28004,7 @@

      • -
      • +
      • @@ -28059,7 +28015,7 @@

      • -
      • +
      • @@ -28070,7 +28026,7 @@

      • -
      • +
      • 1 @@ -28081,7 +28037,7 @@

      • -
      • +
      • 1 @@ -28092,7 +28048,7 @@

      • -
      • +
      • 1 @@ -28103,7 +28059,7 @@

      • -
      • +
      • 1 @@ -28114,7 +28070,7 @@

      • -
      • +
      • @@ -28125,7 +28081,7 @@

      • -
      • +
      • @@ -28136,7 +28092,7 @@

      • -
      • +
      • @@ -28147,7 +28103,7 @@

      • -
      • +
      • 1 @@ -28158,7 +28114,7 @@

      • -
      • +
      • 2 @@ -28169,7 +28125,7 @@

      • -
      • +
      • 1 @@ -28180,7 +28136,7 @@

      • -
      • +
      • 1 @@ -28191,7 +28147,7 @@

      • -
      • +
      • @@ -28202,7 +28158,7 @@

      • -
      • +
      • @@ -28213,7 +28169,7 @@

      • -
      • +
      • @@ -28224,7 +28180,7 @@

      • -
      • +
      • 1 @@ -28235,7 +28191,7 @@

      • -
      • +
      • 2 @@ -28246,7 +28202,7 @@

      • -
      • +
      • @@ -28257,7 +28213,7 @@

      • -
      • +
      • 1 @@ -28268,7 +28224,7 @@

      • -
      • +
      • 1 @@ -28279,7 +28235,7 @@

      • -
      • +
      • @@ -28290,7 +28246,7 @@

      • -
      • +
      • @@ -28301,7 +28257,7 @@

      • -
      • +
      • @@ -28312,7 +28268,7 @@

      • -
      • +
      • @@ -28323,7 +28279,7 @@

      • -
      • +
      • 1 @@ -28334,7 +28290,7 @@

      • -
      • +
      • 1 @@ -28345,7 +28301,7 @@

      • -
      • +
      • 1 @@ -28356,7 +28312,7 @@

      • -
      • +
      • 1 @@ -28367,7 +28323,7 @@

      • -
      • +
      • @@ -28378,7 +28334,7 @@

      • -
      • +
      • @@ -28389,7 +28345,7 @@

      • -
      • +
      • @@ -28400,7 +28356,7 @@

      • -
      • +
      • 1 @@ -28411,7 +28367,7 @@

      • -
      • +
      • 2 @@ -28422,7 +28378,7 @@

      • -
      • +
      • 1 @@ -28433,7 +28389,7 @@

      • -
      • +
      • 1 @@ -28444,7 +28400,7 @@

      • -
      • +
      • @@ -28455,7 +28411,7 @@

      • -
      • +
      • @@ -28466,7 +28422,7 @@

      • -
      • +
      • @@ -28477,7 +28433,7 @@

      • -
      • +
      • 1 @@ -28488,7 +28444,7 @@

      • -
      • +
      • 2 @@ -28499,7 +28455,7 @@

      • -
      • +
      • @@ -28510,7 +28466,7 @@

      • -
      • +
      • 1 @@ -28521,7 +28477,7 @@

      • -
      • +
      • 1 @@ -28532,7 +28488,7 @@

      • -
      • +
      • @@ -28543,7 +28499,7 @@

      • -
      • +
      • @@ -28554,7 +28510,7 @@

      • -
      • +
      • @@ -28565,7 +28521,7 @@

      • -
      • +
      • @@ -28576,7 +28532,7 @@

      • -
      • +
      • 1 @@ -28587,7 +28543,7 @@

      • -
      • +
      • 1 @@ -28598,7 +28554,7 @@

      • -
      • +
      • 1 @@ -28609,7 +28565,7 @@

      • -
      • +
      • 1 @@ -28620,7 +28576,7 @@

      • -
      • +
      • @@ -28631,7 +28587,7 @@

      • -
      • +
      • @@ -28642,7 +28598,7 @@

      • -
      • +
      • @@ -28653,7 +28609,7 @@

      • -
      • +
      • 1 @@ -28664,7 +28620,7 @@

      • -
      • +
      • 2 @@ -28675,7 +28631,7 @@

      • -
      • +
      • 1 @@ -28686,7 +28642,7 @@

      • -
      • +
      • 1 @@ -28697,7 +28653,7 @@

      • -
      • +
      • @@ -28708,7 +28664,7 @@

      • -
      • +
      • @@ -28719,7 +28675,7 @@

      • -
      • +
      • @@ -28730,7 +28686,7 @@

      • -
      • +
      • 1 @@ -28741,7 +28697,7 @@

      • -
      • +
      • 1 @@ -28752,7 +28708,7 @@

      • -
      • +
      • 2 @@ -28763,7 +28719,7 @@

      • -
      • +
      • 1 @@ -28774,7 +28730,7 @@

      • -
      • +
      • 1 @@ -28785,7 +28741,7 @@

      • -
      • +
      • @@ -28796,7 +28752,7 @@

      • -
      • +
      • @@ -28807,7 +28763,7 @@

      • -
      • +
      • @@ -28818,7 +28774,7 @@

      • -
      • +
      • 1 @@ -28829,7 +28785,7 @@

      • -
      • +
      • 2 @@ -28840,7 +28796,7 @@

      • -
      • +
      • 1 @@ -28851,7 +28807,7 @@

      • -
      • +
      • 1 @@ -28862,7 +28818,7 @@

      • -
      • +
      • @@ -28873,7 +28829,7 @@

      • -
      • +
      • @@ -28884,7 +28840,7 @@

      • -
      • +
      • @@ -28895,7 +28851,7 @@

      • -
      • +
      • @@ -28906,7 +28862,7 @@

      • -
      • +
      • @@ -28917,7 +28873,7 @@

      • -
      • +
      • 1 @@ -28928,7 +28884,7 @@

      • -
      • +
      • 1 @@ -28939,7 +28895,7 @@

      • -
      • +
      • 1 @@ -28950,7 +28906,7 @@

      • -
      • +
      • 1 @@ -28961,7 +28917,7 @@

      • -
      • +
      • @@ -28972,7 +28928,7 @@

      • -
      • +
      • @@ -28983,7 +28939,7 @@

      • -
      • +
      • @@ -28994,7 +28950,7 @@

      • -
      • +
      • 1 @@ -29005,7 +28961,7 @@

      • -
      • +
      • 2 @@ -29016,7 +28972,7 @@

      • -
      • +
      • 1 @@ -29027,7 +28983,7 @@

      • -
      • +
      • 1 @@ -29038,7 +28994,7 @@

      • -
      • +
      • @@ -29049,7 +29005,7 @@

      • -
      • +
      • @@ -29060,7 +29016,7 @@

      • -
      • +
      • @@ -29071,7 +29027,7 @@

      • -
      • +
      • 1 @@ -29082,7 +29038,7 @@

      • -
      • +
      • 2 @@ -29093,7 +29049,7 @@

      • -
      • +
      • @@ -29104,7 +29060,7 @@

      • -
      • +
      • 1 @@ -29115,7 +29071,7 @@

      • -
      • +
      • 1 @@ -29126,7 +29082,7 @@

      • -
      • +
      • @@ -29137,7 +29093,7 @@

      • -
      • +
      • @@ -29148,7 +29104,7 @@

      • -
      • +
      • @@ -29159,7 +29115,7 @@

      • -
      • +
      • @@ -29170,7 +29126,7 @@

      • -
      • +
      • 1 @@ -29181,7 +29137,7 @@

      • -
      • +
      • 1 @@ -29192,7 +29148,7 @@

      • -
      • +
      • 1 @@ -29203,7 +29159,7 @@

      • -
      • +
      • 1 @@ -29214,7 +29170,7 @@

      • -
      • +
      • @@ -29225,7 +29181,7 @@

      • -
      • +
      • @@ -29236,7 +29192,7 @@

      • -
      • +
      • @@ -29247,7 +29203,7 @@

      • -
      • +
      • 1 @@ -29258,7 +29214,7 @@

      • -
      • +
      • 2 @@ -29269,7 +29225,7 @@

      • -
      • +
      • 1 @@ -29280,7 +29236,7 @@

      • -
      • +
      • 1 @@ -29291,7 +29247,7 @@

      • -
      • +
      • @@ -29302,7 +29258,7 @@

      • -
      • +
      • @@ -29313,7 +29269,7 @@

      • -
      • +
      • @@ -29324,7 +29280,7 @@

      • -
      • +
      • 1 @@ -29335,7 +29291,7 @@

      • -
      • +
      • 1 @@ -29346,7 +29302,7 @@

      • -
      • +
      • 2 @@ -29357,7 +29313,7 @@

      • -
      • +
      • 1 @@ -29368,7 +29324,7 @@

      • -
      • +
      • 1 @@ -29379,7 +29335,7 @@

      • -
      • +
      • @@ -29390,7 +29346,7 @@

      • -
      • +
      • @@ -29401,7 +29357,7 @@

      • -
      • +
      • 1 @@ -29412,7 +29368,7 @@

      • -
      • +
      • 2 @@ -29423,7 +29379,7 @@

      • -
      • +
      • 1 @@ -29434,7 +29390,7 @@

      • -
      • +
      • 1 @@ -29445,7 +29401,7 @@

      • -
      • +
      • @@ -29456,7 +29412,7 @@

      • -
      • +
      • @@ -29467,7 +29423,7 @@

      • -
      • +
      • @@ -29478,7 +29434,7 @@

      • -
      • +
      • @@ -29489,7 +29445,7 @@

      • -
      • +
      • diff --git a/spec/models/edm_spec.rb b/spec/models/edm_spec.rb index 17bcbc9a..5603ed3e 100644 --- a/spec/models/edm_spec.rb +++ b/spec/models/edm_spec.rb @@ -233,8 +233,7 @@ end end - # disabled due to lack of test data - xdescribe 'legislation' do + describe 'legislation' do context 'where there is no data' do it 'returns nil' do expect(edm.legislation).to be_nil diff --git a/spec/models/research_briefing_spec.rb b/spec/models/research_briefing_spec.rb index 81cdff80..1674ba1c 100644 --- a/spec/models/research_briefing_spec.rb +++ b/spec/models/research_briefing_spec.rb @@ -273,8 +273,7 @@ end end - # disabled due to lack of test data - xdescribe 'legislation' do + describe 'legislation' do context 'where there is no data' do it 'returns nil' do expect(research_briefing.legislation).to be_nil diff --git a/spec/models/written_statement_spec.rb b/spec/models/written_statement_spec.rb index f41b176a..a095a33e 100644 --- a/spec/models/written_statement_spec.rb +++ b/spec/models/written_statement_spec.rb @@ -15,7 +15,7 @@ end end - xdescribe 'attachment' do + describe 'attachment' do # disabled - awaiting feedback context 'where there is no data' do it 'returns nil' do @@ -39,8 +39,7 @@ end end - xdescribe 'notes' do - # disabled - awaiting feedback + describe 'notes' do context 'where there is no data' do it 'returns nil' do expect(written_statement.notes).to be_nil @@ -57,8 +56,8 @@ context 'where data exists' do let!(:written_statement) { WrittenStatement.new({ 'notes_t' => ['first item', 'second item'] }) } - it 'returns all items as an array' do - expect(written_statement.notes).to eq(['first item', 'second item']) + it 'returns the first item' do + expect(written_statement.notes).to eq('first item') end end end From ce4a7782f6c7b5e6abfb7ba259c39f0505b4d535 Mon Sep 17 00:00:00 2001 From: j-corry Date: Fri, 22 Sep 2023 16:28:51 +0100 Subject: [PATCH 4/6] - Fix failing tests: -- Legislation should return all items for key legislationTitle_ses -- Attachment should return all items for key attachment_t --- app/models/content_object.rb | 2 +- app/models/written_statement.rb | 2 +- coverage/.last_run.json | 2 +- coverage/.resultset.json | 22 +- coverage/index.html | 580 +++++++++++++++++--------- spec/models/edm_spec.rb | 6 +- spec/models/research_briefing_spec.rb | 6 +- 7 files changed, 418 insertions(+), 202 deletions(-) diff --git a/app/models/content_object.rb b/app/models/content_object.rb index 107d35a0..5a84d425 100644 --- a/app/models/content_object.rb +++ b/app/models/content_object.rb @@ -48,7 +48,7 @@ def topics def legislation return if content_object_data['legislationTitle_ses'].blank? - content_object_data['legislationTitle_ses'].first + content_object_data['legislationTitle_ses'] end def department diff --git a/app/models/written_statement.rb b/app/models/written_statement.rb index 8a0206e8..a0d4fb6f 100644 --- a/app/models/written_statement.rb +++ b/app/models/written_statement.rb @@ -15,7 +15,7 @@ def object_name def attachment return if content_object_data['attachment_t'].blank? - content_object_data['attachment_t'].first + content_object_data['attachment_t'] end def notes diff --git a/coverage/.last_run.json b/coverage/.last_run.json index a88459f2..4903c2b1 100644 --- a/coverage/.last_run.json +++ b/coverage/.last_run.json @@ -1,5 +1,5 @@ { "result": { - "line": 95.69 + "line": 96.9 } } diff --git a/coverage/.resultset.json b/coverage/.resultset.json index 3a3d4f76..c3ae9ab9 100644 --- a/coverage/.resultset.json +++ b/coverage/.resultset.json @@ -490,7 +490,7 @@ 1, 108, null, - 0, + 2, null, null, 1, @@ -835,8 +835,12 @@ null, 6, null, + null, + null, + null, 2, null, + null, 1, null, 1, @@ -930,6 +934,14 @@ null, null, 1, + null, + null, + null, + null, + null, + null, + null, + 1, 0, null, 0, @@ -945,6 +957,12 @@ null, null, 1, + 0, + null, + 0, + null, + null, + 1, 4, null, 2, @@ -2755,6 +2773,6 @@ ] } }, - "timestamp": 1695371096 + "timestamp": 1695396455 } } diff --git a/coverage/index.html b/coverage/index.html index 5d0ae0d1..3f9ce01b 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -14,7 +14,7 @@ loading
      • -
        Generated 2023-09-22T09:24:57+01:00
        +
        Generated 2023-09-22T16:27:35+01:00
          @@ -23,14 +23,14 @@

          All Files ( - 96.97% + 96.9% covered at - 7.36 + 7.34 hits/line ) @@ -43,11 +43,11 @@

          - 1255 relevant lines, - 1217 lines covered and - 38 lines missed. + 1259 relevant lines, + 1220 lines covered and + 39 lines missed. ( - 96.97% + 96.9% )
          @@ -226,12 +226,12 @@

          app/models/content_object.rb - 88.06 % + 89.55 % 149 67 - 59 - 8 - 32.25 + 60 + 7 + 32.28 @@ -270,12 +270,12 @@

          app/models/written_question.rb - 86.75 % - 190 - 83 - 72 - 11 - 2.66 + 85.06 % + 208 + 87 + 74 + 13 + 2.56 @@ -2858,7 +2858,7 @@

          app/models/content_object.rb

          - 88.06% + 89.55% lines covered @@ -2868,8 +2868,8 @@

          67 relevant lines. - 59 lines covered and - 8 lines missed. + 60 lines covered and + 7 lines missed.
          @@ -3430,13 +3430,13 @@

          -
        • - +
        • + 2 - content_object_data['legislationTitle_ses'].first + content_object_data['legislationTitle_ses']
        • @@ -6755,7 +6755,7 @@

          app/models/written_question.rb

          - 86.75% + 85.06% lines covered @@ -6764,9 +6764,9 @@

          - 83 relevant lines. - 72 lines covered and - 11 lines missed. + 87 relevant lines. + 74 lines covered and + 13 lines missed.
          @@ -7173,7 +7173,40 @@

          -
        • +
        • + + + + + + # the following correspond to the holding state and their presence allows us to determine that this answered +
        • +
          + +
          +
        • + + + + + + # question formerly had the state 'holding': +
        • +
          + +
          +
        • + + + + + + # 1. the question has received a holding answer: +
        • +
          + +
          +
        • 2 @@ -7184,7 +7217,7 @@

        • -
        • +
        • @@ -7195,7 +7228,18 @@

        • -
        • +
        • + + + + + + # 2. the date this question received a holding answer: +
        • +
          + +
          +
        • 1 @@ -7206,7 +7250,7 @@

        • -
        • +
        • @@ -7217,7 +7261,7 @@

        • -
        • +
        • 1 @@ -7228,7 +7272,7 @@

        • -
        • +
        • @@ -7239,7 +7283,7 @@

        • -
        • +
        • @@ -7250,7 +7294,7 @@

        • -
        • +
        • 1 @@ -7261,7 +7305,7 @@

        • -
        • +
        • 5 @@ -7272,7 +7316,7 @@

        • -
        • +
        • @@ -7283,7 +7327,7 @@

        • -
        • +
        • @@ -7294,7 +7338,7 @@

        • -
        • +
        • 1 @@ -7305,7 +7349,7 @@

        • -
        • +
        • @@ -7316,7 +7360,7 @@

        • -
        • +
        • @@ -7327,7 +7371,7 @@

        • -
        • +
        • @@ -7338,7 +7382,7 @@

        • -
        • +
        • @@ -7349,7 +7393,7 @@

        • -
        • +
        • @@ -7360,7 +7404,7 @@

        • -
        • +
        • @@ -7371,7 +7415,7 @@

        • -
        • +
        • @@ -7382,7 +7426,7 @@

        • -
        • +
        • 3 @@ -7393,7 +7437,7 @@

        • -
        • +
        • @@ -7404,7 +7448,7 @@

        • -
        • +
        • 1 @@ -7415,7 +7459,7 @@

        • -
        • +
        • @@ -7426,7 +7470,7 @@

        • -
        • +
        • @@ -7437,7 +7481,7 @@

        • -
        • +
        • 1 @@ -7448,7 +7492,7 @@

        • -
        • +
        • @@ -7459,7 +7503,7 @@

        • -
        • +
        • @@ -7470,7 +7514,7 @@

        • -
        • +
        • @@ -7481,7 +7525,7 @@

        • -
        • +
        • @@ -7492,7 +7536,7 @@

        • -
        • +
        • @@ -7503,7 +7547,7 @@

        • -
        • +
        • @@ -7514,7 +7558,7 @@

        • -
        • +
        • @@ -7525,7 +7569,7 @@

        • -
        • +
        • @@ -7536,7 +7580,7 @@

        • -
        • +
        • @@ -7547,7 +7591,7 @@

        • -
        • +
        • @@ -7558,7 +7602,7 @@

        • -
        • +
        • @@ -7569,7 +7613,7 @@

        • -
        • +
        • @@ -7580,7 +7624,7 @@

        • -
        • +
        • 3 @@ -7591,7 +7635,7 @@

        • -
        • +
        • @@ -7602,7 +7646,7 @@

        • -
        • +
        • 2 @@ -7613,7 +7657,7 @@

        • -
        • +
        • @@ -7624,7 +7668,7 @@

        • -
        • +
        • 1 @@ -7635,7 +7679,7 @@

        • -
        • +
        • 1 @@ -7646,7 +7690,7 @@

        • -
        • +
        • @@ -7657,7 +7701,7 @@

        • -
        • +
        • @@ -7668,7 +7712,7 @@

        • -
        • +
        • 1 @@ -7679,7 +7723,7 @@

        • -
        • +
        • 6 @@ -7690,7 +7734,7 @@

        • -
        • +
        • @@ -7701,7 +7745,7 @@

        • -
        • +
        • 5 @@ -7712,7 +7756,7 @@

        • -
        • +
        • @@ -7723,7 +7767,7 @@

        • -
        • +
        • 4 @@ -7734,7 +7778,7 @@

        • -
        • +
        • @@ -7745,7 +7789,7 @@

        • -
        • +
        • 3 @@ -7756,7 +7800,7 @@

        • -
        • +
        • @@ -7767,7 +7811,7 @@

        • -
        • +
        • 2 @@ -7778,7 +7822,7 @@

        • -
        • +
        • @@ -7789,7 +7833,7 @@

        • -
        • +
        • 1 @@ -7800,7 +7844,7 @@

        • -
        • +
        • @@ -7811,7 +7855,7 @@

        • -
        • +
        • @@ -7822,7 +7866,7 @@

        • -
        • +
        • @@ -7833,7 +7877,7 @@

        • -
        • +
        • @@ -7844,7 +7888,7 @@

        • -
        • +
        • 1 @@ -7855,7 +7899,7 @@

        • -
        • +
        • @@ -7866,7 +7910,7 @@

        • -
        • +
        • 3 @@ -7877,7 +7921,7 @@

        • -
        • +
        • @@ -7888,7 +7932,7 @@

        • -
        • +
        • 1 @@ -7899,7 +7943,7 @@

        • -
        • +
        • @@ -7910,7 +7954,7 @@

        • -
        • +
        • @@ -7921,7 +7965,7 @@

        • -
        • +
        • 1 @@ -7932,7 +7976,7 @@

        • -
        • +
        • 1 @@ -7943,7 +7987,7 @@

        • -
        • +
        • @@ -7954,7 +7998,7 @@

        • -
        • +
        • @@ -7965,7 +8009,7 @@

        • -
        • +
        • @@ -7976,7 +8020,7 @@

        • -
        • +
        • @@ -7987,7 +8031,7 @@

        • -
        • +
        • @@ -7998,7 +8042,7 @@

        • -
        • +
        • @@ -8009,7 +8053,7 @@

        • -
        • +
        • 1 @@ -8020,7 +8064,7 @@

        • -
        • +
        • 4 @@ -8031,7 +8075,7 @@

        • -
        • +
        • @@ -8042,7 +8086,7 @@

        • -
        • +
        • 2 @@ -8053,7 +8097,7 @@

        • -
        • +
        • 2 @@ -8064,7 +8108,7 @@

        • -
        • +
        • @@ -8075,7 +8119,7 @@

        • -
        • +
        • 1 @@ -8086,7 +8130,7 @@

        • -
        • +
        • @@ -8097,7 +8141,7 @@

        • -
        • +
        • @@ -8108,7 +8152,7 @@

        • -
        • +
        • 1 @@ -8119,7 +8163,7 @@

        • -
        • +
        • 4 @@ -8130,7 +8174,7 @@

        • -
        • +
        • @@ -8141,7 +8185,7 @@

        • -
        • +
        • 2 @@ -8152,7 +8196,7 @@

        • -
        • +
        • 2 @@ -8163,7 +8207,7 @@

        • -
        • +
        • @@ -8174,7 +8218,7 @@

        • -
        • +
        • 1 @@ -8185,7 +8229,7 @@

        • -
        • +
        • @@ -8196,7 +8240,7 @@

        • -
        • +
        • @@ -8207,7 +8251,95 @@

        • -
        • +
        • + 1 + + + + + def date_for_answer +
        • +
          + +
          +
        • + + + + + + # This is required by the views as currently wireframed: +
        • +
          + +
          +
        • + + + + + + # 'it was due for answer on <date>' +
        • +
          + +
          +
        • + + + + + + # Currently unclear on the field holding this information +
        • +
          + +
          +
        • + + + + + + +
        • +
          + +
          +
        • + + + + + + nil +
        • +
          + +
          +
        • + + + + + + end +
        • +
          + +
          +
        • + + + + + + +
        • +
          + +
          +
        • 1 @@ -8218,7 +8350,7 @@

        • -
        • +
        • @@ -8229,7 +8361,7 @@

        • -
        • +
        • @@ -8240,7 +8372,7 @@

        • -
        • +
        • @@ -8251,7 +8383,7 @@

        • -
        • +
        • @@ -8262,7 +8394,7 @@

        • -
        • +
        • @@ -8273,7 +8405,7 @@

        • -
        • +
        • @@ -8284,7 +8416,7 @@

        • -
        • +
        • @@ -8295,7 +8427,7 @@

        • -
        • +
        • @@ -8306,7 +8438,7 @@

        • -
        • +
        • 1 @@ -8317,7 +8449,7 @@

        • -
        • +
        • 3 @@ -8328,7 +8460,7 @@

        • -
        • +
        • @@ -8339,7 +8471,7 @@

        • -
        • +
        • 1 @@ -8350,7 +8482,7 @@

        • -
        • +
        • @@ -8361,7 +8493,7 @@

        • -
        • +
        • @@ -8372,7 +8504,73 @@

        • -
        • +
        • + 1 + + + + + def tabling_member_party +
        • +
          + +
          +
        • + + + + + + return if content_object_data['tablingMemberParty_ses'].blank? +
        • +
          + +
          +
        • + + + + + + +
        • +
          + +
          +
        • + + + + + + content_object_data['tablingMemberParty_ses'].first +
        • +
          + +
          +
        • + + + + + + end +
        • +
          + +
          +
        • + + + + + + +
        • +
          + +
          +
        • 1 @@ -8383,7 +8581,7 @@

        • -
        • +
        • 4 @@ -8394,7 +8592,7 @@

        • -
        • +
        • @@ -8405,7 +8603,7 @@

        • -
        • +
        • 2 @@ -8416,7 +8614,7 @@

        • -
        • +
        • @@ -8427,7 +8625,7 @@

        • -
        • +
        • @@ -8438,29 +8636,29 @@

        • -
        • +
        • 1 - def correcting_member + def answering_member_party
        • -
        • +
        • - return if content_object_data['correctingMember_ses'].blank? + return if content_object_data['answeringMemberParty_ses'].blank?
        • -
        • +
        • @@ -8471,18 +8669,18 @@

        • -
        • +
        • - content_object_data['correctingMember_ses'].first + content_object_data['tablingMemberParty_ses'].first
        • -
        • +
        • @@ -8493,7 +8691,7 @@

        • -
        • +
        • @@ -8504,7 +8702,7 @@

        • -
        • +
        • 1 @@ -8515,7 +8713,7 @@

        • -
        • +
        • @@ -8526,7 +8724,7 @@

        • -
        • +
        • @@ -8537,7 +8735,7 @@

        • -
        • +
        • @@ -8548,7 +8746,7 @@

        • -
        • +
        • @@ -8559,7 +8757,7 @@

        • -
        • +
        • @@ -8570,7 +8768,7 @@

        • -
        • +
        • 1 @@ -8581,7 +8779,7 @@

        • -
        • +
        • 2 @@ -8592,7 +8790,7 @@

        • -
        • +
        • @@ -8603,7 +8801,7 @@

        • -
        • +
        • @@ -8614,7 +8812,7 @@

        • -
        • +
        • @@ -8625,7 +8823,7 @@

        • -
        • +
        • @@ -8636,7 +8834,7 @@

        • -
        • +
        • 1 @@ -8647,7 +8845,7 @@

        • -
        • +
        • 4 @@ -8658,7 +8856,7 @@

        • -
        • +
        • @@ -8669,7 +8867,7 @@

        • -
        • +
        • 2 @@ -8680,7 +8878,7 @@

        • -
        • +
        • @@ -8691,7 +8889,7 @@

        • -
        • +
        • 1 @@ -8702,7 +8900,7 @@

        • -
        • +
        • @@ -8713,7 +8911,7 @@

        • -
        • +
        • @@ -8724,7 +8922,7 @@

        • -
        • +
        • 1 @@ -8735,7 +8933,7 @@

        • -
        • +
        • @@ -8746,7 +8944,7 @@

        • -
        • +
        • @@ -8757,7 +8955,7 @@

        • -
        • +
        • @@ -8768,7 +8966,7 @@

        • -
        • +
        • 3 @@ -8779,7 +8977,7 @@

        • -
        • +
        • @@ -8790,7 +8988,7 @@

        • -
        • +
        • 1 @@ -8801,7 +8999,7 @@

        • -
        • +
        • @@ -8812,7 +9010,7 @@

        • -
        • +
        • @@ -8823,7 +9021,7 @@

        • -
        • +
        • 1 @@ -8834,7 +9032,7 @@

        • -
        • +
        • @@ -8845,7 +9043,7 @@

        • -
        • +
        • @@ -8856,7 +9054,7 @@

        • -
        • +
        • @@ -9091,7 +9289,7 @@

          - content_object_data['attachment_t'].first + content_object_data['attachment_t']

        • @@ -15740,7 +15938,7 @@

          - let!(:edm) { Edm.new({ '' => [] }) } + let!(:edm) { Edm.new({ 'legislationTitle_ses' => [] }) } @@ -15817,7 +16015,7 @@

          - let!(:edm) { Edm.new({ '' => ['first item', 'second item'] }) } + let!(:edm) { Edm.new({ 'legislationTitle_ses' => [12345, 67890] }) } @@ -15850,7 +16048,7 @@

          - expect(edm.legislation).to eq(['first item', 'second item']) + expect(edm.legislation).to eq([12345, 67890]) @@ -20501,7 +20699,7 @@

          - let!(:research_briefing) { ResearchBriefing.new({ '' => [] }) } + let!(:research_briefing) { ResearchBriefing.new({ 'legislationTitle_ses' => [] }) } @@ -20578,7 +20776,7 @@

          - let!(:research_briefing) { ResearchBriefing.new({ '' => ['first item', 'second item'] }) } + let!(:research_briefing) { ResearchBriefing.new({ 'legislationTitle_ses' => [12345, 67890] }) } @@ -20611,7 +20809,7 @@

          - expect(research_briefing.legislation).to eq(['first item', 'second item']) + expect(research_briefing.legislation).to eq([12345, 67890]) diff --git a/spec/models/edm_spec.rb b/spec/models/edm_spec.rb index 5603ed3e..f6e6e1e2 100644 --- a/spec/models/edm_spec.rb +++ b/spec/models/edm_spec.rb @@ -241,17 +241,17 @@ end context 'where there is an empty array' do - let!(:edm) { Edm.new({ '' => [] }) } + let!(:edm) { Edm.new({ 'legislationTitle_ses' => [] }) } it 'returns nil' do expect(edm.legislation).to be_nil end end context 'where data exists' do - let!(:edm) { Edm.new({ '' => ['first item', 'second item'] }) } + let!(:edm) { Edm.new({ 'legislationTitle_ses' => [12345, 67890] }) } it 'returns all items as an array' do - expect(edm.legislation).to eq(['first item', 'second item']) + expect(edm.legislation).to eq([12345, 67890]) end end end diff --git a/spec/models/research_briefing_spec.rb b/spec/models/research_briefing_spec.rb index 1674ba1c..6f458885 100644 --- a/spec/models/research_briefing_spec.rb +++ b/spec/models/research_briefing_spec.rb @@ -281,17 +281,17 @@ end context 'where there is an empty array' do - let!(:research_briefing) { ResearchBriefing.new({ '' => [] }) } + let!(:research_briefing) { ResearchBriefing.new({ 'legislationTitle_ses' => [] }) } it 'returns nil' do expect(research_briefing.legislation).to be_nil end end context 'where data exists' do - let!(:research_briefing) { ResearchBriefing.new({ '' => ['first item', 'second item'] }) } + let!(:research_briefing) { ResearchBriefing.new({ 'legislationTitle_ses' => [12345, 67890] }) } it 'returns all items as an array' do - expect(research_briefing.legislation).to eq(['first item', 'second item']) + expect(research_briefing.legislation).to eq([12345, 67890]) end end end From e6a77dbfeed44ce94a78b6bdd9c528828129a9b7 Mon Sep 17 00:00:00 2001 From: j-corry Date: Tue, 26 Sep 2023 08:44:43 +0100 Subject: [PATCH 5/6] Various tweaks following review of wireframes: - Subjects and topics no longer use rollup fields - Update preliminary sentence for EDMs - Add creator party to research briefing prelim - Add missing related items to secondary information for research briefings - Tweaks to written question prelims (changing tense) --- app/models/content_object.rb | 8 ++--- app/models/edm.rb | 35 +++++++++++++++++-- app/models/research_briefing.rb | 7 ++++ .../search/fragments/_edm_prelim.html.erb | 17 +++++++-- .../_research_briefing_prelim.html.erb | 2 +- ..._written_question_prelim_answered.html.erb | 4 +-- ...stion_prelim_answered_was_holding.html.erb | 2 +- ...written_question_prelim_corrected.html.erb | 2 +- .../_written_question_prelim_holding.html.erb | 2 +- .../_written_question_prelim_tabled.html.erb | 2 +- ...written_question_prelim_withdrawn.html.erb | 2 +- .../search/objects/research_briefing.html.erb | 1 + 12 files changed, 68 insertions(+), 16 deletions(-) diff --git a/app/models/content_object.rb b/app/models/content_object.rb index 5a84d425..fda40af9 100644 --- a/app/models/content_object.rb +++ b/app/models/content_object.rb @@ -33,16 +33,16 @@ def reference end def subjects - return if content_object_data['subject_sesrollup'].blank? + return if content_object_data['subject_ses'].blank? - content_object_data['subject_sesrollup'] + content_object_data['subject_ses'] end def topics # note - have not yet verified key as missing from test data - return if content_object_data['topic_sesrollup'].blank? + return if content_object_data['topic_ses'].blank? - content_object_data['topic_sesrollup'] + content_object_data['topic_ses'] end def legislation diff --git a/app/models/edm.rb b/app/models/edm.rb index d1d47817..3c994134 100644 --- a/app/models/edm.rb +++ b/app/models/edm.rb @@ -59,6 +59,25 @@ def amendments result_hashes end + def amendments_count + return if amendments.blank? + + amendments.size + end + + def withdrawn? + return false unless state == 'Withdrawn' + + true + end + + def state + # e.g. 'Open' + return if content_object_data['edmStatus_t'].blank? + + content_object_data['edmStatus_t'] + end + def amendment_text return if content_object_data['amendmentText_t'].blank? @@ -72,6 +91,12 @@ def other_supporters content_object_data['signedMember_ses'] end + def number_of_signatures + return if content_object_data['numberOfSignatures_t'].blank? + + content_object_data['numberOfSignatures_t'].first + end + def motion_text return if content_object_data['motionText_t'].blank? @@ -79,9 +104,15 @@ def motion_text end def primary_sponsor - return if content_object_data['primarySponsorPrinted_s'].blank? + return if content_object_data['primarySponsor_ses'].blank? + + content_object_data['primarySponsor_ses'].first + end + + def primary_sponsor_party + return if content_object_data['primarySponsorParty_ses'].blank? - content_object_data['primarySponsorPrinted_s'].first + content_object_data['primarySponsorParty_ses'].first end def date_tabled diff --git a/app/models/research_briefing.rb b/app/models/research_briefing.rb index a4a35268..6ef99c7c 100644 --- a/app/models/research_briefing.rb +++ b/app/models/research_briefing.rb @@ -25,6 +25,13 @@ def creator content_object_data['creator_ses'].first end + def creator_party + # this is for the prelim 'by...' + + return if content_object_data['creatorParty_ses'].blank? + + content_object_data['creatorParty_ses'].first + end def published_by # this is the publishing organisation and is to be used in the secondary attributes diff --git a/app/views/search/fragments/_edm_prelim.html.erb b/app/views/search/fragments/_edm_prelim.html.erb index f5cdf103..76b94a5f 100644 --- a/app/views/search/fragments/_edm_prelim.html.erb +++ b/app/views/search/fragments/_edm_prelim.html.erb @@ -1,8 +1,21 @@
          - An <%= object_link('Early Day Motion', '/') %> tabled by <%= object_link(object.primary_sponsor, '/') %> - on <%= object.date_tabled&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>. + An <%= object_link('Early Day Motion', '/') %> sponsored by <%= object_link(object.primary_sponsor, '/') %> + (primary sponsor, <%= object_link(object.primary_sponsor_party, '/') %>) + <% object.other_supporters.each do |supporter| %> + <%= object_link(supporter, '/') %>, + <% end %> + and tabled on <%= object.date_tabled&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> + in the <%= object_link(object.legislature, '/') %>. + It is a fatal prayer + signed by <%= object.number_of_signatures %> members in total<%= object.amendments_count ? \ + ',' : '.' %> + <% if object.amendments_count %> and has received <%= object_link(object.amendments_count, '#amendments') %>. + <% end %> + <% if object.withdrawn? %> + The primary sponsor has subsequently withdrawn this motion. + <% end %>
          diff --git a/app/views/search/fragments/_research_briefing_prelim.html.erb b/app/views/search/fragments/_research_briefing_prelim.html.erb index 23135823..70714d89 100644 --- a/app/views/search/fragments/_research_briefing_prelim.html.erb +++ b/app/views/search/fragments/_research_briefing_prelim.html.erb @@ -1,7 +1,7 @@
          - An <%= object_link("#{object.object_name.titleize}", '/') %> + A <%= object_link("#{object.object_name.titleize}", '/') %> by <%= object_link("#{object.creator}", '/') %> published on <%= object.published_on&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>. <% if object.updated_on %> diff --git a/app/views/search/fragments/_written_question_prelim_answered.html.erb b/app/views/search/fragments/_written_question_prelim_answered.html.erb index 2843ccba..2d65497c 100644 --- a/app/views/search/fragments/_written_question_prelim_answered.html.erb +++ b/app/views/search/fragments/_written_question_prelim_answered.html.erb @@ -2,7 +2,7 @@
          A <%= object_link("#{object.object_name.titleize}", '/') %> - was asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) + asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, in the <%= object_link("#{object.legislature}", '/') %>. It was due for answer @@ -10,7 +10,7 @@ (named day). It was answered by <%= object_link("#{object.answering_member}", '/') %> (<%= object.answering_member_party %>) on <%= object.date_of_answer.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> - on behalf of <%= object_link("#{object.department}", '/') %>. + on behalf of the <%= object_link("#{object.department}", '/') %>.
          diff --git a/app/views/search/fragments/_written_question_prelim_answered_was_holding.html.erb b/app/views/search/fragments/_written_question_prelim_answered_was_holding.html.erb index 01b73392..6ec28d62 100644 --- a/app/views/search/fragments/_written_question_prelim_answered_was_holding.html.erb +++ b/app/views/search/fragments/_written_question_prelim_answered_was_holding.html.erb @@ -2,7 +2,7 @@
          A <%= object_link("#{object.object_name.titleize}", '/') %> - was asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) + asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, in the <%= object_link("#{object.legislature}", '/') %>. It was due for answer diff --git a/app/views/search/fragments/_written_question_prelim_corrected.html.erb b/app/views/search/fragments/_written_question_prelim_corrected.html.erb index 22b60509..4454ea2e 100644 --- a/app/views/search/fragments/_written_question_prelim_corrected.html.erb +++ b/app/views/search/fragments/_written_question_prelim_corrected.html.erb @@ -2,7 +2,7 @@
          A <%= object_link("#{object.object_name.titleize}", '/') %> - was asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) + asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, in the <%= object_link("#{object.legislature}", '/') %>. It was due for answer diff --git a/app/views/search/fragments/_written_question_prelim_holding.html.erb b/app/views/search/fragments/_written_question_prelim_holding.html.erb index 953eb06b..1b2aeaa5 100644 --- a/app/views/search/fragments/_written_question_prelim_holding.html.erb +++ b/app/views/search/fragments/_written_question_prelim_holding.html.erb @@ -2,7 +2,7 @@
          A <%= object_link("#{object.object_name.titleize}", '/') %> - was asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) + asked by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, in the <%= object_link("#{object.legislature}", '/') %>. It was due for answer diff --git a/app/views/search/fragments/_written_question_prelim_tabled.html.erb b/app/views/search/fragments/_written_question_prelim_tabled.html.erb index 02fa202e..a71e57b2 100644 --- a/app/views/search/fragments/_written_question_prelim_tabled.html.erb +++ b/app/views/search/fragments/_written_question_prelim_tabled.html.erb @@ -2,7 +2,7 @@
          A <%= object_link("#{object.object_name.titleize}", '/') %> - was tabled by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) + tabled by <%= object_link("#{object.tabling_member}", '/') %> (<%= object.tabling_member_party %>) on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, in the <%= object_link("#{object.legislature}", '/') %> for the <%= object_link("#{object.department}", '/') %>. diff --git a/app/views/search/fragments/_written_question_prelim_withdrawn.html.erb b/app/views/search/fragments/_written_question_prelim_withdrawn.html.erb index df43a57f..64422d9e 100644 --- a/app/views/search/fragments/_written_question_prelim_withdrawn.html.erb +++ b/app/views/search/fragments/_written_question_prelim_withdrawn.html.erb @@ -2,7 +2,7 @@
          A <%= object_link("#{object.object_name.titleize}", '/') %> - was asked by <%= object_link("#{object.tabling_member}", '/') %> + asked by <%= object_link("#{object.tabling_member}", '/') %> on <%= object.date_of_question&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %>, in the <%= object_link("#{object.legislature}", '/') %>. The Member has subsequently withdrawn this question. An answer is no longer expected from diff --git a/app/views/search/objects/research_briefing.html.erb b/app/views/search/objects/research_briefing.html.erb index a93f52d6..73f8fcc6 100644 --- a/app/views/search/objects/research_briefing.html.erb +++ b/app/views/search/objects/research_briefing.html.erb @@ -25,6 +25,7 @@

          About this <%= object.object_name %>

          <%= render 'search/fragments/reference', reference: object.reference unless object.reference.blank? %> + <%= render 'search/fragments/related_items', related_items: object.related_items unless object.related_items.blank? %> <%= render 'search/fragments/pills', pills_heading: 'Subjects', pills: object.subjects unless object.subjects.blank? %> <%= render 'search/fragments/pills', pills_heading: 'Topics', pills: object.topics unless object.topics.blank? %> <%= render 'search/fragments/legislation', legislation: object.legislation unless object.legislation.blank? %> From d813be3b8553a9f81aa15e9ff24c41984f3475ef Mon Sep 17 00:00:00 2001 From: j-corry Date: Tue, 26 Sep 2023 10:05:17 +0100 Subject: [PATCH 6/6] Test fixes --- .../search/fragments/_edm_prelim.html.erb | 6 +- coverage/.last_run.json | 2 +- coverage/.resultset.json | 74 +- coverage/index.html | 980 +++++++++++++----- spec/models/edm_spec.rb | 8 +- spec/models/research_briefing_spec.rb | 4 +- spec/requests/edm_spec.rb | 2 +- 7 files changed, 767 insertions(+), 309 deletions(-) diff --git a/app/views/search/fragments/_edm_prelim.html.erb b/app/views/search/fragments/_edm_prelim.html.erb index 76b94a5f..53c81b68 100644 --- a/app/views/search/fragments/_edm_prelim.html.erb +++ b/app/views/search/fragments/_edm_prelim.html.erb @@ -3,8 +3,10 @@
          An <%= object_link('Early Day Motion', '/') %> sponsored by <%= object_link(object.primary_sponsor, '/') %> (primary sponsor, <%= object_link(object.primary_sponsor_party, '/') %>) - <% object.other_supporters.each do |supporter| %> - <%= object_link(supporter, '/') %>, + <% unless object.other_supporters.blank? %> + <% object.other_supporters.each do |supporter| %> + <%= object_link(supporter, '/') %>, + <% end %> <% end %> and tabled on <%= object.date_tabled&.strftime(ApplicationHelper::DATE_DISPLAY_FORMAT) %> in the <%= object_link(object.legislature, '/') %>. diff --git a/coverage/.last_run.json b/coverage/.last_run.json index 4903c2b1..144e532a 100644 --- a/coverage/.last_run.json +++ b/coverage/.last_run.json @@ -1,5 +1,5 @@ { "result": { - "line": 96.9 + "line": 96.71 } } diff --git a/coverage/.resultset.json b/coverage/.resultset.json index c3ae9ab9..2ed53a15 100644 --- a/coverage/.resultset.json +++ b/coverage/.resultset.json @@ -258,7 +258,7 @@ null, 1, null, - 104, + 1323, null, null, null @@ -500,9 +500,9 @@ null, null, 1, - 3, + 55, null, - 1, + 51, null, null, 1, @@ -615,17 +615,17 @@ null, null, null, - 61, - 16, - 16, - 16, - 16, - 16, + 189, + 56, + 56, + 56, + 56, + 56, null, - 16, + 56, null, null, - 13, + 49, null, null, null, @@ -633,7 +633,7 @@ null, null, null, - 13, + 49, null, null, null, @@ -641,7 +641,7 @@ null, null, null, - 13, + 49, null, null, null, @@ -651,7 +651,26 @@ null, null, null, - 13, + 49, + null, + null, + 1, + 110, + null, + 18, + null, + null, + 1, + 52, + null, + 0, + null, + null, + 1, + null, + 52, + null, + 50, null, null, 1, @@ -662,9 +681,15 @@ null, 1, null, - 205, + 307, null, - 201, + 301, + null, + null, + 1, + 52, + null, + 50, null, null, 1, @@ -680,6 +705,12 @@ null, null, 1, + 52, + null, + 50, + null, + null, + 1, 56, null, 52, @@ -736,6 +767,13 @@ null, 1, null, + 1, + null, + null, + 0, + null, + 0, + null, null, 1, null, @@ -2756,7 +2794,7 @@ null, 50, 50, - 950, + 143, null, null, null, @@ -2773,6 +2811,6 @@ ] } }, - "timestamp": 1695396455 + "timestamp": 1695719081 } } diff --git a/coverage/index.html b/coverage/index.html index 3f9ce01b..b296aa4c 100644 --- a/coverage/index.html +++ b/coverage/index.html @@ -14,7 +14,7 @@ loading
          -
          Generated 2023-09-22T16:27:35+01:00
          +
          Generated 2023-09-26T10:04:41+01:00
            @@ -23,14 +23,14 @@

            All Files ( - 96.9% + 96.71% covered at - 7.34 + 8.58 hits/line ) @@ -43,11 +43,11 @@

            - 1259 relevant lines, - 1220 lines covered and - 39 lines missed. + 1277 relevant lines, + 1235 lines covered and + 42 lines missed. ( - 96.9% + 96.71% )
            @@ -154,7 +154,7 @@

            3 3 0 - 35.33 + 441.67 @@ -231,18 +231,18 @@

            67 60 7 - 32.28 + 33.81 app/models/edm.rb - 100.00 % - 104 - 40 - 40 - 0 - 54.33 + 98.18 % + 135 + 55 + 54 + 1 + 61.42 @@ -259,12 +259,12 @@

            app/models/research_briefing.rb - 100.00 % - 86 - 38 - 38 - 0 - 3.11 + 95.12 % + 93 + 41 + 39 + 2 + 2.90 @@ -495,7 +495,7 @@

            34 32 2 - 87.44 + 63.71 @@ -1992,8 +1992,8 @@

            -
          • - 104 +
          • + 1323 @@ -3271,7 +3271,7 @@

            - return if content_object_data['subject_sesrollup'].blank? + return if content_object_data['subject_ses'].blank?

          • @@ -3293,7 +3293,7 @@

            - content_object_data['subject_sesrollup'] + content_object_data['subject_ses']

            @@ -3348,7 +3348,7 @@

            - return if content_object_data['topic_sesrollup'].blank? + return if content_object_data['topic_ses'].blank?

            @@ -3370,7 +3370,7 @@

            - content_object_data['topic_sesrollup'] + content_object_data['topic_ses']

            @@ -3540,8 +3540,8 @@

            -
          • - 3 +
          • + 55 @@ -3562,8 +3562,8 @@

          • -
          • - 1 +
          • + 51 @@ -4528,7 +4528,7 @@

            app/models/edm.rb

            - 100.0% + 98.18% lines covered @@ -4537,9 +4537,9 @@

            - 40 relevant lines. - 40 lines covered and - 0 lines missed. + 55 relevant lines. + 54 lines covered and + 1 lines missed.
            @@ -4792,8 +4792,8 @@

          • -
          • - 61 +
          • + 189 @@ -4803,8 +4803,8 @@

          • -
          • - 16 +
          • + 56 @@ -4814,8 +4814,8 @@

          • -
          • - 16 +
          • + 56 @@ -4825,8 +4825,8 @@

          • -
          • - 16 +
          • + 56 @@ -4836,8 +4836,8 @@

          • -
          • - 16 +
          • + 56 @@ -4847,8 +4847,8 @@

          • -
          • - 16 +
          • + 56 @@ -4869,8 +4869,8 @@

          • -
          • - 16 +
          • + 56 @@ -4902,8 +4902,8 @@

          • -
          • - 13 +
          • + 49 @@ -4990,8 +4990,8 @@

          • -
          • - 13 +
          • + 49 @@ -5078,8 +5078,8 @@

          • -
          • - 13 +
          • + 49 @@ -5188,8 +5188,8 @@

          • -
          • - 13 +
          • + 49 @@ -5227,18 +5227,18 @@

            - def amendment_text + def amendments_count

          • -
          • - 3 +
          • + 110 - return if content_object_data['amendmentText_t'].blank? + return if amendments.blank?
          • @@ -5254,13 +5254,13 @@

            -
          • - 1 +
          • + 18 - content_object_data['amendmentText_t'] + amendments.size
          • @@ -5293,51 +5293,51 @@

            - def other_supporters + def withdrawn?

            -
          • - +
          • + 52 - # requires a SES lookup to fetch names + return false unless state == 'Withdrawn'
          • -
          • - 205 +
          • + - return if content_object_data['signedMember_ses'].blank? +
          • -
          • +
          • - + true
          • -
          • - 201 +
          • + - content_object_data['signedMember_ses'] + end
          • @@ -5348,40 +5348,40 @@

            - end +

            -
          • - +
          • + 1 - + def state
          • -
          • - 1 +
          • + - def motion_text + # e.g. 'Open'
          • -
          • - 105 +
          • + 52 - return if content_object_data['motionText_t'].blank? + return if content_object_data['edmStatus_t'].blank?
          • @@ -5397,13 +5397,13 @@

            -
          • - 101 +
          • + 50 - content_object_data['motionText_t'].first + content_object_data['edmStatus_t']
          • @@ -5436,18 +5436,18 @@

            - def primary_sponsor + def amendment_text

            -
          • - 105 +
          • + 3 - return if content_object_data['primarySponsorPrinted_s'].blank? + return if content_object_data['amendmentText_t'].blank?
          • @@ -5463,13 +5463,13 @@

            -
          • - 101 +
          • + 1 - content_object_data['primarySponsorPrinted_s'].first + content_object_data['amendmentText_t']
          • @@ -5502,23 +5502,34 @@

            - def date_tabled + def other_supporters

            -
          • - 56 +
          • + - return if content_object_data['dateTabled_dt'].blank? + # requires a SES lookup to fetch names
          • -
          • +
          • + 307 + + + + + return if content_object_data['signedMember_ses'].blank? +
          • +
            + +
            +
          • @@ -5529,18 +5540,18 @@

          • -
          • - 52 +
          • + 301 - content_object_data['dateTabled_dt'].first.to_date + content_object_data['signedMember_ses']
          • -
          • +
          • @@ -5551,7 +5562,7 @@

          • -
          • +
          • @@ -5562,29 +5573,29 @@

          • -
          • +
          • 1 - def bibliographic_citations + def number_of_signatures
          • -
          • - 3 +
          • + 52 - return if content_object_data['bibliographicCitation_s'].blank? + return if content_object_data['numberOfSignatures_t'].blank?
          • -
          • +
          • @@ -5595,18 +5606,18 @@

          • -
          • - 1 +
          • + 50 - content_object_data['bibliographicCitation_s'] + content_object_data['numberOfSignatures_t'].first
          • -
          • +
          • @@ -5617,7 +5628,7 @@

          • -
          • +
          • @@ -5628,29 +5639,29 @@

          • -
          • +
          • 1 - def external_location_uri + def motion_text
          • -
          • - 411 +
          • + 105 - return if content_object_data['externalLocation_uri'].blank? + return if content_object_data['motionText_t'].blank?
          • -
          • +
          • @@ -5661,18 +5672,18 @@

          • -
          • - 405 +
          • + 101 - content_object_data['externalLocation_uri'].first + content_object_data['motionText_t'].first
          • -
          • +
          • @@ -5683,168 +5694,128 @@

          • -
          • +
          • - end +
          • - - -
            - - -
            -
            -

            app/models/form.rb

            -

            - - 100.0% - - - lines covered -

            - - - -
            - 3 relevant lines. - 3 lines covered and - 0 lines missed. -
            - - +
            +
          • + 1 + -
          • + -
            -    
              + def primary_sponsor + +
            -
          • - 1 +
          • + 105 - class Form + return if content_object_data['primarySponsor_ses'].blank?
          • -
          • - 1 +
          • + - attr_accessor :title +
          • -
          • - 1 +
          • + 101 - attr_accessor :description + content_object_data['primarySponsor_ses'].first
          • -
          • +
          • - end + end
          • - - -
            - - -
            -
            -

            app/models/research_briefing.rb

            -

            - - 100.0% - - - lines covered -

            - - - -
            - 38 relevant lines. - 38 lines covered and - 0 lines missed. -
            - - +
            +
          • + + -
          • + -
            -    
              + + +
            -
          • +
          • 1 - class ResearchBriefing < ContentObject + def primary_sponsor_party
          • -
          • - +
          • + 52 - + return if content_object_data['primarySponsorParty_ses'].blank?
          • -
          • - 1 +
          • + - def initialize(content_object_data) +
          • -
          • +
          • 50 - super + content_object_data['primarySponsorParty_ses'].first
          • -
          • +
          • @@ -5855,7 +5826,7 @@

          • -
          • +
          • @@ -5866,19 +5837,389 @@

          • -
          • +
          • 1 - def template + def date_tabled
          • -
          • - 1 +
          • + 56 + + + + + return if content_object_data['dateTabled_dt'].blank? +
          • +
            + +
            +
          • + + + + + + +
          • +
            + +
            +
          • + 52 + + + + + content_object_data['dateTabled_dt'].first.to_date +
          • +
            + +
            +
          • + + + + + + end +
          • +
            + +
            +
          • + + + + + + +
          • +
            + +
            +
          • + 1 + + + + + def bibliographic_citations +
          • +
            + +
            +
          • + 3 + + + + + return if content_object_data['bibliographicCitation_s'].blank? +
          • +
            + +
            +
          • + + + + + + +
          • +
            + +
            +
          • + 1 + + + + + content_object_data['bibliographicCitation_s'] +
          • +
            + +
            +
          • + + + + + + end +
          • +
            + +
            +
          • + + + + + + +
          • +
            + +
            +
          • + 1 + + + + + def external_location_uri +
          • +
            + +
            +
          • + 411 + + + + + return if content_object_data['externalLocation_uri'].blank? +
          • +
            + +
            +
          • + + + + + + +
          • +
            + +
            +
          • + 405 + + + + + content_object_data['externalLocation_uri'].first +
          • +
            + +
            +
          • + + + + + + end +
          • +
            + +
            +
          • + + + + + + end +
          • +
            + + + +
            + + +
            +
            +

            app/models/form.rb

            +

            + + 100.0% + + + lines covered +

            + + + +
            + 3 relevant lines. + 3 lines covered and + 0 lines missed. +
            + + + +
            + +
            +    
              + +
              +
            1. + 1 + + + + + class Form +
            2. +
              + +
              +
            3. + 1 + + + + + attr_accessor :title +
            4. +
              + +
              +
            5. + 1 + + + + + attr_accessor :description +
            6. +
              + +
              +
            7. + + + + + + end +
            8. +
              + +
            +
            +
            + + +
            +
            +

            app/models/research_briefing.rb

            +

            + + 95.12% + + + lines covered +

            + + + +
            + 41 relevant lines. + 39 lines covered and + 2 lines missed. +
            + + + +
            + +
            +    
              + +
              +
            1. + 1 + + + + + class ResearchBriefing < ContentObject +
            2. +
              + +
              +
            3. + + + + + + +
            4. +
              + +
              +
            5. + 1 + + + + + def initialize(content_object_data) +
            6. +
              + +
              +
            7. + 50 + + + + + super +
            8. +
              + +
              +
            9. + + + + + + end +
            10. +
              + +
              +
            11. + + + + + + +
            12. +
              + +
              +
            13. + 1 + + + + + def template +
            14. +
              + +
              +
            15. + 1 @@ -6097,7 +6438,29 @@

            16. -
            17. +
            18. + 1 + + + + + def creator_party +
            19. +
              + +
              +
            20. + + + + + + # this is for the prelim 'by...' +
            21. +
              + +
              +
            22. @@ -6108,7 +6471,62 @@

            23. -
            24. +
            25. + + + + + + return if content_object_data['creatorParty_ses'].blank? +
            26. +
              + +
              +
            27. + + + + + + +
            28. +
              + +
              +
            29. + + + + + + content_object_data['creatorParty_ses'].first +
            30. +
              + +
              +
            31. + + + + + + end +
            32. +
              + +
              +
            33. + + + + + + +
            34. +
              + +
              +
            35. 1 @@ -6119,7 +6537,7 @@

            36. -
            37. +
            38. @@ -6130,7 +6548,7 @@

            39. -
            40. +
            41. @@ -6141,7 +6559,7 @@

            42. -
            43. +
            44. @@ -6152,7 +6570,7 @@

            45. -
            46. +
            47. 3 @@ -6163,7 +6581,7 @@

            48. -
            49. +
            50. @@ -6174,7 +6592,7 @@

            51. -
            52. +
            53. 1 @@ -6185,7 +6603,7 @@

            54. -
            55. +
            56. @@ -6196,7 +6614,7 @@

            57. -
            58. +
            59. @@ -6207,7 +6625,7 @@

            60. -
            61. +
            62. 1 @@ -6218,7 +6636,7 @@

            63. -
            64. +
            65. @@ -6229,7 +6647,7 @@

            66. -
            67. +
            68. @@ -6240,7 +6658,7 @@

            69. -
            70. +
            71. @@ -6251,7 +6669,7 @@

            72. -
            73. +
            74. 6 @@ -6262,7 +6680,7 @@

            75. -
            76. +
            77. @@ -6273,7 +6691,7 @@

            78. -
            79. +
            80. 3 @@ -6284,7 +6702,7 @@

            81. -
            82. +
            83. @@ -6295,7 +6713,7 @@

            84. -
            85. +
            86. @@ -6306,7 +6724,7 @@

            87. -
            88. +
            89. 1 @@ -6317,7 +6735,7 @@

            90. -
            91. +
            92. 4 @@ -6328,7 +6746,7 @@

            93. -
            94. +
            95. @@ -6339,7 +6757,7 @@

            96. -
            97. +
            98. 2 @@ -6350,7 +6768,7 @@

            99. -
            100. +
            101. @@ -6361,7 +6779,7 @@

            102. -
            103. +
            104. 1 @@ -6372,7 +6790,7 @@

            105. -
            106. +
            107. @@ -6383,7 +6801,7 @@

            108. -
            109. +
            110. @@ -6394,7 +6812,7 @@

            111. -
            112. +
            113. 1 @@ -6405,7 +6823,7 @@

            114. -
            115. +
            116. 4 @@ -6416,7 +6834,7 @@

            117. -
            118. +
            119. @@ -6427,7 +6845,7 @@

            120. -
            121. +
            122. 2 @@ -6438,7 +6856,7 @@

            123. -
            124. +
            125. 2 @@ -6449,7 +6867,7 @@

            126. -
            127. +
            128. @@ -6460,7 +6878,7 @@

            129. -
            130. +
            131. 1 @@ -6471,7 +6889,7 @@

            132. -
            133. +
            134. @@ -6482,7 +6900,7 @@

            135. -
            136. +
            137. @@ -6493,7 +6911,7 @@

            138. -
            139. +
            140. 1 @@ -6504,7 +6922,7 @@

            141. -
            142. +
            143. @@ -6515,7 +6933,7 @@

            144. -
            145. +
            146. @@ -6526,7 +6944,7 @@

            147. -
            148. +
            149. 2 @@ -6537,7 +6955,7 @@

            150. -
            151. +
            152. @@ -6548,7 +6966,7 @@

            153. -
            154. +
            155. 1 @@ -6559,7 +6977,7 @@

            156. -
            157. +
            158. @@ -6570,7 +6988,7 @@

            159. -
            160. +
            161. @@ -6581,7 +6999,7 @@

            162. -
            163. +
            164. 1 @@ -6592,7 +7010,7 @@

            165. -
            166. +
            167. 4 @@ -6603,7 +7021,7 @@

            168. -
            169. +
            170. @@ -6614,7 +7032,7 @@

            171. -
            172. +
            173. 2 @@ -6625,7 +7043,7 @@

            174. -
            175. +
            176. 2 @@ -6636,7 +7054,7 @@

            177. -
            178. +
            179. @@ -6647,7 +7065,7 @@

            180. -
            181. +
            182. 1 @@ -6658,7 +7076,7 @@

            183. -
            184. +
            185. @@ -6669,7 +7087,7 @@

            186. -
            187. +
            188. @@ -6680,7 +7098,7 @@

            189. -
            190. +
            191. 1 @@ -6691,7 +7109,7 @@

            192. -
            193. +
            194. @@ -6702,7 +7120,7 @@

            195. -
            196. +
            197. @@ -6713,7 +7131,7 @@

            198. -
            199. +
            200. 4 @@ -6724,7 +7142,7 @@

            201. -
            202. +
            203. @@ -6735,7 +7153,7 @@

            204. -
            205. +
            206. @@ -13804,7 +14222,7 @@

              - let!(:edm) { Edm.new({ 'primarySponsorPrinted_s' => ['first item', 'second item'] }) } + let!(:edm) { Edm.new({ 'primarySponsor_ses' => [12345, 67890] }) }

            207. @@ -13837,7 +14255,7 @@

              - expect(edm.primary_sponsor).to eq('first item') + expect(edm.primary_sponsor).to eq(12345)

            @@ -15685,7 +16103,7 @@

            - let!(:edm) { Edm.new({ 'subject_sesrollup' => [] }) } + let!(:edm) { Edm.new({ 'subject_ses' => [] }) } @@ -15762,7 +16180,7 @@

            - let!(:edm) { Edm.new({ 'subject_sesrollup' => ['first item', 'second item'] }) } + let!(:edm) { Edm.new({ 'subject_ses' => ['first item', 'second item'] }) } @@ -20446,7 +20864,7 @@

            - let!(:research_briefing) { ResearchBriefing.new({ 'subject_sesrollup' => [] }) } + let!(:research_briefing) { ResearchBriefing.new({ 'subject_ses' => [] }) } @@ -20523,7 +20941,7 @@

            - let!(:research_briefing) { ResearchBriefing.new({ 'subject_sesrollup' => ['first item', 'second item'] }) } + let!(:research_briefing) { ResearchBriefing.new({ 'subject_ses' => ['first item', 'second item'] }) } @@ -30217,7 +30635,7 @@

            - expect(CGI::unescapeHTML(response.body)).to include(edm_instance.primary_sponsor) + expect(CGI::unescapeHTML(response.body)).to include(edm_instance.primary_sponsor.to_s) @@ -30332,8 +30750,8 @@

            -
          • - 950 +
          • + 143 diff --git a/spec/models/edm_spec.rb b/spec/models/edm_spec.rb index f6e6e1e2..436d6b3b 100644 --- a/spec/models/edm_spec.rb +++ b/spec/models/edm_spec.rb @@ -47,10 +47,10 @@ end context 'where data exists' do - let!(:edm) { Edm.new({ 'primarySponsorPrinted_s' => ['first item', 'second item'] }) } + let!(:edm) { Edm.new({ 'primarySponsor_ses' => [12345, 67890] }) } it 'returns the first item' do - expect(edm.primary_sponsor).to eq('first item') + expect(edm.primary_sponsor).to eq(12345) end end end @@ -218,14 +218,14 @@ end context 'where there is an empty array' do - let!(:edm) { Edm.new({ 'subject_sesrollup' => [] }) } + let!(:edm) { Edm.new({ 'subject_ses' => [] }) } it 'returns nil' do expect(edm.subjects).to be_nil end end context 'where data exists' do - let!(:edm) { Edm.new({ 'subject_sesrollup' => ['first item', 'second item'] }) } + let!(:edm) { Edm.new({ 'subject_ses' => ['first item', 'second item'] }) } it 'returns all items as an array' do expect(edm.subjects).to eq(['first item', 'second item']) diff --git a/spec/models/research_briefing_spec.rb b/spec/models/research_briefing_spec.rb index 6f458885..ece8073f 100644 --- a/spec/models/research_briefing_spec.rb +++ b/spec/models/research_briefing_spec.rb @@ -258,14 +258,14 @@ end context 'where there is an empty array' do - let!(:research_briefing) { ResearchBriefing.new({ 'subject_sesrollup' => [] }) } + let!(:research_briefing) { ResearchBriefing.new({ 'subject_ses' => [] }) } it 'returns nil' do expect(research_briefing.subjects).to be_nil end end context 'where data exists' do - let!(:research_briefing) { ResearchBriefing.new({ 'subject_sesrollup' => ['first item', 'second item'] }) } + let!(:research_briefing) { ResearchBriefing.new({ 'subject_ses' => ['first item', 'second item'] }) } it 'returns all items as an array' do expect(research_briefing.subjects).to eq(['first item', 'second item']) diff --git a/spec/requests/edm_spec.rb b/spec/requests/edm_spec.rb index fe92f5f1..ab9b1a09 100644 --- a/spec/requests/edm_spec.rb +++ b/spec/requests/edm_spec.rb @@ -29,7 +29,7 @@ expect(CGI::unescapeHTML(response.body)).to include(edm_instance.reference) expect(CGI::unescapeHTML(response.body)).to include(edm_instance.session) expect(CGI::unescapeHTML(response.body)).to include(edm_instance.motion_text) - expect(CGI::unescapeHTML(response.body)).to include(edm_instance.primary_sponsor) + expect(CGI::unescapeHTML(response.body)).to include(edm_instance.primary_sponsor.to_s) expect(CGI::unescapeHTML(response.body)).to include(edm_instance.display_link) unless edm_instance.other_supporters.blank?