@@ -87,10 +87,10 @@ const getClassNamesFromSelectorsByHashes = (classNames, hashes) => {
87
87
return [ ...classNamesIncludingFromSelectors ] ;
88
88
} ;
89
89
90
- const replaceClassNames = ( result , classNames , style ) =>
90
+ const replaceClassNames = ( result , classNames , style , classNameFormatter ) =>
91
91
classNames
92
92
. filter ( className => style . includes ( className ) )
93
- . reduce ( ( acc , className , index ) => acc . replace ( new RegExp ( className , 'g' ) , `c ${ index ++ } ` ) , result ) ;
93
+ . reduce ( ( acc , className , index ) => acc . replace ( new RegExp ( className , 'g' ) , classNameFormatter ( index ++ ) ) , result ) ;
94
94
95
95
const stripUnreferencedClassNames = ( result , classNames ) =>
96
96
classNames
@@ -102,7 +102,26 @@ const replaceHashes = (result, hashes) =>
102
102
result
103
103
) ;
104
104
105
+ const serializerOptionDefaults = {
106
+ addStyles : true ,
107
+ classNameFormatter : ( index ) => `c${ index } `
108
+ } ;
109
+ let serializerOptions = serializerOptionDefaults ;
110
+
105
111
module . exports = {
112
+
113
+ /**
114
+ * Configure jest-styled-components/serializer
115
+ *
116
+ * @param {{ addStyles?: boolean, classNameFormatter?: (index: number) => string } } options
117
+ */
118
+ setStyleSheetSerializerOptions ( options = { } ) {
119
+ serializerOptions = {
120
+ ...serializerOptionDefaults ,
121
+ ...options
122
+ } ;
123
+ } ,
124
+
106
125
test ( val ) {
107
126
return (
108
127
val &&
@@ -127,9 +146,9 @@ module.exports = {
127
146
const classNamesToReplace = getClassNamesFromSelectorsByHashes ( classNames , hashes ) ;
128
147
const code = print ( val ) ;
129
148
130
- let result = `${ style } ${ style ? '\n\n' : '' } ${ code } ` ;
149
+ let result = serializerOptions . addStyles ? `${ style } ${ style ? '\n\n' : '' } ${ code } ` : code ;
131
150
result = stripUnreferencedClassNames ( result , unreferencedClassNames ) ;
132
- result = replaceClassNames ( result , classNamesToReplace , style ) ;
151
+ result = replaceClassNames ( result , classNamesToReplace , style , serializerOptions . classNameFormatter ) ;
133
152
result = replaceHashes ( result , hashes ) ;
134
153
135
154
return result ;
0 commit comments