Skip to content

Commit e0330d2

Browse files
Add test to dark mode/light mode toggle
1 parent 8046f89 commit e0330d2

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

apps/fretonator-web/src/app/common/header/__snapshots__/header.component.spec.ts.snap

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ exports[`HeaderComponent should match snapshot 1`] = `
6868
class="toggle__container"
6969
>
7070
<button
71-
class="theme__toggle"
71+
aria-label="Toggle dark/light mode"
72+
class="theme__toggle isDark"
7273
>
7374
7475
<app-moon-svg>

apps/fretonator-web/src/app/common/header/header.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727

2828
<div class="toggle__container">
2929
<button class="theme__toggle"
30+
[class.isDark]="darkColorMode"
31+
[class.isLight]="!darkColorMode"
3032
aria-label="Toggle dark/light mode"
3133
(click)="toggleTheme()">
3234
<app-moon-svg *ngIf="darkColorMode"></app-moon-svg>

apps/fretonator-web/src/app/common/header/header.component.spec.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@ describe('HeaderComponent', () => {
1111
logo: By.css('.header__siteLogo'),
1212
links: By.css('.header__linksItemLink'),
1313
hamburger: By.css(`.hamburger`),
14-
menu: By.css('.header__links')
14+
menu: By.css('.header__links'),
15+
themeToggleButton: By.css('.theme__toggle')
1516
};
1617

1718
const classNames = {
18-
menuHide: 'header__links--hide'
19+
menuHide: 'header__links--hide',
20+
isDark: 'isDark',
21+
isLight: 'isLight'
1922
};
2023

2124
@Component({
@@ -105,4 +108,23 @@ describe('HeaderComponent', () => {
105108
expect(menu.classes[classNames.menuHide]).toBeFalsy();
106109
});
107110
});
111+
112+
describe('toggleTheme()', () => {
113+
let themeToggleButton: DebugElement;
114+
115+
beforeEach(() => {
116+
themeToggleButton = fixture.debugElement.query(selectors.themeToggleButton);
117+
fixture.detectChanges();
118+
});
119+
120+
it('has the dark class by default', () => {
121+
expect(themeToggleButton.classes[classNames.isDark]).toBeTruthy();
122+
})
123+
124+
it('switches the class to isLight when clicked', () => {
125+
themeToggleButton.nativeElement.click();
126+
fixture.detectChanges();
127+
expect(themeToggleButton.classes[classNames.isLight]).toBeTruthy();
128+
})
129+
});
108130
});

0 commit comments

Comments
 (0)