Skip to content
This repository was archived by the owner on Nov 19, 2021. It is now read-only.

Commit b86789c

Browse files
merqlovekyleledbetter
authored andcommitted
chore(): fix tests, e2e, cli & add yarn (#47)
* add ngx-charts styles & pipe for y-axis format * update Covalent manage list toolbar font weight * Fix tests. Upgrade to cli 1.0.0-rc.0 * Fix upgrade to cli 1.0.0-rc.0. Fix tests & protractor tests. * Update jasmine-spec-reporter * Update typescript to 2.1.5. Update angular to 2.4.8
1 parent ec1c2e7 commit b86789c

14 files changed

+5905
-104
lines changed

e2e/dashboard.e2e.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ describe('basic e2e test with loading', function(): void {
55
describe('home', function(): void {
66
browser.get('/');
77
it('should load home page', function(): void {
8-
expect(browser.getTitle()).toBe('Covalent QuickStart');
8+
expect(browser.getTitle()).toBe('Covalent Quickstart');
99
// Waits for the element 'td-loading' to not be present on the dom.
1010
browser.wait(EC.not(EC.presenceOf($('td-loading'))), 10000)
1111
.then(() => {

package.json

+16-20
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"e2e": "ng e2e",
1313
"lint": "ng lint",
1414
"reinstall": "rm -rf node_modules tmp deploy dist && npm i",
15-
"postinstall": "webdriver-manager update",
15+
"postinstall": "webdriver-manager update && ./scripts/protractor.sh",
1616
"start-api": "cd mock-api && covalent-data &",
1717
"stop-api": "pkill covalent-data",
1818
"webdriver-update": "bash ./node_modules/.bin/webdriver-manager update",
@@ -23,10 +23,7 @@
2323
"node": ">4.4 < 7",
2424
"npm": ">3"
2525
},
26-
"repository": {
27-
"type": "git",
28-
"url": "https://github.com/teradata/covalent-quickstart.git"
29-
},
26+
"repository": "https://github.com/teradata/covalent-quickstart.git",
3027
"license": "MIT",
3128
"author": "Teradata UX",
3229
"contributors": [
@@ -38,17 +35,17 @@
3835
"Ilsun Park <[email protected]>"
3936
],
4037
"dependencies": {
41-
"@angular/common": "2.4.5",
42-
"@angular/compiler": "2.4.5",
43-
"@angular/core": "2.4.5",
44-
"@angular/forms": "2.4.5",
45-
"@angular/http": "2.4.5",
38+
"@angular/common": "2.4.8",
39+
"@angular/compiler": "2.4.8",
40+
"@angular/core": "2.4.8",
41+
"@angular/forms": "2.4.8",
42+
"@angular/http": "2.4.8",
4643
"@angular/flex-layout": "2.0.0-rc.1",
4744
"@angular/material": "2.0.0-beta.2",
48-
"@angular/platform-browser": "2.4.5",
49-
"@angular/platform-browser-dynamic": "2.4.5",
50-
"@angular/platform-server": "2.4.5",
51-
"@angular/router": "3.4.5",
45+
"@angular/platform-browser": "2.4.8",
46+
"@angular/platform-browser-dynamic": "2.4.8",
47+
"@angular/platform-server": "2.4.8",
48+
"@angular/router": "3.4.8",
5249
"@covalent/core": "1.0.0-beta.2",
5350
"@covalent/charts": "1.0.0-beta.2",
5451
"@covalent/dynamic-forms": "1.0.0-beta.2",
@@ -66,27 +63,26 @@
6663
},
6764
"devDependencies": {
6865
"@angular/cli": "1.0.0-rc.0",
69-
"@angular/compiler-cli": "2.4.5",
66+
"@angular/compiler-cli": "2.4.8",
7067
"@types/hammerjs": "2.0.30",
7168
"@types/jasmine": "2.5.38",
7269
"@types/node": "~6.0.60",
7370
"@types/selenium-webdriver": "2.53.36",
7471
"codelyzer": "~2.0.0",
7572
"jasmine-core": "~2.5.2",
76-
"jasmine-spec-reporter": "2.5.0",
73+
"jasmine-spec-reporter": "3.2.0",
7774
"karma": "~1.4.1",
7875
"karma-chrome-launcher": "~2.0.0",
7976
"karma-cli": "~1.0.1",
8077
"karma-jasmine": "^1.1.0",
8178
"karma-jasmine-html-reporter": "^0.2.2",
8279
"karma-coverage-istanbul-reporter": "^0.2.0",
8380
"karma-firefox-launcher": "1.0.0",
84-
"karma-phantomjs-launcher": "1.0.1",
8581
"phantomjs-prebuilt": "2.1.7",
8682
"protractor": "~5.1.0",
87-
"ts-node": "~2.0.0",
88-
"tslint": "^4.4.2",
89-
"typescript": "2.1.5"
83+
"ts-node": "~2.1.0",
84+
"tslint": "^4.5.1",
85+
"typescript": "~2.2.0"
9086
},
9187
"optionalDependencies": {
9288
"@covalent/data": "0.4.0"

protractor.conf.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// https://github.com/angular/protractor/blob/master/lib/config.ts
33

44
/*global jasmine */
5-
var SpecReporter = require('jasmine-spec-reporter');
5+
let SpecReporter = require('jasmine-spec-reporter').SpecReporter;
66

77
exports.config = {
88
allScriptsTimeout: 11000,
@@ -23,10 +23,10 @@ exports.config = {
2323
useAllAngular2AppRoots: true,
2424
beforeLaunch: function() {
2525
require('ts-node').register({
26-
project: 'e2e'
26+
project: 'e2e/tsconfig.e2e.json'
2727
});
2828
},
2929
onPrepare: function() {
30-
jasmine.getEnv().addReporter(new SpecReporter());
30+
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
3131
}
3232
};

scripts/protractor.sh

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
3+
cd ./node_modules/protractor/node_modules
4+
5+
if [ ! -d "./webdriver-manager" ]; then
6+
ln -fs ../../webdriver-manager/ ./
7+
fi
8+
9+
exit 0;

src/app/dashboard-product/dashboard-product.component.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<span>Product Name</span>
1414
</md-toolbar>
1515
<md-nav-list td-sidenav-content>
16-
<a md-list-item
16+
<a md-list-item
1717
md-ripple class="block relative"
1818
(click)="!media.query('gt-sm') && manageList.close()"
1919
[routerLinkActive]="['active']"
@@ -22,7 +22,7 @@
2222
<md-icon md-list-icon>dashboard</md-icon>
2323
Dashboard
2424
</a>
25-
<a md-list-item
25+
<a md-list-item
2626
md-ripple class="block relative"
2727
(click)="!media.query('gt-sm') && manageList.close()"
2828
[routerLinkActive]="['active']"
@@ -31,7 +31,7 @@
3131
<md-icon md-list-icon>insert_chart</md-icon>
3232
Stats
3333
</a>
34-
<a md-list-item
34+
<a md-list-item
3535
md-ripple class="block relative"
3636
(click)="!media.query('gt-sm') && manageList.close()"
3737
[routerLinkActive]="['active']"

src/app/dashboard-product/dashboard-product.component.spec.ts

+17-65
Original file line numberDiff line numberDiff line change
@@ -4,105 +4,57 @@ import {
44
async,
55
ComponentFixture,
66
} from '@angular/core/testing';
7+
import {APP_BASE_HREF} from '@angular/common';
78
import { RouterTestingModule } from '@angular/router/testing';
8-
import { XHRBackend, Response, ResponseOptions } from '@angular/http';
9-
import { MockBackend } from '@angular/http/testing';
10-
import { CovalentCoreModule, TdLoadingService } from '@covalent/core';
11-
import { CovalentHttpModule } from '@covalent/http';
9+
import { CovalentCoreModule, TdMediaService } from '@covalent/core';
1210
import { DashboardProductComponent } from './dashboard-product.component';
13-
import { ChartComponent } from '../../components/chart/chart.component';
1411

1512
describe('Component: DashboardProduct', () => {
1613

1714
let noop: () => void = () => {
1815
// noop method
1916
};
2017

21-
let generalResponses: Map<string, Response> = new Map<string, Response>();
22-
generalResponses.set('assets/icons/covalent.svg', new Response(new ResponseOptions({
23-
status: 200, body: '<svg></svg>',
24-
})));
25-
generalResponses.set('assets/icons/github.svg', new Response(new ResponseOptions({
26-
status: 200, body: '<svg></svg>',
27-
})));
28-
2918
beforeEach(async(() => {
3019
TestBed.configureTestingModule({
3120
imports: [
3221
CovalentCoreModule.forRoot(),
33-
CovalentHttpModule.forRoot(),
3422
RouterTestingModule,
3523
],
3624
declarations: [
3725
DashboardProductComponent,
38-
ChartComponent,
3926
],
4027
providers: [
41-
MockBackend,
42-
{ provide: XHRBackend, useExisting: MockBackend },
43-
{ provide: TdLoadingService, useValue: {
28+
{ provide: APP_BASE_HREF, useValue: '/' },
29+
{ provide: TdMediaService, useValue: {
30+
registerQuery: noop,
31+
query: noop,
32+
broadcast: noop,
33+
createComponent: noop,
4434
createReplaceComponent: noop,
4535
createOverlayComponent: noop,
4636
register: noop,
4737
resolve: noop,
4838
},
4939
},
5040
],
51-
});
52-
TestBed.compileComponents();
41+
})
42+
.compileComponents();
5343
}));
5444

55-
it('should create the component', async(inject([MockBackend], (mockBackend: MockBackend) => {
56-
let responses: Map<string, Response> = new Map<string, Response>(generalResponses);
57-
mockBackend.connections.subscribe((connection: any) => {
58-
connection.mockRespond(responses.get(connection.request.url));
59-
});
60-
responses.set('data/items.json', new Response(new ResponseOptions({
61-
status: 200, body: JSON.stringify([{
62-
item_id: 1,
63-
name: 'Suzy Cuningham',
64-
description: 'updated her account',
65-
icon: 'account_circle',
66-
created : '07/13/2016 11:05 AM',
67-
}, {
68-
item_id: 2,
69-
name: 'Bobby Daniels',
70-
description: 'made a deposit of $25.15',
71-
icon: 'account_balance_wallet',
72-
created : '07/01/2016 03:41 PM',
73-
}]),
74-
})));
75-
responses.set('data/users.json', new Response(new ResponseOptions({
76-
status: 200, body: JSON.stringify([{
77-
displayName : 'Suzy Cuningham',
78-
id : 'suzy.cuningham',
79-
email : '[email protected]',
80-
created : '10/01/2015 11:05 AM',
81-
lastAccess : '12/23/2015 11:05 AM',
82-
siteAdmin: true,
83-
}, {
84-
displayName : 'Bobby Daniels',
85-
id : 'bobbyD',
86-
email : '[email protected]',
87-
created : '10/01/2015 11:05 AM',
88-
lastAccess : '12/23/2015 11:05 AM',
89-
siteAdmin: false,
90-
}]),
91-
})));
92-
45+
it('should create the component', (done: any) => {
9346
let fixture: ComponentFixture<any> = TestBed.createComponent(DashboardProductComponent);
9447
let testComponent: DashboardProductComponent = fixture.debugElement.componentInstance;
9548
let element: HTMLElement = fixture.nativeElement;
9649

97-
expect(element.querySelector('.item-list')).toBeTruthy();
98-
expect(element.querySelector('.user-list')).toBeTruthy();
9950
testComponent.ngAfterViewInit();
10051
fixture.detectChanges();
52+
expect(element.querySelector('td-layout-manage-list')).toBeTruthy();
10153
fixture.whenStable().then(() => {
102-
expect(element.querySelectorAll('.item-list a[md-list-item]').length)
103-
.toBe(testComponent.items.length);
104-
expect(element.querySelectorAll('.user-list md-list-item').length)
105-
.toBe(testComponent.users.length);
54+
expect(element.querySelector('a[ng-reflect-router-link="/product"]')).toBeTruthy();
55+
expect(element.querySelector('a[ng-reflect-router-link="stats"]')).toBeTruthy();
56+
expect(element.querySelector('a[ng-reflect-router-link="features"]')).toBeTruthy();
57+
done();
10658
});
107-
})));
59+
});
10860
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import {
2+
TestBed,
3+
inject,
4+
async,
5+
ComponentFixture,
6+
} from '@angular/core/testing';
7+
import {APP_BASE_HREF} from '@angular/common';
8+
import { RouterTestingModule } from '@angular/router/testing';
9+
import { XHRBackend, Response, ResponseOptions } from '@angular/http';
10+
import { MockBackend } from '@angular/http/testing';
11+
import { CovalentCoreModule, TdLoadingService } from '@covalent/core';
12+
import { CovalentHttpModule } from '@covalent/http';
13+
14+
import { ProductOverviewComponent } from './overview.component';
15+
16+
import { NgxChartsModule } from '@swimlane/ngx-charts';
17+
18+
describe('Component: ProductOverview', () => {
19+
20+
let noop: () => void = () => {
21+
// noop method
22+
};
23+
24+
let generalResponses: Map<string, Response> = new Map<string, Response>();
25+
generalResponses.set('assets/icons/covalent.svg', new Response(new ResponseOptions({
26+
status: 200, body: '<svg></svg>',
27+
})));
28+
generalResponses.set('assets/icons/github.svg', new Response(new ResponseOptions({
29+
status: 200, body: '<svg></svg>',
30+
})));
31+
32+
beforeEach(async(() => {
33+
TestBed.configureTestingModule({
34+
imports: [
35+
CovalentCoreModule.forRoot(),
36+
CovalentHttpModule.forRoot(),
37+
RouterTestingModule,
38+
NgxChartsModule,
39+
],
40+
declarations: [
41+
ProductOverviewComponent,
42+
],
43+
providers: [
44+
MockBackend,
45+
{ provide: XHRBackend, useExisting: MockBackend },
46+
{ provide: APP_BASE_HREF, useValue: '/' },
47+
{ provide: TdLoadingService, useValue: {
48+
createComponent: noop,
49+
createReplaceComponent: noop,
50+
createOverlayComponent: noop,
51+
register: noop,
52+
resolve: noop,
53+
},
54+
},
55+
],
56+
});
57+
TestBed.compileComponents();
58+
}));
59+
60+
it('should create the component', (done: any) => {
61+
inject([MockBackend], (mockBackend: MockBackend) => {
62+
let responses: Map<string, Response> = new Map<string, Response>(generalResponses);
63+
mockBackend.connections.subscribe((connection: any) => {
64+
connection.mockRespond(responses.get(connection.request.url));
65+
});
66+
responses.set('data/items.json', new Response(new ResponseOptions({
67+
status: 200, body: JSON.stringify([{
68+
item_id: 1,
69+
name: 'Suzy Cuningham',
70+
description: 'updated her account',
71+
icon: 'account_circle',
72+
created : '07/13/2016 11:05 AM',
73+
}, {
74+
item_id: 2,
75+
name: 'Bobby Daniels',
76+
description: 'made a deposit of $25.15',
77+
icon: 'account_balance_wallet',
78+
created : '07/01/2016 03:41 PM',
79+
}]),
80+
})));
81+
responses.set('data/users.json', new Response(new ResponseOptions({
82+
status: 200, body: JSON.stringify([{
83+
displayName : 'Suzy Cuningham',
84+
id : 'suzy.cuningham',
85+
email : '[email protected]',
86+
created : '10/01/2015 11:05 AM',
87+
lastAccess : '12/23/2015 11:05 AM',
88+
siteAdmin: true,
89+
}, {
90+
displayName : 'Bobby Daniels',
91+
id : 'bobbyD',
92+
email : '[email protected]',
93+
created : '10/01/2015 11:05 AM',
94+
lastAccess : '12/23/2015 11:05 AM',
95+
siteAdmin: false,
96+
}]),
97+
})));
98+
99+
let fixture: ComponentFixture<any> = TestBed.createComponent(ProductOverviewComponent);
100+
let testComponent: ProductOverviewComponent = fixture.debugElement.componentInstance;
101+
let element: HTMLElement = fixture.nativeElement;
102+
103+
expect(element.querySelector('.item-list')).toBeTruthy();
104+
expect(element.querySelector('.user-list')).toBeTruthy();
105+
testComponent.ngAfterViewInit();
106+
fixture.detectChanges();
107+
108+
fixture.whenStable().then(() => {
109+
expect(element.querySelectorAll('.item-list a[md-list-item]').length)
110+
.toBe(testComponent.items.length);
111+
expect(element.querySelectorAll('.user-list md-list-item').length)
112+
.toBe(testComponent.users.length);
113+
done();
114+
});
115+
})();
116+
});
117+
});

src/app/detail/detail.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export class DetailComponent implements OnInit {
1717
constructor(private _router: Router, private _itemsService: ItemsService, private _route: ActivatedRoute) {}
1818

1919
goBack(): void {
20-
this._router.navigate(['/dashboard-product']);
20+
this._router.navigate(['/product']);
2121
}
2222

2323
ngOnInit(): void {

0 commit comments

Comments
 (0)