Skip to content

Commit

Permalink
Prevents default values from being overwritten by schema default valu…
Browse files Browse the repository at this point in the history
…es and adds documentation from API explorers. Resolves domaindrivendev#1133. Resolves domaindrivendev#1101.
  • Loading branch information
commonsensesoftware committed Jul 13, 2017
1 parent 7893ff2 commit a400089
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 2 deletions.
6 changes: 5 additions & 1 deletion Swashbuckle.Core/Swagger/SwaggerGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -188,14 +188,18 @@ private Parameter CreateParameter(string location, ApiParameterDescription param
}

parameter.required = location == "path" || !paramDesc.ParameterDescriptor.IsOptional;
parameter.@default = paramDesc.ParameterDescriptor.DefaultValue;
parameter.description = paramDesc.Documentation;

var schema = schemaRegistry.GetOrRegister(paramDesc.ParameterDescriptor.ParameterType);

if (parameter.@in == "body")
parameter.schema = schema;
else
parameter.PopulateFrom(schema);

if (paramDesc.ParameterDescriptor.DefaultValue != null)
parameter.@default = paramDesc.ParameterDescriptor.DefaultValue;

return parameter;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,14 @@ private static void ApplyParamComments(Operation operation, XPathNavigator metho
if (actionParameter == null) continue;

var paramNode = methodNode.SelectSingleNode(string.Format(ParamXPath, actionParameter.Name));

if (paramNode != null)
parameter.description = paramNode.ExtractContent();
{
var description = paramNode.ExtractContent();

if (!string.IsNullOrEmpty(description))
parameter.description = description;
}
}
}

Expand Down
7 changes: 7 additions & 0 deletions Swashbuckle.Dummy.Core/Controllers/XmlAnnotatedController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,13 @@ public void UpdateMetadata(int id, KeyValuePair<string, string>[] metadata)
{
throw new NotImplementedException();
}

[HttpGet]
[Route("GetById")]
public void GetById(string id = "123456")
{
throw new NotImplementedException();
}
}

public class Page
Expand Down
15 changes: 15 additions & 0 deletions Swashbuckle.Tests/Swagger/XmlCommentsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,21 @@ public void It_does_not_clear_previously_added_responses()
Assert.IsNotNull(responsesProperty["500"]);
}

[Test]
public void It_documents_schema_default_parameters()
{
var swagger = GetContent<JObject>( "http://tempuri.org/swagger/docs/v1" );

var parameters = swagger["paths"]["/xmlannotated/GetById"]["get"]["parameters"];
Assert.IsNotNull( parameters );

Assert.IsNotNull( parameters.First["required"] );
Assert.AreEqual( "False", parameters.First["required"].ToString() );

Assert.IsNotNull( parameters.First["default"] );
Assert.AreEqual( "123456", parameters.First["default"].ToString() );
}

private void IncludeXmlComments(SwaggerDocsConfig config)
{
config.IncludeXmlComments(String.Format(@"{0}\XmlComments.xml", AppDomain.CurrentDomain.BaseDirectory));
Expand Down

0 comments on commit a400089

Please sign in to comment.