.then((fixture: ComponentFixture<TestCmp>) => {
                    fixture.detectChanges();
                    tick();
                    fixture.detectChanges();
                    let defaultTemplate = fixture.debugElement.query(By.css('.ng2-pagination'));

                    expect(defaultTemplate).toBeNull();
                });
                .then((fixture: ComponentFixture<TestCmp>) => {
                    let instance: TestCustomTemplateCmp = fixture.componentInstance;
                    instance.config.itemsPerPage = 10;
                    let expected = ['1', '2', '3', '4', '5', '...', '10'];

                    fixture.detectChanges();
                    tick();
                    fixture.detectChanges();

                    expect(getPageLinkItems(fixture, 'div.page-link')).toEqual(expected);
                });
                    .then((fixture: ComponentFixture<TestCmp>) => {
                        let instance: TestCmp = fixture.componentInstance;
                        instance.config.itemsPerPage = 100;
                        fixture.detectChanges();

                        expect(getPageLinkItems(fixture).length).toBe(0);

                        instance.autoHide = false;
                        fixture.detectChanges();

                        expect(getPageLinkItems(fixture).length).toBe(1);
                    });
                .then((fixture: ComponentFixture<TestCmp>) => {
                    let instance: TestControlsFirstCmp = fixture.componentInstance;
                    let controlsInstance: PaginationControlsCmp = fixture
                        .debugElement.query(By.css('pagination-controls')).componentInstance;
                    fixture.detectChanges();

                    expect(controlsInstance.getCurrent()).toBe(1);

                    instance.config.currentPage = 2;
                    fixture.detectChanges();

                    expect(controlsInstance.getCurrent()).toBe(2);
                });
                    .then((controlsInstance: PaginationControlsCmp) => {
                        testCmpInstance.config.currentPage = 1;
                        fixture.detectChanges();
                        tick();

                        expect(controlsInstance.isLastPage()).toBe(false);

                        testCmpInstance.config.currentPage = 10;
                        fixture.detectChanges();
                        tick();

                        expect(controlsInstance.isLastPage()).toBe(true);
                    });
                    .then((fixture: ComponentFixture<TestCmp>) => {
                        fixture.detectChanges();
                        let instance: TestCmp = fixture.componentInstance;
                        let items;
                        items = getPageLinkItems(fixture, 'pagination-controls li', true);
                        expect(items[0]).toContain('Previous');
                        expect(items[items.length - 1]).toContain('Next');

                        instance.directionLinks = false;
                        fixture.detectChanges();
                        items = getPageLinkItems(fixture, 'pagination-controls li', true);
                        expect(items[0]).toContain('1');
                        expect(items[items.length - 1]).toContain('10');
                    });
                .then((fixture: ComponentFixture<TestCmp>) => {
                    let instance: TestCmp = fixture.componentInstance;
                    let expected = ['1', '2', '3', '4', '5', '6', '7', '...', '10'];
                    fixture.detectChanges();

                    expect(getPageLinkItems(fixture)).toEqual(expected);

                    instance.collection.push('item 101');
                    fixture.detectChanges();
                    tick();
                    fixture.detectChanges();
                    expected = ['1', '2', '3', '4', '5', '6', '7', '...', '11'];
                    expect(getPageLinkItems(fixture)).toEqual(expected);
                });
                    .then((fixture: ComponentFixture<TestCmp>) => {
                        let instance: TestCmp = fixture.componentInstance;

                        expect(instance.collection.length).toBe(100);

                        instance.config.itemsPerPage = 50;
                        fixture.detectChanges();

                        expect(instance.collection.length).toBe(100);

                        instance.config.itemsPerPage = 75;
                        fixture.detectChanges();

                        expect(instance.collection.length).toBe(100);
                    });
                    .then((fixture: ComponentFixture<TestCmp>) => {
                        let instance: TestCmp = fixture.componentInstance;
                        instance.config.itemsPerPage = 10;
                        fixture.detectChanges();

                        expect(getListItems(fixture).length).toBe(10);

                        let expected = ['item 4', 'item 5', 'item 6'];
                        instance.config.itemsPerPage = 3;
                        instance.config.currentPage = 2;
                        fixture.detectChanges();

                        expect(getListItemsText(fixture)).toEqual(expected);
                        expect(getListItems(fixture).length).toBe(3);
                    });
                    .then((fixture: ComponentFixture<TestCmp>) => {
                        let instance: TestCmp = fixture.componentInstance;
                        instance.config.itemsPerPage = 50;
                        fixture.detectChanges();

                        expect(getListItems(fixture).length).toBe(50);
                    });