Skip to content

Commit e3b0b83

Browse files
authored
Merge pull request #123 from CodeGov-org/nathan/more-ui-tests
test: add more ui tests
2 parents 72d8de0 + 49030d4 commit e3b0b83

File tree

27 files changed

+229
-62
lines changed

27 files changed

+229
-62
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
run: cargo test
2121

2222
typescript_tests:
23-
name: Typescript tests
23+
name: TypeScript tests
2424
runs-on: ubuntu-latest
2525
steps:
2626
- name: Checkout code
Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
1-
import { ChangeDetectionStrategy, Component } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
22

33
import { defineCustomElement } from '@cg/ui/dist/components/cg-badge';
44
import { DefineCustomElement } from '../../define-custom-element';
5+
import { defineCustomElementComponent } from '../../custom-element-component';
6+
7+
type CustomElement = HTMLCgBadgeElement;
58

69
@DefineCustomElement(defineCustomElement)
710
@Component({
811
selector: 'cg-badge',
912
changeDetection: ChangeDetectionStrategy.OnPush,
10-
template: `<ng-content></ng-content>`,
13+
template: `<ng-content />`,
1114
})
12-
export class BadgeComponent {}
15+
export class BadgeComponent extends defineCustomElementComponent<CustomElement>(
16+
defineCustomElement,
17+
) {
18+
public readonly theme = input<CustomElement['theme']>('primary');
19+
20+
constructor() {
21+
super();
22+
23+
this.elemProxyEffect(this.theme, 'theme');
24+
}
25+
}
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
import { ChangeDetectionStrategy, Component } from '@angular/core';
22

33
import { defineCustomElement } from '@cg/ui/dist/components/cg-card';
4-
import { DefineCustomElement } from '../../define-custom-element';
4+
import { defineCustomElementComponent } from '../../custom-element-component';
5+
6+
type CustomElement = HTMLCgCardElement;
57

6-
@DefineCustomElement(defineCustomElement)
78
@Component({
89
selector: 'cg-card',
910
changeDetection: ChangeDetectionStrategy.OnPush,
1011
template: `<ng-content />`,
1112
})
12-
export class CardComponent {}
13+
export class CardComponent extends defineCustomElementComponent<CustomElement>(
14+
defineCustomElement,
15+
) {}

lib/angular-ui/src/lib/atoms/icon-btn/icon-btn.component.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ describe('IconBtnComponent', () => {
1313

1414
fixture = TestBed.createComponent(IconBtnComponent);
1515
component = fixture.componentInstance;
16+
fixture.componentRef.setInput('ariaLabel', 'test');
1617
fixture.detectChanges();
1718
});
1819

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,33 @@
1-
import { ChangeDetectionStrategy, Component } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
22

33
import { defineCustomElement } from '@cg/ui/dist/components/cg-icon-btn';
4-
import { DefineCustomElement } from '../../define-custom-element';
4+
import { defineCustomElementComponent } from '../../custom-element-component';
5+
6+
type CustomElement = HTMLCgIconBtnElement;
57

6-
@DefineCustomElement(defineCustomElement)
78
@Component({
89
selector: 'cg-icon-btn',
910
changeDetection: ChangeDetectionStrategy.OnPush,
1011
template: `<ng-content />`,
1112
})
12-
export class IconBtnComponent {}
13+
export class IconBtnComponent extends defineCustomElementComponent<CustomElement>(
14+
defineCustomElement,
15+
) {
16+
public readonly type = input<CustomElement['type']>('button');
17+
public readonly disabled = input<CustomElement['disabled']>(false);
18+
public readonly ariaLabel = input.required<CustomElement['ariaLabel']>();
19+
public readonly ariaHasPopup = input<CustomElement['ariaHasPopup']>();
20+
public readonly ariaExpanded = input<CustomElement['ariaExpanded']>();
21+
public readonly ariaControls = input<CustomElement['ariaControls']>();
22+
23+
constructor() {
24+
super();
25+
26+
this.elemProxyEffect(this.type, 'type');
27+
this.elemProxyEffect(this.disabled, 'disabled');
28+
this.elemProxyEffect(this.ariaLabel, 'ariaLabel');
29+
this.elemProxyEffect(this.ariaHasPopup, 'ariaHasPopup');
30+
this.elemProxyEffect(this.ariaExpanded, 'ariaExpanded');
31+
this.elemProxyEffect(this.ariaControls, 'ariaControls');
32+
}
33+
}

lib/ui/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
},
2323
"dependencies": {
2424
"@cg/styles": "workspace:*",
25+
"@cg/utils": "workspace:*",
2526
"@stencil/core": "^4.23.1"
2627
},
2728
"devDependencies": {

lib/ui/src/coercion/coerce-boolean.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.

lib/ui/src/coercion/index.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

lib/ui/src/components/atoms/badge/badge.e2e.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { expect } from '@playwright/test';
22
import { test } from '@stencil/playwright';
3+
import { waitForError } from '../../../e2e-utils';
34

45
test.describe('cg-badge', () => {
56
const content = 'Badge content';
@@ -32,19 +33,14 @@ test.describe('cg-badge', () => {
3233
});
3334

3435
test('should throw error for an invalid theme', async ({ page }) => {
35-
let errorThrown = false;
36-
page.on('pageerror', error => {
37-
if (error.message === 'Invalid theme: "garbage"') {
38-
errorThrown = true;
39-
}
40-
});
41-
42-
await page.setContent(`
43-
<cg-badge theme="garbage">
44-
${content}
45-
</cg-badge>
46-
`);
47-
48-
expect(errorThrown).toBe(true);
36+
await waitForError(
37+
page,
38+
'Invalid theme provided: "garbage"',
39+
page.setContent(`
40+
<cg-badge theme="garbage">
41+
${content}
42+
</cg-badge>
43+
`),
44+
);
4945
});
5046
});

lib/ui/src/components/atoms/badge/badge.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Component, ComponentInterface, Host, Prop, h } from '@stencil/core';
22
import { Theme } from '../../../types';
3-
import { coerceTheme } from '../../../coercion';
3+
import { coerceTheme } from '../../../utils';
44

55
@Component({
66
tag: 'cg-badge',

0 commit comments

Comments
 (0)