11import { Component } from "@angular/core" ;
2- import { TestBed } from "@angular/core/testing" ;
2+ import { ComponentFixture , TestBed } from "@angular/core/testing" ;
33import { By } from "@angular/platform-browser" ;
44
55import { DropdownList } from "./dropdown-list.component" ;
@@ -11,7 +11,10 @@ import { I18nModule } from "../../i18n/index";
1111 template : `<ibm-dropdown-list [items]="items" (select)="onSelect($event)"></ibm-dropdown-list>`
1212} )
1313class DropdownListTest {
14- items = [ { content : "one" , selected : false } , { content : "two" , selected : false } ] ;
14+ items = [
15+ < ListItem > { content : "one" , selected : false } ,
16+ < ListItem > { content : "two" , selected : false }
17+ ] ;
1518 selected : ListItem ;
1619 onSelect ( ev ) {
1720 this . selected = ev . item ;
@@ -22,15 +25,18 @@ class DropdownListTest {
2225 template : `<ibm-dropdown-list [items]="items" (select)="onSelect($event)" type="multi"></ibm-dropdown-list>`
2326} )
2427class MultiTest {
25- items = [ { content : "one" , selected : false } , { content : "two" , selected : false } ] ;
28+ items = [
29+ < ListItem > { content : "one" , selected : false } ,
30+ < ListItem > { content : "two" , selected : false }
31+ ] ;
2632 selected : ListItem [ ] ;
2733 onSelect ( ev ) {
2834 this . selected = ev ;
2935 }
3036}
3137
3238describe ( "Dropdown list" , ( ) => {
33- let fixture , wrapper ;
39+ let fixture : ComponentFixture < DropdownListTest > , wrapper : DropdownListTest ;
3440 beforeEach ( ( ) => {
3541 TestBed . configureTestingModule ( {
3642 declarations : [
@@ -51,8 +57,8 @@ describe("Dropdown list", () => {
5157 } ) ;
5258
5359 it ( "should work" , ( ) => {
54- fixture = TestBed . createComponent ( DropdownList ) ;
55- expect ( fixture . componentInstance instanceof DropdownList ) . toBe ( true ) ;
60+ let fixture2 = TestBed . createComponent ( DropdownList ) ;
61+ expect ( fixture2 . componentInstance instanceof DropdownList ) . toBe ( true ) ;
5662 } ) ;
5763
5864 it ( "should select an item" , ( ) => {
@@ -62,10 +68,23 @@ describe("Dropdown list", () => {
6268 } ) ;
6369 expect ( wrapper . selected . content ) . toBe ( "one" ) ;
6470 } ) ;
71+
72+ it ( "should disable a list-item" , ( ) => {
73+ wrapper . items = [
74+ < ListItem > { content : "one" , selected : false } ,
75+ < ListItem > { content : "two" , selected : false , disabled : false } ,
76+ < ListItem > { content : "three" , selected : false , disabled : true }
77+ ] ;
78+ fixture . detectChanges ( ) ;
79+ const disabledEls = fixture . debugElement . queryAll ( By . css ( ".bx--list-box__menu-item[disabled]" ) ) ;
80+ expect ( disabledEls . length ) . toEqual ( 1 ) ;
81+ const enabledEls = fixture . debugElement . queryAll ( By . css ( ".bx--list-box__menu-item:not([disabled])" ) ) ;
82+ expect ( enabledEls . length ) . toEqual ( 2 ) ;
83+ } ) ;
6584} ) ;
6685
6786describe ( "Dropdown multi list" , ( ) => {
68- let fixture , wrapper ;
87+ let fixture : ComponentFixture < MultiTest > , wrapper : MultiTest ;
6988 beforeEach ( ( ) => {
7089 TestBed . configureTestingModule ( {
7190 declarations : [
@@ -86,9 +105,9 @@ describe("Dropdown multi list", () => {
86105 } ) ;
87106
88107 it ( "should work" , ( ) => {
89- fixture = TestBed . createComponent ( DropdownList ) ;
90- fixture . type = "multi" ;
91- expect ( fixture . componentInstance instanceof DropdownList ) . toBe ( true ) ;
108+ let fixture2 = TestBed . createComponent ( DropdownList ) ;
109+ fixture2 . componentInstance . type = "multi" ;
110+ expect ( fixture2 . componentInstance instanceof DropdownList ) . toBe ( true ) ;
92111 } ) ;
93112
94113 it ( "should multi select" , ( ) => {
@@ -104,4 +123,21 @@ describe("Dropdown multi list", () => {
104123 expect ( wrapper . selected [ 0 ] . content ) . toBe ( "one" ) ;
105124 expect ( wrapper . selected [ 1 ] . content ) . toBe ( "two" ) ;
106125 } ) ;
126+
127+ it ( "should disable a list-item and its checkbox" , ( ) => {
128+ wrapper . items = [
129+ < ListItem > { content : "one" , selected : false } ,
130+ < ListItem > { content : "two" , selected : false , disabled : false } ,
131+ < ListItem > { content : "three" , selected : false , disabled : true }
132+ ] ;
133+ fixture . detectChanges ( ) ;
134+ const disabledEls = fixture . debugElement . queryAll ( By . css ( ".bx--list-box__menu-item[disabled]" ) ) ;
135+ const disabledInputEls = fixture . debugElement . queryAll ( By . css ( ".bx--checkbox[disabled]" ) ) ;
136+ expect ( disabledEls . length ) . toEqual ( 1 ) ;
137+ expect ( disabledInputEls . length ) . toEqual ( 1 ) ;
138+ const enabledEls = fixture . debugElement . queryAll ( By . css ( ".bx--list-box__menu-item:not([disabled])" ) ) ;
139+ const enabledInputEls = fixture . debugElement . queryAll ( By . css ( ".bx--checkbox:not([disabled])" ) ) ;
140+ expect ( enabledEls . length ) . toEqual ( 2 ) ;
141+ expect ( enabledInputEls . length ) . toEqual ( 2 ) ;
142+ } ) ;
107143} ) ;
0 commit comments