From 10b0f66d03dc2924d6db878c5ef95aab1ae750bc Mon Sep 17 00:00:00 2001 From: mgechev Date: Wed, 15 Jun 2016 10:48:34 +0300 Subject: [PATCH] fix(AppShell): make CSS class selectors case insensitive Fix #64 --- .../shell-parser/node-matcher/css-node-matcher.spec.ts | 9 +++++++++ .../app/shell-parser/node-matcher/css-node-matcher.ts | 3 ++- app-shell/src/app/shell-parser/shell-parser.spec.ts | 2 -- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app-shell/src/app/shell-parser/node-matcher/css-node-matcher.spec.ts b/app-shell/src/app/shell-parser/node-matcher/css-node-matcher.spec.ts index 88d9bd0..2f854f2 100644 --- a/app-shell/src/app/shell-parser/node-matcher/css-node-matcher.spec.ts +++ b/app-shell/src/app/shell-parser/node-matcher/css-node-matcher.spec.ts @@ -59,6 +59,15 @@ describe('CssNodeMatcher', () => { expect(complexSelector.match(node)).toBe(true); }); + it('should match case insensitive class selector', () => { + const classSelector = CssSelector.parse('.DIALOG'); + const selector = new CssNodeMatcher(classSelector); + expect(selector.match(node)).toBe(true); + const complexClassSelector = CssSelector.parse('.dialog.modal--drop'); + const complexSelector = new CssNodeMatcher(complexClassSelector); + expect(complexSelector.match(node)).toBe(true); + }); + it('should match element by id', () => { const idSelector = CssSelector.parse('#dialog-id'); const selector = new CssNodeMatcher(idSelector); diff --git a/app-shell/src/app/shell-parser/node-matcher/css-node-matcher.ts b/app-shell/src/app/shell-parser/node-matcher/css-node-matcher.ts index e2da630..c5b4c90 100644 --- a/app-shell/src/app/shell-parser/node-matcher/css-node-matcher.ts +++ b/app-shell/src/app/shell-parser/node-matcher/css-node-matcher.ts @@ -48,7 +48,8 @@ export class CssNodeMatcher extends NodeMatcher { if (!classAttr) { return false; } - const classMap = classAttr.value.split(' ') + const classMap = classAttr.value + .toLowerCase().split(' ') .reduce((accum: any, val: string) => { accum[val] = true; return accum; diff --git a/app-shell/src/app/shell-parser/shell-parser.spec.ts b/app-shell/src/app/shell-parser/shell-parser.spec.ts index 3ab0e2a..5c46e68 100644 --- a/app-shell/src/app/shell-parser/shell-parser.spec.ts +++ b/app-shell/src/app/shell-parser/shell-parser.spec.ts @@ -1,7 +1,6 @@ import { beforeEach, it, - xit, describe, expect, inject @@ -131,7 +130,6 @@ describe('ShellParserImpl', () => { describe('parseDoc', () => { it('should strip with default selector', (done: any) => { - debugger; const mockScope = new MockWorkerScope(); const parser = createMockedWorker(mockScope); const response = new MockResponse(prerenderedTemplate);