@@ -1181,4 +1181,126 @@ describe('ProductsModule - Critical CRUD Operations', () => {
11811181 ) . rejects . toThrow ( AuthenticationError ) ;
11821182 } ) ;
11831183 } ) ;
1184+
1185+ // ============================================================================
1186+ // v3.6.2 Regression: kizMarked marking code field
1187+ // Source: WB API update 2026-04-09 — mandatory marking code confirmation
1188+ // Quinn's rule: every type change ships with a test that fails if the type is removed
1189+ // ============================================================================
1190+
1191+ describe ( 'kizMarked marking code field (v3.6.2)' , ( ) => {
1192+ it ( 'should accept kizMarked: true in createCardsUpload request' , async ( ) => {
1193+ mockClient . post . mockResolvedValue ( { data : { } , error : false , errorText : '' } ) ;
1194+
1195+ await productsModule . createCardsUpload ( [
1196+ {
1197+ subjectID : 105 ,
1198+ variants : [
1199+ {
1200+ vendorCode : 'KIZ-001' ,
1201+ sizes : [ { techSize : '42' , skus : [ '1234567890123' ] } ] ,
1202+ characteristics : [ { id : 1 , value : 'Test' } ] ,
1203+ kizMarked : true ,
1204+ } ,
1205+ ] ,
1206+ } ,
1207+ ] ) ;
1208+
1209+ expect ( mockClient . post ) . toHaveBeenCalledWith (
1210+ 'https://content-api.wildberries.ru/content/v2/cards/upload' ,
1211+ expect . arrayContaining ( [
1212+ expect . objectContaining ( {
1213+ variants : expect . arrayContaining ( [ expect . objectContaining ( { kizMarked : true } ) ] ) ,
1214+ } ) ,
1215+ ] ) ,
1216+ expect . anything ( )
1217+ ) ;
1218+ } ) ;
1219+
1220+ it ( 'should accept kizMarked: true in createCardsUpdate request' , async ( ) => {
1221+ mockClient . post . mockResolvedValue ( { data : { } , error : false , errorText : '' } ) ;
1222+
1223+ await productsModule . createCardsUpdate ( [
1224+ {
1225+ nmID : 12345 ,
1226+ vendorCode : 'KIZ-UPD' ,
1227+ sizes : [ { techSize : '42' } ] ,
1228+ kizMarked : true ,
1229+ } ,
1230+ ] ) ;
1231+
1232+ expect ( mockClient . post ) . toHaveBeenCalledWith (
1233+ 'https://content-api.wildberries.ru/content/v2/cards/update' ,
1234+ expect . arrayContaining ( [ expect . objectContaining ( { kizMarked : true } ) ] ) ,
1235+ expect . anything ( )
1236+ ) ;
1237+ } ) ;
1238+
1239+ it ( 'should accept kizMarked: true in createUploadAdd request' , async ( ) => {
1240+ mockClient . post . mockResolvedValue ( { data : { } , error : false , errorText : '' } ) ;
1241+
1242+ await productsModule . createUploadAdd ( {
1243+ imtID : 98765 ,
1244+ cardsToAdd : [
1245+ {
1246+ vendorCode : 'KIZ-ADD' ,
1247+ sizes : [ { techSize : '44' , skus : [ '9999999999999' ] } ] ,
1248+ characteristics : [ { id : 1 , value : 'Test' } ] ,
1249+ kizMarked : true ,
1250+ } ,
1251+ ] ,
1252+ } ) ;
1253+
1254+ expect ( mockClient . post ) . toHaveBeenCalledWith (
1255+ 'https://content-api.wildberries.ru/content/v2/cards/upload/add' ,
1256+ expect . objectContaining ( {
1257+ cardsToAdd : expect . arrayContaining ( [ expect . objectContaining ( { kizMarked : true } ) ] ) ,
1258+ } ) ,
1259+ expect . anything ( )
1260+ ) ;
1261+ } ) ;
1262+
1263+ it ( 'should expose kizMarked and needKiz on getCardsList response' , async ( ) => {
1264+ const mockResponse = {
1265+ cards : [
1266+ {
1267+ nmID : 12345 ,
1268+ vendorCode : 'KIZ-001' ,
1269+ needKiz : true ,
1270+ kizMarked : true ,
1271+ } ,
1272+ ] ,
1273+ cursor : { total : 1 } ,
1274+ } ;
1275+ mockClient . post . mockResolvedValue ( mockResponse ) ;
1276+
1277+ const result = await productsModule . getCardsList ( {
1278+ settings : { cursor : { limit : 10 } } ,
1279+ } ) ;
1280+
1281+ expect ( result . cards ?. [ 0 ] . needKiz ) . toBe ( true ) ;
1282+ expect ( result . cards ?. [ 0 ] . kizMarked ) . toBe ( true ) ;
1283+ } ) ;
1284+
1285+ it ( 'should expose kizMarked and needKiz on getTrashedCards response' , async ( ) => {
1286+ const mockResponse = {
1287+ cards : [
1288+ {
1289+ nmID : 99999 ,
1290+ vendorCode : 'TRASHED-001' ,
1291+ needKiz : false ,
1292+ kizMarked : true ,
1293+ trashedAt : '2026-04-09T00:00:00Z' ,
1294+ } ,
1295+ ] ,
1296+ cursor : { total : 1 } ,
1297+ } ;
1298+ mockClient . post . mockResolvedValue ( mockResponse ) ;
1299+
1300+ const result = await productsModule . getTrashedCards ( { } ) ;
1301+
1302+ expect ( result . cards ?. [ 0 ] . needKiz ) . toBe ( false ) ;
1303+ expect ( result . cards ?. [ 0 ] . kizMarked ) . toBe ( true ) ;
1304+ } ) ;
1305+ } ) ;
11841306} ) ;
0 commit comments