diff --git a/.github/issue_template.md b/.github/issue_template.md
index 1b519695..77c30a7e 100644
--- a/.github/issue_template.md
+++ b/.github/issue_template.md
@@ -1,3 +1,63 @@
-When reporting an issue, please provide the following details:
-- swagger-ui version
-- a swagger file reproducing the issue
+
+
+
+
+
+| Q | A
+| ------------------------------- | -------
+| Bug or feature request? |
+| Which Swagger/OpenAPI version? |
+| Which Swagger-UI version? |
+| How did you install Swagger-UI? |
+| Which broswer & version? |
+| Which operating system? |
+
+
+### Demonstration API definition
+
+
+
+
+
+```yaml
+your: "API definition goes here"
+```
+
+### Configuration (browser query string, constructor, config.yaml)
+
+
+```js
+{
+ "your": { "constructorConfig": "here" }
+}
+```
+
+`?yourQueryStringConfig=here`
+
+### Expected Behavior
+
+
+
+### Current Behavior
+
+
+
+### Possible Solution
+
+
+
+### Context
+
+
diff --git a/src/core/components/layouts/base.jsx b/src/core/components/layouts/base.jsx
index f502b88f..268ef46c 100644
--- a/src/core/components/layouts/base.jsx
+++ b/src/core/components/layouts/base.jsx
@@ -69,7 +69,10 @@ export default class BaseLayout extends React.Component {
{ schemes && schemes.size ? (
-
+
) : null }
{ securityDefinitions ? (
diff --git a/src/core/components/operation.jsx b/src/core/components/operation.jsx
index fc182a1e..4f6534db 100644
--- a/src/core/components/operation.jsx
+++ b/src/core/components/operation.jsx
@@ -229,7 +229,7 @@ export default class Operation extends PureComponent {
path={ path }
method={ method }
specActions={ specActions }
- operationScheme={ operationScheme } />
+ currentScheme={ operationScheme } />
: null
}
diff --git a/src/core/components/schemes.jsx b/src/core/components/schemes.jsx
index f9fe8f81..ed0947fe 100644
--- a/src/core/components/schemes.jsx
+++ b/src/core/components/schemes.jsx
@@ -6,9 +6,9 @@ export default class Schemes extends React.Component {
static propTypes = {
specActions: PropTypes.object.isRequired,
schemes: PropTypes.object.isRequired,
+ currentScheme: PropTypes.string.isRequired,
path: PropTypes.string,
method: PropTypes.string,
- operationScheme: PropTypes.string
}
componentWillMount() {
@@ -19,8 +19,8 @@ export default class Schemes extends React.Component {
}
componentWillReceiveProps(nextProps) {
- if ( !this.props.operationScheme || !nextProps.schemes.has(this.props.operationScheme) ) {
- // if we don't have a selected operationScheme or if our selected scheme is no longer an option,
+ if ( !this.props.currentScheme || !nextProps.schemes.includes(this.props.currentScheme) ) {
+ // if we don't have a selected currentScheme or if our selected scheme is no longer an option,
// then fire 'change' event and select the first scheme in the list of options
this.setScheme(nextProps.schemes.first())
}
diff --git a/test/components/schemes.js b/test/components/schemes.js
index a21c0628..f8f5730c 100644
--- a/test/components/schemes.js
+++ b/test/components/schemes.js
@@ -7,35 +7,66 @@ import { fromJS } from "immutable"
import Schemes from "components/schemes"
describe("", function(){
- it("calls props.specActions.setScheme() when no operationScheme is selected", function(){
+ it("calls props.specActions.setScheme() when no currentScheme is selected", function(){
+
+ let setSchemeSpy = createSpy()
// Given
let props = {
specActions: {
- setScheme: createSpy()
+ setScheme: setSchemeSpy
},
schemes: fromJS([
"http",
"https"
]),
- operationScheme: undefined,
+ currentScheme: undefined,
path: "/test",
method: "get"
}
-
+
// When
let wrapper = shallow()
- // Then operationScheme should default to first scheme in options list
+ // Then currentScheme should default to first scheme in options list
expect(props.specActions.setScheme).toHaveBeenCalledWith("http", "/test" , "get")
- // When the operationScheme is no longer in the list of options
+ // When the currentScheme is no longer in the list of options
props.schemes = fromJS([
"https"
])
wrapper.setProps(props)
- // Then operationScheme should default to first scheme in options list
+ // Then currentScheme should default to first scheme in options list, again
expect(props.specActions.setScheme).toHaveBeenCalledWith("https", "/test", "get")
})
+
+ it("doesn't call props.specActions.setScheme() when schemes hasn't changed", function(){
+
+ let setSchemeSpy = createSpy()
+
+ // Given
+ let props = {
+ specActions: {
+ setScheme: setSchemeSpy
+ },
+ schemes: fromJS([
+ "http",
+ "https"
+ ]),
+ currentScheme: "https"
+ }
+
+ // When
+ let wrapper = shallow()
+
+ // Should be called initially, to set the global state
+ expect(setSchemeSpy.calls.length).toEqual(1)
+
+ // After an update
+ wrapper.instance().componentWillReceiveProps(props)
+
+ // Should not be called again, since `currentScheme` is in schemes
+ expect(setSchemeSpy.calls.length).toEqual(1)
+ })
})