metadata_presenter 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50e72c6d7db805dc3c408e5be910e7e8622984d6dafe879bdd488857f9ae4d44
4
- data.tar.gz: 61a5d6f5430a9cf8ae6b5a0d9c6ae03f2869c59e96e70919541e031944d7b99f
3
+ metadata.gz: aaea9e08a797416b551fd731c80db49d05f02f75f4ac61ecf68c5861d55af9a3
4
+ data.tar.gz: e3938447849a5197cc3567c55caacdf0eea2e80e1e4eb05b42e175850d9b34cd
5
5
  SHA512:
6
- metadata.gz: 83993ca5083a0c54693f7c46d14561c897c881fe9461c5ccef1881726d9e46f9f5ca69abb8faf8d619fa5ca9fcef46dee8b096b1dda30468a86a8c9a876e1350
7
- data.tar.gz: ac17522430316217e5bf6c430b326dae237d60f759d6e25125fa701a265e97082238492b47cb0948fe703da6ed35fc5e5da1f54a11bbc2abd17d535001172258
6
+ metadata.gz: 4f9ac675b0c24ca6ea9a1a9556b13a1151d499750e8aa16d3fbfc5981ac2a93cb99acc03939a188886eaf1254930bcdc1634fd44461b4345ec029a0243bd4d73
7
+ data.tar.gz: bf12bf7eefe0f0376fe67801fa74507d0a8267c08106b8c0198023f09999a093090127d4f6b3e8360d2e570cc90a49a36f4263ed77b63dc2e56587ad605a95fd
@@ -27,6 +27,8 @@ module MetadataPresenter
27
27
  date_answer(component.id)
28
28
  elsif component && component.type == 'upload'
29
29
  upload_answer(component.id)
30
+ elsif component && component.type == 'checkboxes'
31
+ answers[method_name.to_s].to_a
30
32
  else
31
33
  answers[method_name.to_s]
32
34
  end
@@ -6,5 +6,15 @@ module MetadataPresenter
6
6
  @actual = actual
7
7
  @expected = expected
8
8
  end
9
+
10
+ def evaluate?
11
+ raise NotImplementedError
12
+ end
13
+
14
+ # Method signature for collection components (a.k.a checkboxes)
15
+ #
16
+ def evaluate_collection?
17
+ evaluate?
18
+ end
9
19
  end
10
20
  end
@@ -3,5 +3,9 @@ module MetadataPresenter
3
3
  def evaluate?
4
4
  @actual != @expected
5
5
  end
6
+
7
+ def evaluate_collection?
8
+ Array(@expected).exclude?(@actual)
9
+ end
6
10
  end
7
11
  end
@@ -3,5 +3,9 @@ module MetadataPresenter
3
3
  def evaluate?
4
4
  @actual == @expected
5
5
  end
6
+
7
+ def evaluate_collection?
8
+ Array(@expected).include?(@actual)
9
+ end
6
10
  end
7
11
  end
@@ -10,10 +10,13 @@ module MetadataPresenter
10
10
  end
11
11
 
12
12
  def evaluate(actual, expected)
13
- klass
14
- .constantize
15
- .new(actual, expected)
16
- .evaluate?
13
+ operator = klass.constantize.new(actual, expected)
14
+
15
+ if expected.is_a?(Array)
16
+ operator.evaluate_collection?
17
+ else
18
+ operator.evaluate?
19
+ end
17
20
  rescue NameError
18
21
  raise NoOperator,
19
22
  "Operator '#{operator}' is not implemented. You need to create the class #{klass}"
