diff --git a/src/core/components/layouts/base.jsx b/src/core/components/layouts/base.jsx
index f502b88f..ea5fbce1 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/schemes.jsx b/src/core/components/schemes.jsx
index f9fe8f81..89ba0fbc 100644
--- a/src/core/components/schemes.jsx
+++ b/src/core/components/schemes.jsx
@@ -19,7 +19,7 @@ export default class Schemes extends React.Component {
}
componentWillReceiveProps(nextProps) {
- if ( !this.props.operationScheme || !nextProps.schemes.has(this.props.operationScheme) ) {
+ if ( !this.props.operationScheme || !nextProps.schemes.includes(this.props.operationScheme) ) {
// if we don't have a selected operationScheme 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..8e0ebc1f 100644
--- a/test/components/schemes.js
+++ b/test/components/schemes.js
@@ -9,10 +9,12 @@ import Schemes from "components/schemes"
describe("", function(){
it("calls props.specActions.setScheme() when no operationScheme is selected", function(){
+ let setSchemeSpy = createSpy()
+
// Given
let props = {
specActions: {
- setScheme: createSpy()
+ setScheme: setSchemeSpy
},
schemes: fromJS([
"http",
@@ -22,7 +24,7 @@ describe("", function(){
path: "/test",
method: "get"
}
-
+
// When
let wrapper = shallow()
@@ -38,4 +40,33 @@ describe("", function(){
// Then operationScheme should default to first scheme in options list
expect(props.specActions.setScheme).toHaveBeenCalledWith("https", "/test", "get")
})
+
+ it.only("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"
+ ]),
+ operationScheme: "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 `operationScheme` is in schemes
+ expect(setSchemeSpy.calls.length).toEqual(1)
+ })
})