@@ -541,7 +541,6 @@ The first step
541
541
files :[ "someFile.js" ] ,
542
542
watchers :[ "someFile.js" ] ,
543
543
filter :"someFilter" ,
544
- subtasks :true ,
545
544
} ,
546
545
solution :{
547
546
commands :[ "npm install" ] ,
@@ -579,7 +578,6 @@ The first step
579
578
files :[ "someFile.js" ] ,
580
579
watchers :[ "someFile.js" ] ,
581
580
filter :"someFilter" ,
582
- subtasks :true ,
583
581
} ,
584
582
solution :{
585
583
commits :[ "1gfedcba" , "987654321" ] ,
@@ -631,7 +629,6 @@ The third step
631
629
files :[ "someFile.js" ] ,
632
630
watchers :[ "someFile.js" ] ,
633
631
filter :"someFilter" ,
634
- subtasks :true ,
635
632
} ,
636
633
solution :{
637
634
commands :[ "npm install" ] ,
@@ -645,7 +642,6 @@ The third step
645
642
files :[ "someFile.js" ] ,
646
643
watchers :[ "someFile.js" ] ,
647
644
filter :"someFilter" ,
648
- subtasks :true ,
649
645
} ,
650
646
solution :{
651
647
commands :[ "npm install" ] ,
@@ -666,7 +662,6 @@ The third step
666
662
files :[ "someFile.js" ] ,
667
663
watchers :[ "someFile.js" ] ,
668
664
filter :"someFilter" ,
669
- subtasks :true ,
670
665
} ,
671
666
solution :{
672
667
commands :[ "npm install" ] ,
@@ -709,7 +704,6 @@ The third step
709
704
files :[ "someFile.js" ] ,
710
705
watchers :[ "someFile.js" ] ,
711
706
filter :"someFilter" ,
712
- subtasks :true ,
713
707
} ,
714
708
solution :{
715
709
commits :[ "1fedcba" , "987654321" ] ,
@@ -726,7 +720,6 @@ The third step
726
720
files :[ "someFile.js" ] ,
727
721
watchers :[ "someFile.js" ] ,
728
722
filter :"someFilter" ,
729
- subtasks :true ,
730
723
} ,
731
724
solution :{
732
725
commits :[ "3abcdef" ] ,
@@ -751,7 +744,6 @@ The third step
751
744
files :[ "someFile.js" ] ,
752
745
watchers :[ "someFile.js" ] ,
753
746
filter :"someFilter" ,
754
- subtasks :true ,
755
747
} ,
756
748
solution :{
757
749
commits :[ "5abcdef" ] ,
@@ -1419,4 +1411,74 @@ The second uninterrupted step
1419
1411
expect ( result . levels [ 0 ] ) . toEqual ( expected . levels [ 0 ] ) ;
1420
1412
} ) ;
1421
1413
} ) ;
1414
+ describe ( "subtasks" , ( ) => {
1415
+ it ( "should parse subtasks" , ( ) => {
1416
+ const md = `# Subtask Demo
1417
+
1418
+ A demo demonstrating how to use subtasks
1419
+
1420
+ ## 1. Subtask Example
1421
+
1422
+ A subtask example
1423
+
1424
+ ### 1.1
1425
+
1426
+ Create a function \`add\` that can take a variety of params.
1427
+
1428
+ #### SUBTASKS
1429
+
1430
+ - Add one number
1431
+ - Add two numbers
1432
+ - Add three numbers` ;
1433
+ const skeleton = {
1434
+ levels :[
1435
+ {
1436
+ id :"1" ,
1437
+ steps :[
1438
+ {
1439
+ id :"1.1" ,
1440
+ } ,
1441
+ ] ,
1442
+ } ,
1443
+ ] ,
1444
+ } ;
1445
+ const expected = {
1446
+ levels :[
1447
+ {
1448
+ id :"1" ,
1449
+ title :"Subtask Example" ,
1450
+ summary :"A subtask example" ,
1451
+ content :"A subtask example" ,
1452
+ steps :[
1453
+ {
1454
+ id :"1.1" ,
1455
+ setup :{
1456
+ subtasks :[
1457
+ "Add one number" ,
1458
+ "Add two numbers" ,
1459
+ "Add three numbers" ,
1460
+ ] ,
1461
+ commits :[ "abcdef1" ] ,
1462
+ } ,
1463
+ content :
1464
+ "Create a function `add` that can take a variety of params." ,
1465
+ solution :{
1466
+ commits :[ "abcdef2" ] ,
1467
+ } ,
1468
+ } ,
1469
+ ] ,
1470
+ } ,
1471
+ ] ,
1472
+ } ;
1473
+ const result = parse ( {
1474
+ text :md ,
1475
+ skeleton,
1476
+ commits :{
1477
+ "1.1:T" :[ "abcdef1" ] ,
1478
+ "1.1:S" :[ "abcdef2" ] ,
1479
+ } ,
1480
+ } ) ;
1481
+ expect ( result . levels ) . toEqual ( expected . levels ) ;
1482
+ } ) ;
1483
+ } ) ;
1422
1484
} ) ;