86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			86 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @license
							 | 
						||
| 
								 | 
							
								 * Copyright Google Inc. All Rights Reserved.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Use of this source code is governed by an MIT-style license that can be
							 | 
						||
| 
								 | 
							
								 * found in the LICENSE file at https://angular.io/license
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								import {CommonModule} from '@angular/common';
							 | 
						||
| 
								 | 
							
								import {Component, NgModule, ViewEncapsulation} from '@angular/core';
							 | 
						||
| 
								 | 
							
								import {TestBed} from '@angular/core/testing';
							 | 
						||
| 
								 | 
							
								import {describe, it} from '@angular/core/testing/testing_internal';
							 | 
						||
| 
								 | 
							
								import {BrowserModule} from '@angular/platform-browser';
							 | 
						||
| 
								 | 
							
								import {By} from '@angular/platform-browser/src/dom/debug/by';
							 | 
						||
| 
								 | 
							
								import {browserDetection} from '@angular/platform-browser/testing/browser_util';
							 | 
						||
| 
								 | 
							
								import {expect} from '@angular/platform-browser/testing/matchers';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function main() {
							 | 
						||
| 
								 | 
							
								  describe('DomRenderer', () => {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    beforeEach(() => TestBed.configureTestingModule({imports: [BrowserModule, TestModule]}));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // other browsers don't support shadow dom
							 | 
						||
| 
								 | 
							
								    if (browserDetection.isChromeDesktop) {
							 | 
						||
| 
								 | 
							
								      it('should add only styles with native encapsulation to the shadow DOM', () => {
							 | 
						||
| 
								 | 
							
								        const fixture = TestBed.createComponent(SomeApp);
							 | 
						||
| 
								 | 
							
								        fixture.detectChanges();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const cmp = fixture.debugElement.query(By.css('cmp-native')).nativeElement;
							 | 
						||
| 
								 | 
							
								        const styles = cmp.shadowRoot.querySelectorAll('style');
							 | 
						||
| 
								 | 
							
								        expect(styles.length).toBe(1);
							 | 
						||
| 
								 | 
							
								        expect(styles[0]).toHaveText('.cmp-native { color: red; }');
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Component({
							 | 
						||
| 
								 | 
							
								  selector: 'cmp-native',
							 | 
						||
| 
								 | 
							
								  template: ``,
							 | 
						||
| 
								 | 
							
								  styles: [`.cmp-native { color: red; }`],
							 | 
						||
| 
								 | 
							
								  encapsulation: ViewEncapsulation.Native
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								class CmpEncapsulationNative {
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Component({
							 | 
						||
| 
								 | 
							
								  selector: 'cmp-emulated',
							 | 
						||
| 
								 | 
							
								  template: ``,
							 | 
						||
| 
								 | 
							
								  styles: [`.cmp-emulated { color: blue; }`],
							 | 
						||
| 
								 | 
							
								  encapsulation: ViewEncapsulation.Emulated
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								class CmpEncapsulationEmulated {
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Component({
							 | 
						||
| 
								 | 
							
								  selector: 'cmp-none',
							 | 
						||
| 
								 | 
							
								  template: ``,
							 | 
						||
| 
								 | 
							
								  styles: [`.cmp-none { color: yellow; }`],
							 | 
						||
| 
								 | 
							
								  encapsulation: ViewEncapsulation.None
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								class CmpEncapsulationNone {
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Component({
							 | 
						||
| 
								 | 
							
								  selector: 'some-app',
							 | 
						||
| 
								 | 
							
								  template: `
							 | 
						||
| 
								 | 
							
									  <cmp-native></cmp-native>
							 | 
						||
| 
								 | 
							
									  <cmp-emulated></cmp-emulated>
							 | 
						||
| 
								 | 
							
									  <cmp-none></cmp-none>
							 | 
						||
| 
								 | 
							
								  `,
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								export class SomeApp {
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@NgModule({
							 | 
						||
| 
								 | 
							
								  declarations: [
							 | 
						||
| 
								 | 
							
								    SomeApp,
							 | 
						||
| 
								 | 
							
								    CmpEncapsulationNative,
							 | 
						||
| 
								 | 
							
								    CmpEncapsulationEmulated,
							 | 
						||
| 
								 | 
							
								    CmpEncapsulationNone,
							 | 
						||
| 
								 | 
							
								  ],
							 | 
						||
| 
								 | 
							
								  imports: [CommonModule]
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								class TestModule {
							 | 
						||
| 
								 | 
							
								}
							 |