govuk-content-schema-test-helpers 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +36 -0
- data/lib/govuk-content-schema-test-helpers/examples.rb +18 -5
- data/lib/govuk-content-schema-test-helpers/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a67072ac7856ffad37516d5260a262d4df89f4f7
|
4
|
+
data.tar.gz: 154ca00506f3cdf9516904de41f7e2f7fab8bdf1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f5b0a0f56380d258d247d574c6a69333a6f88611df0682010cf5f044cd1ed86e3b596ac57db77c6977219446fdec2e3e744440413c08854f1f19318d2e5c82c
|
7
|
+
data.tar.gz: 1df29e2bbb33772e624b5ecede8a97c80766e17b41956b3384fc6fa8c1c011a2e7a925a619f4f5791f625d5bbeabf32ec3c8307abf82f38c898cb1df42e56627
|
data/README.md
CHANGED
@@ -41,6 +41,42 @@ If you are not using Rails, you'll need to set `project_root` differently. Assum
|
|
41
41
|
# => '{ "some": "json" }'
|
42
42
|
```
|
43
43
|
|
44
|
+
#### Loading all examples for a given format
|
45
|
+
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
GovukContentSchemaTestHelpers::Examples.new.get_all_for_format('case_study')
|
49
|
+
# => ['{ "first": "example"}', '{ "second": "example" }']
|
50
|
+
```
|
51
|
+
|
52
|
+
This would be useful for checking your app can handle all examples and any that come into existence later:
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
def supported_formats
|
56
|
+
%w{
|
57
|
+
case_study
|
58
|
+
coming_soon
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
def all_examples_for_supported_formats
|
63
|
+
GovukContentSchemaTestHelpers::Examples.new.get_all_for_formats(supported_formats)
|
64
|
+
end
|
65
|
+
|
66
|
+
# In an ActionDispatch::IntegrationTest, for example:
|
67
|
+
test 'that we can handle every example of the formats we support'
|
68
|
+
all_examples_for_supported_formats.each do |example|
|
69
|
+
content_item = JSON.parse(example)
|
70
|
+
content_store_has_item(content_item['base_path'], content_item)
|
71
|
+
|
72
|
+
get content_item['base_path']
|
73
|
+
assert_response 200
|
74
|
+
assert_select 'title', content_item['title']
|
75
|
+
end
|
76
|
+
end
|
77
|
+
```
|
78
|
+
|
79
|
+
|
44
80
|
#### RSpec matcher
|
45
81
|
|
46
82
|
To use the built-in RSpec matcher, add this to spec_helper.rb:
|
@@ -4,22 +4,35 @@ module GovukContentSchemaTestHelpers
|
|
4
4
|
Util.check_govuk_content_schemas_path!
|
5
5
|
end
|
6
6
|
|
7
|
-
def get(
|
8
|
-
path = example_path(
|
7
|
+
def get(format, example_name)
|
8
|
+
path = example_path(format, example_name)
|
9
9
|
check_example_file_exists!(path)
|
10
10
|
File.read(path)
|
11
11
|
end
|
12
12
|
|
13
|
+
def get_all_for_format(schema_name)
|
14
|
+
glob_path = example_path(schema_name, '*')
|
15
|
+
Dir.glob(glob_path).map do |path|
|
16
|
+
File.read(path)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_all_for_formats(schema_names)
|
21
|
+
schema_names.inject([]) do |memo, schema_name|
|
22
|
+
memo + get_all_for_format(schema_name)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
13
26
|
def check_example_file_exists!(path)
|
14
27
|
if !File.exists?(path)
|
15
|
-
raise ImproperlyConfiguredError, "
|
28
|
+
raise ImproperlyConfiguredError, "Example file not found: #{path}."
|
16
29
|
end
|
17
30
|
end
|
18
31
|
|
19
32
|
private
|
20
|
-
def example_path(
|
33
|
+
def example_path(format, example_name)
|
21
34
|
schema_type = GovukContentSchemaTestHelpers.configuration.schema_type
|
22
|
-
File.join(Util.govuk_content_schemas_path, "/formats/#{
|
35
|
+
File.join(Util.govuk_content_schemas_path, "/formats/#{format}/#{schema_type}/examples/#{example_name}.json").to_s
|
23
36
|
end
|
24
37
|
end
|
25
38
|
end
|