UNPKG

22.9 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, [compareMap])};\n }\n };\n\n function compareMap(actual: any, expected: any) {\n if (actual instanceof Map) {\n let pass = actual.size === expected.size;\n if (pass) {\n actual.forEach((v: any, k: any) => {\n pass = pass && util.equals(v, expected.get(k));\n });\n }\n return pass;\n } else {\n return undefined;\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