Skip to content

Commit da7fd95

Browse files
authored
Merge pull request #824 from dxc-technology/fix-823
Added tests toggle group with default value
2 parents 6914f8d + 7079492 commit da7fd95

File tree

5 files changed

+62
-8
lines changed

5 files changed

+62
-8
lines changed
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1-
<div class="toggleContent" [attr.aria-checked]="selected" [attr.role]="role"
2-
(click)="onClickHandler()" (keypress)="onHandleKeyPressHandler($event)" [tabIndex]="tabIndexValue">
1+
<div
2+
class="toggleContent"
3+
[attr.aria-checked]="selected"
4+
[attr.role]="role"
5+
(click)="onClickHandler()"
6+
(keypress)="onHandleKeyPressHandler($event)"
7+
[tabIndex]="tabIndexValue"
8+
>
39
<ng-content select="dxc-toggle-icon"></ng-content>
410
<span class="label" *ngIf="label"> {{ label }} </span>
511
</div>

projects/dxc-ngx-cdk/src/lib/dxc-toggleGroup/dxc-toggle/dxc-toggle.component.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ export class DxcToggleComponent implements OnInit {
2525
@Input() value: string;
2626
@Output() public onClick: EventEmitter<any> = new EventEmitter<any>();
2727
@Output() public onKeyPress: EventEmitter<any> = new EventEmitter<any>();
28-
role: string;
2928
@HostBinding("class") style;
3029

3130
@HostBinding("class.selected") get valid() {
3231
return this.selected;
3332
}
3433

34+
role: string;
3535
selected: boolean = false;
3636
tabIndexValue: number = 0;
3737

@@ -45,6 +45,10 @@ export class DxcToggleComponent implements OnInit {
4545
}
4646
}
4747

48+
setRole(role: string) {
49+
this.role = role;
50+
}
51+
4852
ngOnInit(): void {
4953
this.style = `${this.getDynamicStyle()}`;
5054
}

projects/dxc-ngx-cdk/src/lib/dxc-toggleGroup/dxc-toggleGroup.component.spec.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
platformBrowserDynamicTesting,
77
} from "@angular/platform-browser-dynamic/testing";
88
import { TestBed } from "@angular/core/testing";
9+
import { waitFor } from "@testing-library/dom";
910

1011
TestBed.initTestEnvironment(
1112
BrowserDynamicTestingModule,
@@ -148,4 +149,48 @@ describe("DxcToggleGroup tests", () => {
148149
fireEvent.click(dxcToggleGroup.getByText("Facebook"));
149150
expect(changeMock).toHaveBeenCalledTimes(0);
150151
});
152+
153+
test("dxc-toggleGroup with default value", async () => {
154+
const changeMock = jest.fn();
155+
const dxcToggleGroup = await render(
156+
`<dxc-togglegroup defaultValue="3">,
157+
<dxc-toggle label="Facebook" value="1"></dxc-toggle>
158+
<dxc-toggle label="Twitter" value="2"></dxc-toggle>
159+
<dxc-toggle label="Linkedin" value="3"></dxc-toggle>
160+
</dxc-togglegroup>`,
161+
{
162+
componentProperties: {
163+
changeMock,
164+
},
165+
imports: [DxcToggleGroupModule],
166+
excludeComponentDeclaration: true,
167+
}
168+
);
169+
const radios = dxcToggleGroup.getAllByRole("radio");
170+
expect(radios[0].getAttribute("aria-checked")).toBe("false");
171+
expect(radios[1].getAttribute("aria-checked")).toBe("false");
172+
expect(radios[2].getAttribute("aria-checked")).toBe("true");
173+
});
174+
175+
test("dxc-toggleGroup multiple with default value", async () => {
176+
const changeMock = jest.fn();
177+
const dxcToggleGroup = await render(
178+
`<dxc-togglegroup [multiple]="true" [defaultValue]="['2','3']">,
179+
<dxc-toggle label="Facebook" value="1"></dxc-toggle>
180+
<dxc-toggle label="Twitter" value="2"></dxc-toggle>
181+
<dxc-toggle label="Linkedin" value="3"></dxc-toggle>
182+
</dxc-togglegroup>`,
183+
{
184+
componentProperties: {
185+
changeMock,
186+
},
187+
imports: [DxcToggleGroupModule],
188+
excludeComponentDeclaration: true,
189+
}
190+
);
191+
const radios = dxcToggleGroup.getAllByRole("switch");
192+
expect(radios[0].getAttribute("aria-checked")).toBe("false");
193+
expect(radios[1].getAttribute("aria-checked")).toBe("true");
194+
expect(radios[2].getAttribute("aria-checked")).toBe("true");
195+
});
151196
});

projects/dxc-ngx-cdk/src/lib/dxc-toggleGroup/dxc-toggleGroup.component.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -148,11 +148,9 @@ export class DxcToggleGroupComponent implements OnInit {
148148
}
149149
});
150150

151-
setTimeout(() => {
152-
item.tabIndexValue = this.disabled ? -1 : this.tabIndexValue;
153-
item.role = this.multiple ? "switch" : "radio";
154-
this.setToggleSelected(item);
155-
});
151+
item.tabIndexValue = this.disabled ? -1 : this.tabIndexValue;
152+
item.setRole(this.multiple ? "switch" : "radio");
153+
this.setToggleSelected(item);
156154
});
157155
}
158156
}

projects/dxc-ngx-cdk/src/lib/dxc-toggleGroup/dxc-toggleGroup.types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export interface ToggleGroupProperties {
2222
disabled?: boolean;
2323
tabIndexValue?: number;
2424
margin?: Space | Spacing;
25+
defaultValue?: string | string[];
2526
}
2627

2728
export interface ToggleProperties {

0 commit comments

Comments
 (0)