Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions printingpress/mock_limits_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -256,14 +256,14 @@ func TestGenerateMockWrappers(t *testing.T) {
assert.NotEmpty(t, pp.generateMockAsWithLabel(mockable, "json", "mockable"))
assert.NotEmpty(t, pp.generateMockAsWithLabel(schema, "json", "schema"))
assert.NotEmpty(t, pp.generateMockAsWithLabel(mockable, "yaml", "mockable"))
assert.NotEmpty(t, pp.generateMockAsWithLabel(mockable, "xml", "mockable"))
assert.NotEmpty(t, pp.generateSchemaMockAs(schema, "json"))
assert.NotEmpty(t, pp.generateSchemaMockAsWithLabel(schema, "yaml", "schema"))
assert.NotEmpty(t, pp.generateSchemaMockAsWithLabel(schema, "xml", "schema"))
assert.Empty(t, pp.generateSchemaMockAsWithLabel(schemaWithNilExample, "json", "schema"))
assert.Empty(t, pp.generateMockWithLabel(&struct{}{}, "bad-mockable"))
assert.Empty(t, pp.generateMockAsWithLabel(&struct{}{}, "json", "bad-mockable"))
assert.Empty(t, pp.generateMockAsWithLabel(mockable, "xml", "mockable"))
assert.Empty(t, pp.generateSchemaMockAs(nil, "json"))
assert.Empty(t, pp.generateSchemaMockAsWithLabel(schema, "xml", "schema"))
}

func TestSafeGenerateMock_EdgeCases(t *testing.T) {
Expand Down
10 changes: 5 additions & 5 deletions printingpress/press.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,16 +146,16 @@ func (pp *PrintingPress) initEngine(config *pressEngineConfig) {
mgYAML.SetPretty()
mgYAML.DisableRequiredCheck()

// TODO: XML mock generator awaiting renderer.XML support in libopenapi
// mgXML := renderer.NewMockGenerator(renderer.XML)
// mgXML.SetPretty()
// mgXML.DisableRequiredCheck()
mgXML := renderer.NewMockGenerator(renderer.XML)
applyMockGenerationLimits(mgXML, limits)
mgXML.SetPretty()
mgXML.DisableRequiredCheck()

pp.engineConfig = config
pp.slugs = slugpkg.NewSlugRegistry()
pp.mockGen = mg
pp.mockGenYAML = mgYAML
pp.mockGenXML = nil
pp.mockGenXML = mgXML
pp.rawArtifacts = newRawArtifactCache()
pp.schemaArtifacts = newSchemaArtifactCache()
pp.site = &Site{
Expand Down
52 changes: 52 additions & 0 deletions printingpress/serializer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,58 @@ func TestMockLanguageForMediaType(t *testing.T) {
}
}

func TestCollectMediaType_GeneratesXMLMock(t *testing.T) {
spec := `openapi: "3.1.0"
info:
title: Test
version: "1.0"
paths:
/bookings:
post:
requestBody:
content:
application/xml:
schema:
$ref: '#/components/schemas/Booking'
responses:
'200':
description: ok
components:
schemas:
Booking:
type: object
xml:
name: booking
properties:
id:
type: string
example: booking-123
passenger_name:
type: string
example: John Doe
`
doc, err := libopenapi.NewDocument([]byte(spec))
require.NoError(t, err)
v3Doc, buildErr := doc.BuildV3Model()
require.NoError(t, buildErr)
drDoc := model.NewDrDocument(v3Doc)
pp := newPressEngine(&pressEngineConfig{DrDoc: drDoc})

pathItem := drDoc.V3Document.Paths.PathItems.GetOrZero("/bookings")
require.NotNil(t, pathItem)
require.NotNil(t, pathItem.Post)
require.NotNil(t, pathItem.Post.RequestBody)
content := pathItem.Post.RequestBody.Content.GetOrZero("application/xml")
require.NotNil(t, content)

mediaType := pp.collectMediaType("application/xml", content)
require.NotNil(t, mediaType)
require.NotEmpty(t, mediaType.MockXML)
assert.Contains(t, mediaType.MockXML, "<booking>")
assert.Contains(t, mediaType.MockXML, "<id>booking-123</id>")
assert.Contains(t, mediaType.MockXML, "<passenger_name>John Doe</passenger_name>")
}

func TestCaptureSchemaArtifacts_CachesJSONAndHighlight(t *testing.T) {
spec := `openapi: "3.1.0"
info:
Expand Down
6 changes: 5 additions & 1 deletion printingpress/static/printing-press-lite.js
Original file line number Diff line number Diff line change
Expand Up @@ -7483,7 +7483,11 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
display: flex;
align-items: center;
gap: var(--global-padding-double);
padding: 0 0 var(--global-padding);
padding: var(--global-padding-double) 0 var(--global-padding);
}

.media-type-ref sl-dropdown {
margin-top: 0;
}

.media-type-label {
Expand Down
5 changes: 4 additions & 1 deletion printingpress/static/printing-press.css
Original file line number Diff line number Diff line change
Expand Up @@ -1068,7 +1068,9 @@ li {
margin-bottom: 2rem;
}

.pp-model-card {
.pp-model-card,
.pp-model-card:visited,
.pp-model-card:active {
display: flex;
flex-direction: column;
min-width: 0;
Expand All @@ -1095,6 +1097,7 @@ li {

.pp-model-card strong {
display: block;
color: var(--primary-color);
min-width: 0;
line-height: 1.25;
overflow-wrap: anywhere;
Expand Down
6 changes: 5 additions & 1 deletion printingpress/static/printing-press.js
Original file line number Diff line number Diff line change
Expand Up @@ -7483,7 +7483,11 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
display: flex;
align-items: center;
gap: var(--global-padding-double);
padding: 0 0 var(--global-padding);
padding: var(--global-padding-double) 0 var(--global-padding);
}

.media-type-ref sl-dropdown {
margin-top: 0;
}

.media-type-label {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ export default [dropdownCss, css`
display: flex;
align-items: center;
gap: var(--global-padding-double);
padding: 0 0 var(--global-padding);
padding: var(--global-padding-double) 0 var(--global-padding);
}

.media-type-ref sl-dropdown {
margin-top: 0;
}

.media-type-label {
Expand Down
Loading