Skip to content

Commit e3dc6b1

Browse files
committed
Support for schemas with enums
If a schema provides an list of enum values, generate them as a (sorted) list
1 parent 52d890b commit e3dc6b1

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

lib/govuk_tech_docs/api_reference/templates/schema.html.erb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,11 @@
2727
</tbody>
2828
</table>
2929
<% end %>
30+
<% if schema.enum %>
31+
<p>This schema can be any one of the following <%= schema.type.pluralize %>:</p>
32+
<ul class='<%= id.parameterize %>-enum'>
33+
<% schema.enum.sort.each do |value| %>
34+
<li><%= value %></li>
35+
<% end %>
36+
</ul>
37+
<% end %>

spec/api_reference/renderer_spec.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,26 @@
100100
expect(rendered).to have_css("h3#schema-pet", text: "Pet")
101101
expect(rendered).to have_css("table.schema-pet", text: "id")
102102
end
103+
104+
it "renders an enum schema" do
105+
@spec["components"] = {
106+
"schemas": {
107+
"Pet": {
108+
"type": "string",
109+
"enum": %w[pending available sold],
110+
},
111+
},
112+
}
113+
document = Openapi3Parser.load(@spec)
114+
115+
render = described_class.new(@app, document)
116+
rendered = render.api_full(document.info, document.servers)
117+
118+
rendered = Capybara::Node::Simple.new(rendered)
119+
expect(rendered).to have_css("h3#schema-pet", text: "Pet")
120+
expect(rendered).to have_css(".schema-pet-enum", text: "pending")
121+
expect(rendered).to have_css(".schema-pet-enum", text: "available")
122+
expect(rendered).to have_css(".schema-pet-enum", text: "sold")
123+
end
103124
end
104125
end

0 commit comments

Comments
 (0)