@@ -97,10 +97,10 @@ const getClassNamesFromSelectorsByHashes = (classNames, hashes) => {
97
97
return [ ...classNamesIncludingFromSelectors ] ;
98
98
} ;
99
99
100
- const replaceClassNames = ( result , classNames , style ) =>
100
+ const replaceClassNames = ( result , classNames , style , classNameFormatter ) =>
101
101
classNames
102
102
. filter ( ( className ) => style . includes ( className ) )
103
- . reduce ( ( acc , className , index ) => acc . replace ( new RegExp ( className , 'g' ) , `c ${ index ++ } ` ) , result ) ;
103
+ . reduce ( ( acc , className , index ) => acc . replace ( new RegExp ( className , 'g' ) , classNameFormatter ( index ++ ) ) , result ) ;
104
104
105
105
const stripUnreferencedClassNames = ( result , classNames ) =>
106
106
classNames . reduce ( ( acc , className ) => acc . replace ( new RegExp ( `${ className } \\s?` , 'g' ) , '' ) , result ) ;
@@ -111,7 +111,26 @@ const replaceHashes = (result, hashes) =>
111
111
result
112
112
) ;
113
113
114
+ const serializerOptionDefaults = {
115
+ addStyles : true ,
116
+ classNameFormatter : ( index ) => `c${ index } `
117
+ } ;
118
+ let serializerOptions = serializerOptionDefaults ;
119
+
114
120
module . exports = {
121
+
122
+ /**
123
+ * Configure jest-styled-components/serializer
124
+ *
125
+ * @param {{ addStyles?: boolean, classNameFormatter?: (index: number) => string } } options
126
+ */
127
+ setStyleSheetSerializerOptions ( options = { } ) {
128
+ serializerOptions = {
129
+ ...serializerOptionDefaults ,
130
+ ...options
131
+ } ;
132
+ } ,
133
+
115
134
test ( val ) {
116
135
return (
117
136
val &&
@@ -136,9 +155,9 @@ module.exports = {
136
155
const classNamesToReplace = getClassNamesFromSelectorsByHashes ( classNames , hashes ) ;
137
156
const code = print ( val ) ;
138
157
139
- let result = `${ style } ${ style ? '\n\n' : '' } ${ code } ` ;
158
+ let result = serializerOptions . addStyles ? `${ style } ${ style ? '\n\n' : '' } ${ code } ` : code ;
140
159
result = stripUnreferencedClassNames ( result , unreferencedClassNames ) ;
141
- result = replaceClassNames ( result , classNamesToReplace , style ) ;
160
+ result = replaceClassNames ( result , classNamesToReplace , style , serializerOptions . classNameFormatter ) ;
142
161
result = replaceHashes ( result , hashes ) ;
143
162
144
163
return result ;
0 commit comments