UNPKG

23.1 kBSource Map (JSON)View Raw
1{"version":3,"file":"angular-flex-layout-_private-utils-testing.mjs","sources":["../../../../projects/libs/flex-layout/_private-utils/testing/dom-tools.ts","../../../../projects/libs/flex-layout/_private-utils/testing/custom-matchers.ts","../../../../projects/libs/flex-layout/_private-utils/testing/helpers.ts","../../../../projects/libs/flex-layout/_private-utils/testing/index.ts","../../../../projects/libs/flex-layout/_private-utils/testing/angular-flex-layout-_private-utils-testing.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Exported DOM accessor utility functions\n */\nexport const _dom = {\n hasStyle,\n getDistributedNodes,\n getShadowRoot,\n getText,\n getStyle,\n childNodes,\n childNodesAsList,\n hasClass,\n hasAttribute,\n getAttribute,\n hasShadowRoot,\n isCommentNode,\n isElementNode,\n isPresent,\n isShadowRoot,\n tagName,\n lastElementChild\n};\n\n// ******************************************************************************************\n// These functions are cloned from\n// * @angular/platform-browser/src/browser/GenericBrowserDomAdapter\n// and are to be used ONLY internally in custom-matchers.ts and Unit Tests\n// ******************************************************************************************\n\nfunction getStyle(element: any, stylename: string): string {\n return element.style[stylename];\n}\n\nfunction hasStyle(element: any,\n styleName: string,\n styleValue: string = '',\n inlineOnly = true): boolean {\n let value = getStyle(element, styleName) || '';\n if (!value && !inlineOnly) {\n // Search stylesheets\n value = typeof getComputedStyle === 'function' &&\n getComputedStyle(element).getPropertyValue(styleName) || '';\n }\n return styleValue ? value == styleValue : value.length > 0;\n}\n\nfunction getDistributedNodes(el: HTMLElement): Node[] {\n return (<any>el).getDistributedNodes();\n}\n\nfunction getShadowRoot(el: HTMLElement): DocumentFragment {\n return (<any>el).shadowRoot;\n}\n\nfunction getText(el: Node): string {\n return el.textContent || '';\n}\n\nfunction childNodesAsList(el: Node): any[] {\n const list = el.childNodes;\n const res = new Array(list.length);\n for (let i = 0; i < list.length; i++) {\n res[i] = list[i];\n }\n return res;\n}\n\nfunction hasClass(element: any, className: string): boolean {\n return element.classList.contains(className);\n}\n\nfunction hasAttribute(element: any, attributeName: string): boolean {\n return element.hasAttribute(attributeName);\n}\n\nfunction getAttribute(element: any, attributeName: string): string {\n return element.getAttribute(attributeName);\n}\n\nfunction childNodes(el: any): Node[] {\n return el.childNodes;\n}\n\nfunction hasShadowRoot(node: any): boolean {\n return isPresent(node.shadowRoot) && node instanceof HTMLElement;\n}\n\nfunction isCommentNode(node: Node): boolean {\n return node.nodeType === Node.COMMENT_NODE;\n}\n\nfunction isElementNode(node: Node): boolean {\n return node.nodeType === Node.ELEMENT_NODE;\n}\n\nfunction isShadowRoot(node: any): boolean {\n return node instanceof DocumentFragment;\n}\n\nfunction isPresent(obj: any): boolean {\n return obj != null;\n}\n\nfunction tagName(element: any): string {\n return element.tagName;\n}\n\n// ******************************************************************************************\n// These functions are part of the DOM API\n// and are to be used ONLY internally in custom-matchers.ts and Unit Tests\n// ******************************************************************************************\n\nfunction lastElementChild(element: any): Node|null {\n return element.lastElementChild;\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\ndeclare var global: any;\nconst _global = <any>(typeof window === 'undefined' ? global : window);\n\nimport {_dom as _} from './dom-tools';\n\nimport {applyCssPrefixes, extendObject, } from '@angular/flex-layout/_private-utils';\nimport {StyleUtils} from '@angular/flex-layout/core';\n\nexport const expect: (actual: any) => NgMatchers = <any> _global.expect;\n\n/**\n * Jasmine matchers that check Angular specific conditions.\n */\nexport interface NgMatchers extends jasmine.Matchers<any> {\n /**\n * Expect the element to have exactly the given text.\n *\n * ## Example\n *\n * {@example testing/ts/matchers.ts region='toHaveText'}\n */\n toHaveText(expected: string): boolean;\n\n /**\n * Compare key:value pairs as matching EXACTLY\n */\n toHaveMap(expected: { [k: string]: string }): boolean;\n\n /**\n * Expect the element to have the given CSS class.\n *\n * ## Example\n *\n * {@example testing/ts/matchers.ts region='toHaveCssClass'}\n */\n toHaveCssClass(expected: string): boolean;\n\n /**\n * Expect the element to have the given pairs of attribute name and attribute value\n */\n toHaveAttributes(expected: { [k: string]: string }): boolean;\n\n /**\n * Expect the element to have the given CSS styles injected INLINE\n *\n * ## Example\n *\n * {@example testing/ts/matchers.ts region='toHaveStyle'}\n */\n toHaveStyle(expected: { [k: string]: string } | string): boolean;\n\n /**\n * Expect the element to have the given CSS inline OR computed styles.\n *\n * ## Example\n *\n * {@example testing/ts/matchers.ts region='toHaveStyle'}\n */\n toHaveStyle(expected: { [k: string]: string } | string): boolean;\n\n /**\n * Invert the matchers.\n */\n not: NgMatchers;\n}\n\n/**\n * NOTE: These custom JASMINE Matchers are used only\n * in the Karma/Jasmine testing for the Layout Directives\n * in `src/lib/flex/api`\n */\nexport const customMatchers: jasmine.CustomMatcherFactories = {\n\n toEqual: function (util) {\n return {\n compare: function (actual: any, expected: any) {\n return {pass: util.equals(actual, expected)};\n }\n };\n },\n\n toHaveText: function () {\n return {\n compare: function (actual: any, expectedText: string) {\n const actualText = elementText(actual);\n return {\n pass: actualText == expectedText,\n get message() {\n return 'Expected ' + actualText + ' to be equal to ' + expectedText;\n }\n };\n }\n };\n },\n\n toHaveCssClass: function () {\n return {compare: buildError(false), negativeCompare: buildError(true)};\n\n function buildError(isNot: boolean) {\n return function (actual: any, className: string) {\n return {\n pass: _.hasClass(actual, className) == !isNot,\n get message() {\n return `\n Expected ${actual.outerHTML} ${isNot ? 'not ' : ''}\n to contain the CSS class '${className}'\n `;\n }\n };\n };\n }\n },\n\n toHaveMap: function () {\n return {\n compare: function (actual: { [k: string]: string }, map: { [k: string]: string }) {\n let allPassed: boolean;\n allPassed = Object.keys(map).length !== 0;\n Object.keys(map).forEach(key => {\n allPassed = allPassed && (actual[key] === map[key]);\n });\n\n return {\n pass: allPassed,\n get message() {\n return `\n Expected ${JSON.stringify(actual)} ${!allPassed ? ' ' : 'not '} to contain the\n '${JSON.stringify(map)}'\n `;\n }\n };\n }\n };\n },\n\n toHaveAttributes: function () {\n return {\n compare: function (actual: any, map: { [k: string]: string }) {\n let allPassed: boolean;\n let attributeNames = Object.keys(map);\n allPassed = attributeNames.length !== 0;\n attributeNames.forEach(name => {\n allPassed = allPassed && _.hasAttribute(actual, name)\n && _.getAttribute(actual, name) === map[name];\n });\n return {\n pass: allPassed,\n get message() {\n return `\n Expected ${actual.outerHTML} ${allPassed ? 'not ' : ''} attributes to contain\n '${JSON.stringify(map)}'\n `;\n }\n };\n }\n };\n },\n\n /**\n * Check element's inline styles only\n */\n toHaveStyle: function () {\n return {\n compare: buildCompareStyleFunction(true)\n };\n },\n\n\n /**\n * Check element's css stylesheet only (if not present inline)\n */\n toHaveCSS: function () {\n return {\n compare: buildCompareStyleFunction(false)\n };\n }\n\n};\n\n/**\n * Curried value to function to check styles that are inline or in a stylesheet for the\n * specified DOM element.\n */\nfunction buildCompareStyleFunction(inlineOnly = true) {\n return function (actual: any, styles: { [k: string]: string } | string, styler: StyleUtils) {\n const found = {};\n const styleMap: {[k: string]: string} = {};\n\n if (typeof styles === 'string') {\n styleMap[styles] = '';\n } else {\n Object.assign(styleMap, styles);\n }\n\n let allPassed = Object.keys(styleMap).length !== 0;\n Object.keys(styleMap).forEach(prop => {\n let {elHasStyle, current} = hasPrefixedStyles(actual, prop, styleMap[prop], inlineOnly,\n styler);\n allPassed = allPassed && elHasStyle;\n if (!elHasStyle) {\n extendObject(found, current);\n }\n });\n\n return {\n pass: allPassed,\n get message() {\n const expectedValueStr = (typeof styles === 'string') ? styleMap :\n JSON.stringify(styleMap, null, 2);\n const foundValueStr = inlineOnly ? actual.outerHTML : JSON.stringify(found);\n return `\n Expected ${foundValueStr}${!allPassed ? '' : ' not'} to contain the\n CSS ${typeof styles === 'string' ? 'property' : 'styles'} '${expectedValueStr}'\n `;\n }\n };\n };\n}\n\n/**\n * Validate presence of requested style or use fallback\n * to possible `prefixed` styles. Useful when some browsers\n * (Safari, IE, etc) will use prefixed style instead of defaults.\n */\nfunction hasPrefixedStyles(actual: HTMLElement,\n key: string,\n value: string,\n inlineOnly: boolean,\n styler: StyleUtils) {\n const current = {};\n\n if (value === '*') {\n return {elHasStyle: styler.lookupStyle(actual, key, inlineOnly) !== '', current};\n }\n\n value = value.trim();\n let elHasStyle = styler.lookupStyle(actual, key, inlineOnly) === value;\n if (!elHasStyle) {\n let prefixedStyles = applyCssPrefixes({[key]: value});\n Object.keys(prefixedStyles).forEach(prop => {\n // Search for optional prefixed values\n elHasStyle = elHasStyle ||\n styler.lookupStyle(actual, prop, inlineOnly) === prefixedStyles[prop];\n });\n }\n // Return BOTH confirmation and current computed key values (if confirmation == false)\n return {elHasStyle, current};\n}\n\nfunction elementText(n: any): string {\n const hasNodes = (m: any) => {\n const children = _.childNodes(m);\n return children && children['length'];\n };\n\n if (n instanceof Array) {\n return n.map(elementText).join('');\n }\n\n if (_.isCommentNode(n)) {\n return '';\n }\n\n if (_.isElementNode(n) && _.tagName(n) == 'CONTENT') {\n return elementText(Array.prototype.slice.apply(_.getDistributedNodes(n)));\n }\n\n if (_.hasShadowRoot(n)) {\n return elementText(_.childNodesAsList(_.getShadowRoot(n)));\n }\n\n if (hasNodes(n)) {\n return elementText(_.childNodesAsList(n));\n }\n\n return _.getText(n);\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Type, DebugElement} from '@angular/core';\nimport {ComponentFixture, TestBed} from '@angular/core/testing';\nimport {By} from '@angular/platform-browser';\nimport {extendObject} from '@angular/flex-layout/_private-utils';\n\nexport type ComponentClazzFn = () => Type<any>;\n\n/**\n * Function generator that captures a Component Type accessor and enables\n * `createTestComponent()` to be reusable for *any* captured Component class.\n */\nexport function makeCreateTestComponent(getClass: ComponentClazzFn) {\n let componentAny: Type<any>;\n\n // Return actual `createTestComponent()` function\n return function createTestComponent(template: string, styles?: any): ComponentFixture<Type<any>> {\n if (!componentAny) {\n // Defer access to Component class to enable metadata to be configured properly...\n componentAny = getClass();\n }\n return TestBed\n .overrideComponent(componentAny, {\n set: {\n template: template,\n styles: styles || [],\n }\n })\n .createComponent(componentAny);\n };\n}\n\n/**\n *\n */\nexport function expectNativeEl(fixture: ComponentFixture<any>, instanceOptions ?: any): any {\n extendObject(fixture.componentInstance, instanceOptions || {});\n fixture.detectChanges();\n return expect(fixture.debugElement.children[0].nativeElement);\n}\n\n/**\n *\n */\nexport function expectEl(debugEl: DebugElement): any {\n return expect(debugEl.nativeElement);\n}\n\n\nexport function queryFor(fixture: ComponentFixture<any>, selector: string): DebugElement[] {\n return fixture.debugElement.queryAll(By.css(selector));\n}\n\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './custom-matchers';\nexport * from './dom-tools';\nexport * from './helpers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["expect","_"],"mappings":"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"}
\No newline at end of file