@@ -137,7 +137,7 @@
137
137
  "cf8b3e18-dacf-4e91-92e1-018035961003": {
138
138
  "_type": "branch",
139
139
  "next": {
140
- "default": "e337070b-f636-49a3-a65c-f506675265f0",
140
+ "default": "0c022e95-0748-4dda-8ba5-12fd1d2f596b",
141
141
  "conditions": [
142
142
  {
143
143
  "condition_type": "if",
@@ -154,6 +154,62 @@
154
154
  ]
155
155
  }
156
156
  },
157
+ "b5efc09c-ece7-45ae-b0b3-8a7905e25040": {
158
+ "_type": "page",
159
+ "next": {
160
+ "default": "0c022e95-0748-4dda-8ba5-12fd1d2f596b"
161
+ }
162
+ },
163
+ "0c022e95-0748-4dda-8ba5-12fd1d2f596b": {
164
+ "_type": "page",
165
+ "next": {
166
+ "default": "618b7537-b42b-4551-ae7d-053afa4d9ca9"
167
+ }
168
+ },
169
+ "618b7537-b42b-4551-ae7d-053afa4d9ca9": {
170
+ "_type": "branch",
171
+ "next": {
172
+ "default": "e337070b-f636-49a3-a65c-f506675265f0",
173
+ "conditions": [
174
+ {
175
+ "condition_type": "if",
176
+ "next": "bc666714-c0a2-4674-afe5-faff2e20d847",
177
+ "criterias": [
178
+ {
179
+ "operator": "is",
180
+ "page": "0c022e95-0748-4dda-8ba5-12fd1d2f596b",
181
+ "component": "4c409737-80bb-48c7-afa7-6e9360b65004",
182
+ "field": "3251098f-c8e0-4ac5-a637-95fd2e1c4dc4"
183
+ }
184
+ ]
185
+ },
186
+ {
187
+ "condition_type": "if",
188
+ "next": "e2887f44-5e8d-4dc0-b1de-496ab6039430",
189
+ "criterias": [
190
+ {
191
+ "operator": "is_not",
192
+ "page": "0c022e95-0748-4dda-8ba5-12fd1d2f596b",
193
+ "component": "4c409737-80bb-48c7-afa7-6e9360b65004",
194
+ "field": "3251098f-c8e0-4ac5-a637-95fd2e1c4dc4"
195
+ }
196
+ ]
197
+ }
198
+ ]
199
+ }
200
+ },
201
+ "bc666714-c0a2-4674-afe5-faff2e20d847": {
202
+ "_type": "page",
203
+ "next": {
204
+ "default": "e337070b-f636-49a3-a65c-f506675265f0"
205
+ }
206
+ },
207
+ "e2887f44-5e8d-4dc0-b1de-496ab6039430": {
208
+ "_type": "page",
209
+ "next": {
210
+ "default": "e337070b-f636-49a3-a65c-f506675265f0"
211
+ }
212
+ },
157
213
  "e337070b-f636-49a3-a65c-f506675265f0": {
158
214
  "_type": "page",
159
215
  "next": {
@@ -608,6 +664,115 @@
608
664
  }
609
665
  ]
610
666
  },
