Skip to content

Commit 7526e57

Browse files
wilkinsonaphilwebb
andcommitted
Fix handling of callouts in block switch
Fixes gh-46 Co-authored-by: Phillip Webb <pwebb@vmware.com>
1 parent 10deadc commit 7526e57

File tree

4 files changed

+61
-2
lines changed

4 files changed

+61
-2
lines changed

src/main/js/site/tabs.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@
5959
function createTab(blockElement, tabsElement) {
6060
const title = blockElement.querySelector(".title").textContent;
6161
const content = blockElement.querySelectorAll(".content").item(0);
62-
const colist = blockElement.querySelector(".colist");
62+
const colist = nextSibling(blockElement, ".colist");
6363
if (colist) {
64-
content.append();
64+
content.append(colist);
6565
}
6666
const tabElement = createElementFromHtml(
6767
'<div class="tab">' + title + "</div>"
@@ -72,6 +72,16 @@
7272
return { tabElement: tabElement, content: content };
7373
}
7474

75+
function nextSibling(element, selector) {
76+
var sibling = element.nextElementSibling;
77+
while (sibling) {
78+
if (sibling.matches(selector)) {
79+
return sibling;
80+
}
81+
sibling = sibling.nextElementSibling;
82+
}
83+
}
84+
7585
function createElementFromHtml(html) {
7686
const template = document.createElement("template");
7787
template.innerHTML = html;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[source,indent=0,role="primary"]
2+
.Alpha
3+
----
4+
Alpha 1 <1>
5+
----
6+
<1> Alpha callout
7+
8+
[source,indent=0,role="secondary"]
9+
.Bravo
10+
----
11+
Bravo 1 <1>
12+
----
13+
<1> Bravo callout

src/test/java/io/spring/asciidoctor/backend/integrationtest/TabIntegrationTests.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.junit.jupiter.api.extension.ExtendWith;
3131
import org.openqa.selenium.By;
3232
import org.openqa.selenium.WebElement;
33+
import org.openqa.selenium.logging.LogType;
3334
import org.openqa.selenium.remote.RemoteWebDriver;
3435
import org.testcontainers.junit.jupiter.Container;
3536
import org.testcontainers.junit.jupiter.Testcontainers;
@@ -79,6 +80,19 @@ void multipleTabsWithDifferentOptionsAreCreated(@Source("multipleTabsDifferentOp
7980
.hasDisplayedContentContaining("Charlie 1");
8081
}
8182

83+
@Test
84+
void givenASingleTabWithCalloutsWhenUnselectedItemIsClickedThenItBecomesSelectedAndItsCalloutsBecomeVisible(
85+
@Source("singleSwitchWithCallouts.adoc") ConvertedHtml html) throws IOException {
86+
RemoteWebDriver driver = html.inWebBrowser(this.chrome);
87+
assertThat(driver.manage().logs().get(LogType.BROWSER)).isEmpty();
88+
List<WebElement> listings = driver.findElementsByCssSelector(".listingblock.primary");
89+
assertThat(listings).hasSize(1);
90+
assertThatTabs(listings.get(0)).hasSelected("Alpha").hasUnselected("Bravo")
91+
.hasDisplayedContentContaining("Alpha 1").hasDisplayedCalloutListContaining("Alpha callout")
92+
.uponClicking("Bravo").hasSelected("Bravo").hasUnselected("Alpha")
93+
.hasDisplayedCalloutListContaining("Bravo callout");
94+
}
95+
8296
@Test
8397
void givenASingleTabWhenUnselectedItemIsClickedThenItBecomesSelected(@Source("singleTab.adoc") ConvertedHtml html)
8498
throws IOException {
@@ -163,6 +177,15 @@ TabsAssert hasDisplayedContentContaining(String contained) {
163177
return this;
164178
}
165179

180+
TabsAssert hasDisplayedCalloutListContaining(String contained) {
181+
WebElement content = this.actual.findElement(By.cssSelector(".content:not(.hidden)"))
182+
.findElement(By.cssSelector(".colist"));
183+
assertThat(content.isDisplayed()).isTrue();
184+
assertThat(content.getText()).contains(contained);
185+
return this;
186+
187+
}
188+
166189
TabsAssert uponClicking(String item) {
167190
List<WebElement> unselected = this.actual.findElements(By.cssSelector(".tab:not(.selected)"));
168191
Optional<WebElement> match = unselected.stream().filter((element) -> element.getText().equals(item))
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[source,indent=0,role="primary"]
2+
.Alpha
3+
----
4+
Alpha 1 <1>
5+
----
6+
<1> Alpha callout
7+
8+
[source,indent=0,role="secondary"]
9+
.Bravo
10+
----
11+
Bravo 1 <1>
12+
----
13+
<1> Bravo callout

0 commit comments

Comments
 (0)