@@ -4,6 +4,8 @@ import Observable from 'zen-observable'
44import Enzyme , { mount } from 'enzyme'
55import Adapter from 'enzyme-adapter-react-16'
66
7+ import escapeClassName from '../utils/escapeClassName'
8+
79import {
810 getCss ,
911 removeWhitespace
@@ -25,8 +27,8 @@ const mockNameGenerators = () => {
2527 const generateTagName = require ( '../utils/generateTagName' ) . default
2628 const createGenerateClassName = require ( 'jss/lib/utils/createGenerateClassName' ) . default
2729
28- // $FlowIgnore
29- generateTagName . mockImplementation ( ( tagName : string ) => `${ tagName } -${ ++ styledCounter } ` )
30+ // $FlowIgnore there is now mockImplementation in declaration
31+ generateTagName . mockImplementation ( ( tagName : string ) => `${ escapeClassName ( tagName ) } -${ ++ styledCounter } ` )
3032 createGenerateClassName . mockImplementation ( ( ) => rule => `${ rule . key } -id` )
3133}
3234
@@ -188,6 +190,26 @@ describe('functional tests', () => {
188190 assertSheet ( styled . sheet )
189191 } )
190192
193+ it ( 'should escape name' , ( ) => {
194+ const Comp = ( { className} : { className : string } ) => (
195+ < div className = { className } > Container</ div >
196+ )
197+
198+ Comp . displayName = '(Comp.name)'
199+
200+ const Container = styled ( Comp ) ( {
201+ color : 'red' ,
202+ } )
203+
204+ const wrapper = mount ( < Container /> )
205+ const { sheet} = styled
206+
207+ expect ( sheet . rules . index [ 0 ] . selectorText ) . toBe ( '.\\(Comp\\.name\\)-1-id' )
208+ assertSheet ( sheet )
209+
210+ wrapper . unmount ( )
211+ } )
212+
191213 it ( 'should use .name' , ( ) => {
192214 const StyledTest = styled ( props => < h1 { ...props } > test</ h1 > ) ( {
193215 padding : 10 ,
0 commit comments