Skip to content

Commit 655ef9e

Browse files
authored
fix: urls.primaryName functionality regression (via #5097)
* add tests * compute index before triggering URL load * bonus: improve urls topbar label
1 parent 69b362a commit 655ef9e

File tree

7 files changed

+79
-2
lines changed

7 files changed

+79
-2
lines changed

src/plugins/topbar/topbar.jsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,20 @@ export default class Topbar extends React.Component {
7474
const urls = configs.urls || []
7575

7676
if(urls && urls.length) {
77-
this.loadSpec(urls[this.state.selectedIndex].url)
77+
var targetIndex = this.state.selectedIndex
7878
let primaryName = configs["urls.primaryName"]
7979
if(primaryName)
8080
{
8181
urls.forEach((spec, i) => {
8282
if(spec.name === primaryName)
8383
{
8484
this.setState({selectedIndex: i})
85+
targetIndex = i
8586
}
8687
})
8788
}
89+
90+
this.loadSpec(urls[targetIndex].url)
8891
}
8992
}
9093

@@ -116,7 +119,7 @@ export default class Topbar extends React.Component {
116119
})
117120

118121
control.push(
119-
<label className="select-label" htmlFor="select"><span>Select a spec</span>
122+
<label className="select-label" htmlFor="select"><span>Select a definition</span>
120123
<select id="select" disabled={isLoading} onChange={ this.onUrlSelect } value={urls[this.state.selectedIndex].url}>
121124
{rows}
122125
</select>

src/style/_topbar.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
width: 100%;
5555
max-width: 600px;
5656
margin: 0;
57+
color: #f0f0f0;
5758
span
5859
{
5960
font-size: 16px;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
urls:
2+
- name: One
3+
url: /documents/features/urls/1.yaml
4+
- name: Two
5+
url: /documents/features/urls/2.yaml
6+
urls.primaryName: Two
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
urls:
2+
- name: One
3+
url: /documents/features/urls/1.yaml
4+
- name: Two
5+
url: /documents/features/urls/2.yaml
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
swagger: "2.0"
2+
3+
info:
4+
title: One
5+
6+
paths:
7+
/:
8+
get:
9+
summary: an operation
10+
responses:
11+
"200":
12+
description: OK
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
openapi: "3.0.0"
2+
3+
info:
4+
title: Two
5+
6+
paths:
7+
/:
8+
get:
9+
summary: an operation
10+
responses:
11+
"200":
12+
description: OK
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
describe("configuration options: `urls` and `urls.primaryName`", () => {
2+
describe("`urls` only", () => {
3+
it("should render a list of URLs correctly", () => {
4+
cy.visit("/?configUrl=/configs/urls.yaml")
5+
.get("select")
6+
.children()
7+
.should("have.length", 2)
8+
.get("select > option")
9+
.eq(0)
10+
.should("have.text", "One")
11+
.should("have.attr", "value", "/documents/features/urls/1.yaml")
12+
.get("select > option")
13+
.eq(1)
14+
.should("have.text", "Two")
15+
.should("have.attr", "value", "/documents/features/urls/2.yaml")
16+
})
17+
18+
it("should render the first URL in the list", () => {
19+
cy.visit("/?configUrl=/configs/urls.yaml")
20+
.get("h2.title")
21+
.should("have.text", "One")
22+
.window()
23+
.then(win => win.ui.specSelectors.url())
24+
.should("equal", "/documents/features/urls/1.yaml")
25+
})
26+
})
27+
28+
it("should respect a `urls.primaryName`", () => {
29+
cy.visit("/?configUrl=/configs/urls-primary-name.yaml")
30+
.get("select")
31+
.should("have.value", "/documents/features/urls/2.yaml")
32+
.get("h2.title")
33+
.should("have.text", "Two")
34+
.window()
35+
.then(win => win.ui.specSelectors.url())
36+
.should("equal", "/documents/features/urls/2.yaml")
37+
})
38+
})

0 commit comments

Comments
 (0)