667
+ {
668
+ "_id": "page.burgers",
669
+ "url": "burgers",
670
+ "body": "Body section",
671
+ "lede": "",
672
+ "_type": "page.singlequestion",
673
+ "_uuid": "0c022e95-0748-4dda-8ba5-12fd1d2f596b",
674
+ "heading": "Question",
675
+ "components": [
676
+ {
677
+ "_id": "burgers_checkboxes_1",
678
+ "hint": "",
679
+ "name": "burgers_checkboxes_1",
680
+ "_type": "checkboxes",
681
+ "_uuid": "4c409737-80bb-48c7-afa7-6e9360b65004",
682
+ "items": [
683
+ {
684
+ "_id": "burgers_checkboxes_1_item_1",
685
+ "hint": "",
686
+ "name": "burgers_checkboxes_1",
687
+ "_type": "checkbox",
688
+ "_uuid": "3251098f-c8e0-4ac5-a637-95fd2e1c4dc4",
689
+ "label": "Beef, cheese, tomato",
690
+ "value": "value-1",
691
+ "errors": {},
692
+ "legend": "Question",
693
+ "collection": "components",
694
+ "validation": {
695
+ "required": true
696
+ }
697
+ },
698
+ {
699
+ "_id": "burgers_checkboxes_1_item_2",
700
+ "hint": "",
701
+ "name": "burgers_checkboxes_1",
702
+ "_type": "checkbox",
703
+ "_uuid": "a0717bbd-0b9f-47a0-bf2b-2a9d208e1168",
704
+ "label": "Chicken, cheese, tomato",
705
+ "value": "value-2",
706
+ "errors": {},
707
+ "legend": "Question",
708
+ "collection": "components",
709
+ "validation": {
710
+ "required": true
711
+ }
712
+ },
713
+ {
714
+ "_id": "burgers_checkboxes_1_item_3",
715
+ "hint": "",
716
+ "name": "burgers_checkboxes_1",
717
+ "_type": "checkbox",
718
+ "_uuid": "4c409737-80bb-48c7-afa7-6e9360b65004",
719
+ "label": "Mozzarella, cheddar, feta",
720
+ "value": "value-3",
721
+ "errors": {},
722
+ "legend": "Question",
723
+ "collection": "components",
724
+ "validation": {
725
+ "required": true
726
+ }
727
+ }
728
+ ],
729
+ "errors": {},
730
+ "legend": "What would you like on your burger?",
731
+ "collection": "components",
732
+ "validation": {
733
+ "required": false
734
+ }
735
+ }
736
+ ]
737
+ },
738
+ {
739
+ "_id": "page.global-warming",
740
+ "url": "global-warming",
741
+ "body": "What about the trees?",
742
+ "lede": "",
743
+ "_type": "page.content",
744
+ "_uuid": "bc666714-c0a2-4674-afe5-faff2e20d847",
745
+ "heading": "Global warming",
746
+ "components": [
747
+ {
748
+ "_id": "global-warming_content_1",
749
+ "name": "global-warming_content_1",
750
+ "_type": "content",
751
+ "_uuid": "957917c3-7473-4c30-b713-5aae77a1c22f",
752
+ "content": "They will come for you"
753
+ }
754
+ ],
755
+ "section_heading": ""
756
+ },
757
+ {
758
+ "_id": "page.we-love-chickens",
759
+ "url": "we-love-chickens",
760
+ "body": "Cluck cluck",
761
+ "lede": "",
762
+ "_type": "page.content",
763
+ "_uuid": "e2887f44-5e8d-4dc0-b1de-496ab6039430",
764
+ "heading": "We love chickens",
765
+ "components": [
766
+ {
767
+ "_id": "global-warming_content_1",
768
+ "name": "global-warming_content_1",
769
+ "_type": "content",
770
+ "_uuid": "49ff5c79-2e63-45fe-bbf7-de0bd061b909",
771
+ "content": "Cruella ain't got nothing on Cluckeralla"
772
+ }
773
+ ],
774
+ "section_heading": ""
775
+ },
611
776
  {
612
777
  "_id": "page.check-answers",
613
778
  "url": "check-answers",
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '1.4.0'.freeze
2
+ VERSION = '1.5.0'.freeze
3
3
  end
@@ -1,4 +1,52 @@
1
- # desc "Explaining what the task does"
2
- # task :metadata_presenter do
3
- # # Task goes here
4
- # end
1
+ require 'metadata_presenter/test_helpers'
2
+
3
+ namespace :metadata do
4
+ include MetadataPresenter::TestHelpers
5
+
6
+ desc 'Represent the flow objects in human readable form'
7
+ task flow: :environment do
8
+ service = MetadataPresenter::Service.new(metadata_fixture('branching'))
9
+
10
+ start_page = service.start_page
11
+ flow = service.flow(start_page.uuid)
12
+ first_page = service.find_page_by_uuid(flow.default_next)
13
+
14
+ humanized_flow = {}
15
+
16
+ humanized_flow[start_page.url] = {
17
+ next: first_page.url
18
+ }
19
+
20
+ service.metadata['flow'].each do |id, _metadata|
21
+ flow = service.flow(id)
22
+
23
+ if flow.branch?
24
+ page = service.find_page_by_uuid(flow.default_next)
25
+ humanized_flow[page.url] = {
26
+ conditions: flow.conditions.map do |condition|
27
+ {
28
+ condition_type: condition.condition_type,
29
+ criterias: condition.criterias.map do |criteria|
30
+ criteria.service = service
31
+ {
32
+ operator: criteria.operator,
33
+ page: criteria.criteria_page.url,
34
+ component: criteria.criteria_component.humanised_title,
35
+ field: criteria.field_label
36
+ }
37
+ end
38
+ }
39
+ end
40
+ }
41
+ else
42
+ page = service.find_page_by_uuid(id)
43
+ next_page = service.find_page_by_uuid(flow.default_next)
44
+ if next_page
45
+ humanized_flow[page.url] = { next: next_page.url }
46
+ end
47
+ end
48
+ end
49
+
50
+ pp humanized_flow
51
+ end
52
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Online
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-25 00:00:00.000000000 Z
11
+ date: 2021-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder