Skip to content

Commit a08ae9a

Browse files
devversionjelbourn
authored andcommitted
build: better sharing of material test utilities (#13885)
* The slide toggle tests no longer import the test gesture config from `../slider/` * The datepicker month constants from `@angular/material/core` have been moved to `lib/testing`. The old export from `core` will be kept for backwards compatibility until V8
1 parent 0e029ed commit a08ae9a

24 files changed

+86
-58
lines changed

.github/CODEOWNERS

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
/src/lib/stepper/** @mmalerba
3434
/src/lib/table/** @andrewseguin
3535
/src/lib/tabs/** @andrewseguin
36+
/src/lib/testing/** @jelbourn
3637
/src/lib/toolbar/** @devversion
3738
/src/lib/tooltip/** @andrewseguin
3839
/src/lib/tree/** @jelbourn @andrewseguin
@@ -52,7 +53,6 @@
5253
/src/lib/core/selection/** @jelbourn
5354
/src/lib/core/selection/pseudo*/** @crisbeto @jelbourn
5455
/src/lib/core/style/** @jelbourn
55-
/src/lib/core/testing/** @jelbourn
5656
/src/lib/core/theming/** @jelbourn
5757
/src/lib/core/typography/** @crisbeto
5858
/src/lib/core/util/** @jelbourn

src/lib/core/BUILD.bazel

+3-2
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,11 @@ ng_test_library(
102102
deps = [
103103
"@angular//packages/platform-browser",
104104
"@angular//packages/platform-browser/animations",
105+
"//src/cdk/keycodes",
105106
"//src/cdk/platform",
106107
"//src/cdk/testing",
107-
"//src/cdk/keycodes",
108-
"//src/lib/core",
108+
"//src/lib/testing",
109+
":core",
109110
]
110111
)
111112

src/lib/core/datetime/native-date-adapter.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {Platform} from '@angular/cdk/platform';
22
import {LOCALE_ID} from '@angular/core';
33
import {async, inject, TestBed} from '@angular/core/testing';
4-
import {DEC, FEB, JAN, MAR} from '../testing/month-constants';
4+
import {DEC, FEB, JAN, MAR} from '@angular/material/testing';
55
import {DateAdapter, MAT_DATE_LOCALE, NativeDateAdapter, NativeDateModule} from './index';
66

77
const SUPPORTS_INTL = typeof Intl != 'undefined';

src/lib/core/month-constants.ts

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
* @license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
9+
/**
10+
* When constructing a Date, the month is zero-based. This can be confusing, since people are
11+
* used to seeing them one-based. So we create these aliases to make writing the tests easier.
12+
* @docs-private
13+
* @breaking-change 8.0.0 Remove this with V8 since it was only targeted for testing.
14+
*/
15+
export const JAN = 0, FEB = 1, MAR = 2, APR = 3, MAY = 4, JUN = 5, JUL = 6, AUG = 7, SEP = 8,
16+
OCT = 9, NOV = 10, DEC = 11;

src/lib/core/public-api.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ export * from './label/label-options';
1818
export * from './ripple/index';
1919
export * from './selection/index';
2020

21-
// TODO: don't have this
22-
export * from './testing/month-constants';
21+
// TODO(devversion): remove this with v8
22+
export * from './month-constants';

src/lib/datepicker/BUILD.bazel

+1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ ng_test_library(
7979
"//src/lib/core",
8080
"//src/lib/form-field",
8181
"//src/lib/input",
82+
"//src/lib/testing",
8283
":datepicker",
8384
]
8485
)

src/lib/datepicker/calendar-header.spec.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import {Directionality} from '@angular/cdk/bidi';
22
import {Component} from '@angular/core';
33
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
4-
import {DEC, FEB, JAN, MatNativeDateModule} from '@angular/material/core';
4+
import {MatNativeDateModule} from '@angular/material/core';
5+
import {DEC, FEB, JAN} from '@angular/material/testing';
56
import {By} from '@angular/platform-browser';
67
import {MatCalendar} from './calendar';
78
import {MatDatepickerIntl} from './datepicker-intl';

src/lib/datepicker/calendar.spec.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import {
88
} from '@angular/cdk/testing';
99
import {Component, NgZone} from '@angular/core';
1010
import {async, ComponentFixture, inject, TestBed} from '@angular/core/testing';
11-
import {DateAdapter, DEC, FEB, JAN, JUL, MatNativeDateModule, NOV} from '@angular/material/core';
11+
import {DateAdapter, MatNativeDateModule} from '@angular/material/core';
12+
import {DEC, FEB, JAN, JUL, NOV} from '@angular/material/testing';
1213
import {By} from '@angular/platform-browser';
1314
import {MatCalendar} from './calendar';
1415
import {MatDatepickerIntl} from './datepicker-intl';

src/lib/datepicker/datepicker.spec.ts

+5-13
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import {ENTER, ESCAPE, RIGHT_ARROW, UP_ARROW, DOWN_ARROW} from '@angular/cdk/keycodes';
1+
import {Directionality} from '@angular/cdk/bidi';
2+
import {DOWN_ARROW, ENTER, ESCAPE, RIGHT_ARROW, UP_ARROW} from '@angular/cdk/keycodes';
23
import {Overlay, OverlayContainer} from '@angular/cdk/overlay';
34
import {ScrollDispatcher} from '@angular/cdk/scrolling';
45
import {
@@ -11,27 +12,18 @@ import {
1112
import {Component, FactoryProvider, Type, ValueProvider, ViewChild} from '@angular/core';
1213
import {ComponentFixture, fakeAsync, flush, inject, TestBed, tick} from '@angular/core/testing';
1314
import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms';
14-
import {
15-
DEC,
16-
JAN,
17-
JUL,
18-
JUN,
19-
MAT_DATE_LOCALE,
20-
MatNativeDateModule,
21-
NativeDateModule,
22-
SEP,
23-
} from '@angular/material/core';
15+
import {MAT_DATE_LOCALE, MatNativeDateModule, NativeDateModule} from '@angular/material/core';
2416
import {MatFormField, MatFormFieldModule} from '@angular/material/form-field';
17+
import {DEC, JAN, JUL, JUN, SEP} from '@angular/material/testing';
2518
import {By} from '@angular/platform-browser';
19+
import {BrowserDynamicTestingModule} from '@angular/platform-browser-dynamic/testing';
2620
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
2721
import {Subject} from 'rxjs';
2822
import {MatInputModule} from '../input/index';
2923
import {MatDatepicker} from './datepicker';
3024
import {MatDatepickerInput} from './datepicker-input';
3125
import {MatDatepickerToggle} from './datepicker-toggle';
3226
import {MAT_DATEPICKER_SCROLL_STRATEGY, MatDatepickerIntl, MatDatepickerModule} from './index';
33-
import {Directionality} from '@angular/cdk/bidi';
34-
import {BrowserDynamicTestingModule} from '@angular/platform-browser-dynamic/testing';
3527

3628
describe('MatDatepicker', () => {
3729
const SUPPORTS_INTL = typeof Intl != 'undefined';

src/lib/datepicker/month-view.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ import {
88
PAGE_DOWN,
99
PAGE_UP,
1010
RIGHT_ARROW,
11-
UP_ARROW,
1211
SPACE,
12+
UP_ARROW,
1313
} from '@angular/cdk/keycodes';
1414
import {dispatchFakeEvent, dispatchKeyboardEvent} from '@angular/cdk/testing';
1515
import {Component} from '@angular/core';
1616
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
17-
import {DEC, FEB, JAN, MAR, MatNativeDateModule, NOV} from '@angular/material/core';
17+
import {MatNativeDateModule} from '@angular/material/core';
18+
import {DEC, FEB, JAN, MAR, NOV} from '@angular/material/testing';
1819
import {By} from '@angular/platform-browser';
1920
import {MatCalendarBody} from './calendar-body';
2021
import {MatMonthView} from './month-view';
2122

22-
2323
describe('MatMonthView', () => {
2424
let dir: {value: Direction};
2525

src/lib/datepicker/multi-year-view.spec.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {Direction, Directionality} from '@angular/cdk/bidi';
12
import {
23
DOWN_ARROW,
34
END,
@@ -8,14 +9,14 @@ import {
89
RIGHT_ARROW,
910
UP_ARROW,
1011
} from '@angular/cdk/keycodes';
11-
import {By} from '@angular/platform-browser';
12+
import {dispatchFakeEvent, dispatchKeyboardEvent} from '@angular/cdk/testing';
1213
import {Component, ViewChild} from '@angular/core';
13-
import {ComponentFixture, TestBed, async} from '@angular/core/testing';
14-
import {Direction, Directionality} from '@angular/cdk/bidi';
15-
import {JAN, MatNativeDateModule} from '@angular/material/core';
14+
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
15+
import {MatNativeDateModule} from '@angular/material/core';
16+
import {JAN} from '@angular/material/testing';
17+
import {By} from '@angular/platform-browser';
1618
import {MatCalendarBody} from './calendar-body';
1719
import {MatMultiYearView, yearsPerPage, yearsPerRow} from './multi-year-view';
18-
import {dispatchKeyboardEvent, dispatchFakeEvent} from '@angular/cdk/testing';
1920

2021
describe('MatMultiYearView', () => {
2122
let dir: {value: Direction};

src/lib/datepicker/year-view.spec.ts

+2-15
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,12 @@ import {
1212
import {dispatchFakeEvent, dispatchKeyboardEvent} from '@angular/cdk/testing';
1313
import {Component, ViewChild} from '@angular/core';
1414
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
15-
import {
16-
AUG,
17-
DEC,
18-
FEB,
19-
JAN,
20-
JUL,
21-
JUN,
22-
MAR,
23-
MatNativeDateModule,
24-
MAY,
25-
NOV,
26-
OCT,
27-
SEP
28-
} from '@angular/material/core';
15+
import {MatNativeDateModule} from '@angular/material/core';
16+
import {AUG, DEC, FEB, JAN, JUL, JUN, MAR, MAY, NOV, OCT, SEP} from '@angular/material/testing';
2917
import {By} from '@angular/platform-browser';
3018
import {MatCalendarBody} from './calendar-body';
3119
import {MatYearView} from './year-view';
3220

33-
3421
describe('MatYearView', () => {
3522
let dir: {value: Direction};
3623

src/lib/slide-toggle/BUILD.bazel

+1-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ ng_test_library(
4646
"//src/cdk/bidi",
4747
"//src/cdk/observers",
4848
"//src/cdk/testing",
49-
# TODO(devversion): move gesture test config out of slider.
50-
"//src/lib/slider",
49+
"//src/lib/testing",
5150
":slide-toggle",
5251
]
5352
)

src/lib/slide-toggle/slide-toggle.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {BidiModule, Direction} from '@angular/cdk/bidi';
12
import {MutationObserverFactory} from '@angular/cdk/observers';
23
import {dispatchFakeEvent} from '@angular/cdk/testing';
34
import {Component} from '@angular/core';
@@ -10,11 +11,10 @@ import {
1011
tick,
1112
} from '@angular/core/testing';
1213
import {FormControl, FormsModule, NgModel, ReactiveFormsModule} from '@angular/forms';
14+
import {TestGestureConfig} from '@angular/material/testing';
1315
import {By, HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';
14-
import {BidiModule, Direction} from '@angular/cdk/bidi';
15-
import {TestGestureConfig} from '../slider/test-gesture-config';
16-
import {MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS} from './slide-toggle-config';
1716
import {MatSlideToggle, MatSlideToggleChange, MatSlideToggleModule} from './index';
17+
import {MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS} from './slide-toggle-config';
1818

1919
describe('MatSlideToggle without forms', () => {
2020
let gestureConfig: TestGestureConfig;

src/lib/slider/BUILD.bazel

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ ng_test_library(
4747
"//src/cdk/bidi",
4848
"//src/cdk/keycodes",
4949
"//src/cdk/testing",
50+
"//src/lib/testing",
5051
":slider",
5152
]
5253
)

src/lib/slider/slider.spec.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@ import {
1111
UP_ARROW,
1212
} from '@angular/cdk/keycodes';
1313
import {
14+
createMouseEvent,
15+
dispatchEvent,
1416
dispatchFakeEvent,
1517
dispatchKeyboardEvent,
1618
dispatchMouseEvent,
17-
createMouseEvent,
18-
dispatchEvent,
1919
} from '@angular/cdk/testing';
20-
import {Component, DebugElement, ViewChild, Type} from '@angular/core';
21-
import {ComponentFixture, TestBed, fakeAsync, flush} from '@angular/core/testing';
20+
import {Component, DebugElement, Type, ViewChild} from '@angular/core';
21+
import {ComponentFixture, fakeAsync, flush, TestBed} from '@angular/core/testing';
2222
import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms';
23+
import {TestGestureConfig} from '@angular/material/testing';
2324
import {By, HAMMER_GESTURE_CONFIG} from '@angular/platform-browser';
2425
import {MatSlider, MatSliderModule} from './index';
25-
import {TestGestureConfig} from './test-gesture-config';
2626

2727
describe('MatSlider', () => {
2828
let gestureConfig: TestGestureConfig;

src/lib/testing/BUILD.bazel

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package(default_visibility=["//visibility:public"])
2+
3+
load("//tools:defaults.bzl", "ng_module")
4+
5+
ng_module(
6+
name = "testing",
7+
module_name = "@angular/material/testing",
8+
srcs = glob(["**/*.ts"]),
9+
deps = [
10+
"@angular//packages/core",
11+
"//src/lib/core",
12+
],
13+
)

src/lib/testing/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Note that this is not an entry-point. This directory is just used to share testing logic
2+
that is specific to Angular Material.

src/lib/testing/index.ts

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* @license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
9+
export * from './month-constants';
10+
export * from './test-gesture-config';

src/material-moment-adapter/BUILD.bazel

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ ng_module(
1111
deps = [
1212
"@angular//packages/core",
1313
"@matdeps//moment",
14-
"//src/lib/core"
14+
"//src/lib/core",
15+
"//src/lib/testing",
1516
],
1617
# Explicitly specify the tsconfig that is also used by Gulp. We need to explicitly use this
1718
# tsconfig because in order to import Moment with TypeScript, we need some special options

src/material-moment-adapter/adapter/moment-date-adapter.spec.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88

99
import {LOCALE_ID} from '@angular/core';
1010
import {async, inject, TestBed} from '@angular/core/testing';
11-
import {DateAdapter, DEC, FEB, JAN, MAR, MAT_DATE_LOCALE} from '@angular/material/core';
12-
import * as moment from 'moment';
11+
import {DateAdapter, MAT_DATE_LOCALE} from '@angular/material/core';
12+
import {DEC, FEB, JAN, MAR} from '@angular/material/testing';
1313
import {MomentDateModule} from './index';
14-
import {MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS} from './moment-date-adapter';
14+
import {MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter} from './moment-date-adapter';
1515

16+
import * as moment from 'moment';
1617

1718
describe('MomentDateAdapter', () => {
1819
let adapter: MomentDateAdapter;

test/karma-system-config.js

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ System.config({
9393
'@angular/material/stepper': 'dist/packages/material/stepper/index.js',
9494
'@angular/material/table': 'dist/packages/material/table/index.js',
9595
'@angular/material/tabs': 'dist/packages/material/tabs/index.js',
96+
'@angular/material/testing': 'dist/packages/material/testing/index.js',
9697
'@angular/material/toolbar': 'dist/packages/material/toolbar/index.js',
9798
'@angular/material/tooltip': 'dist/packages/material/tooltip/index.js',
9899
'@angular/material/tree': 'dist/packages/material/tree/index.js',

0 commit comments

Comments
 (0)