@@ -29,7 +29,7 @@ import Test.Tasty.HUnit ((@=?), testCase)
2929-- (queue-sheet)
3030import QueueSheet.File (loadYaml' )
3131import QueueSheet.Types
32- ( Date (Date ), Item (Item , itemName , itemUrl ), Name (Name )
32+ ( Date (Date ), Item (Item , itemName , itemTags , itemUrl ), Name (Name )
3333 , Queue
3434 ( Queue , queueDate , queueItems , queueName , queueSection , queueTags
3535 , queueUrl
@@ -40,6 +40,13 @@ import QueueSheet.Types
4040
4141------------------------------------------------------------------------------
4242
43+ defaultItem :: Item
44+ defaultItem = Item
45+ { itemName = Name " "
46+ , itemUrl = Nothing
47+ , itemTags = []
48+ }
49+
4350defaultQueue :: Queue
4451defaultQueue = Queue
4552 { queueName = Name " "
@@ -379,9 +386,8 @@ testQueuePrev = testGroup "prev"
379386 { qsQueues =
380387 [ defaultQueue
381388 { queueName = Name " test"
382- , queueItems = Just . Left $ Item
389+ , queueItems = Just . Left $ defaultItem
383390 { itemName = Name " premiere"
384- , itemUrl = Nothing
385391 }
386392 }
387393 ]
@@ -397,9 +403,8 @@ testQueuePrev = testGroup "prev"
397403 { qsQueues =
398404 [ defaultQueue
399405 { queueName = Name " test"
400- , queueItems = Just . Left $ Item
406+ , queueItems = Just . Left $ defaultItem
401407 { itemName = Name " 42"
402- , itemUrl = Nothing
403408 }
404409 }
405410 ]
@@ -415,9 +420,8 @@ testQueuePrev = testGroup "prev"
415420 { qsQueues =
416421 [ defaultQueue
417422 { queueName = Name " test"
418- , queueItems = Just . Left $ Item
423+ , queueItems = Just . Left $ defaultItem
419424 { itemName = Name " premiere"
420- , itemUrl = Nothing
421425 }
422426 }
423427 ]
@@ -434,7 +438,7 @@ testQueuePrev = testGroup "prev"
434438 { qsQueues =
435439 [ defaultQueue
436440 { queueName = Name " test"
437- , queueItems = Just . Left $ Item
441+ , queueItems = Just . Left $ defaultItem
438442 { itemName = Name " 42"
439443 , itemUrl = Just $ Url " https://www.example.com/42"
440444 }
@@ -449,6 +453,28 @@ testQueuePrev = testGroup "prev"
449453 , " url: https://www.example.com/42"
450454 ]
451455 ]
456+ , testCase " tags" $ do
457+ let expected = defaultQueueSheet
458+ { qsQueues =
459+ [ defaultQueue
460+ { queueName = Name " test"
461+ , queueItems = Just . Left $ defaultItem
462+ { itemName = Name " 42"
463+ , itemTags = [Tag " one" , Tag " two" ]
464+ }
465+ }
466+ ]
467+ }
468+ Right expected @=? loadYaml
469+ [ validFile " /tmp/test.yaml"
470+ [ " - name: test"
471+ , " prev:"
472+ , " name: 42"
473+ , " tags:"
474+ , " - one"
475+ , " - two"
476+ ]
477+ ]
452478 , testCase " empty" $ do
453479 let message = intercalate " \n "
454480 [ " error loading /tmp/test.yaml: Aeson exception:"
@@ -471,9 +497,8 @@ testQueueNext = testGroup "next"
471497 [ defaultQueue
472498 { queueName = Name " test"
473499 , queueItems = Just $ Right
474- [ Item
500+ [ defaultItem
475501 { itemName = Name " one"
476- , itemUrl = Nothing
477502 }
478503 ]
479504 }
@@ -492,9 +517,8 @@ testQueueNext = testGroup "next"
492517 [ defaultQueue
493518 { queueName = Name " test"
494519 , queueItems = Just $ Right
495- [ Item
520+ [ defaultItem
496521 { itemName = Name " 42"
497- , itemUrl = Nothing
498522 }
499523 ]
500524 }
@@ -513,9 +537,8 @@ testQueueNext = testGroup "next"
513537 [ defaultQueue
514538 { queueName = Name " test"
515539 , queueItems = Just $ Right
516- [ Item
540+ [ defaultItem
517541 { itemName = Name " one"
518- , itemUrl = Nothing
519542 }
520543 ]
521544 }
@@ -534,7 +557,7 @@ testQueueNext = testGroup "next"
534557 [ defaultQueue
535558 { queueName = Name " test"
536559 , queueItems = Just $ Right
537- [ Item
560+ [ defaultItem
538561 { itemName = Name " one"
539562 , itemUrl = Just $
540563 Url " https://www.example.com/one"
@@ -551,17 +574,40 @@ testQueueNext = testGroup "next"
551574 , " url: https://www.example.com/one"
552575 ]
553576 ]
577+ , testCase " tags" $ do
578+ let expected = defaultQueueSheet
579+ { qsQueues =
580+ [ defaultQueue
581+ { queueName = Name " test"
582+ , queueItems = Just $ Right
583+ [ defaultItem
584+ { itemName = Name " one"
585+ , itemTags = [Tag " one" , Tag " two" ]
586+ }
587+ ]
588+ }
589+ ]
590+ }
591+ Right expected @=? loadYaml
592+ [ validFile " /tmp/test.yaml"
593+ [ " - name: test"
594+ , " next:"
595+ , " - name: one"
596+ , " tags:"
597+ , " - one"
598+ , " - two"
599+ ]
600+ ]
554601 , testCase " multiple" $ do
555602 let expected = defaultQueueSheet
556603 { qsQueues =
557604 [ defaultQueue
558605 { queueName = Name " test"
559606 , queueItems = Just $ Right
560- [ Item
607+ [ defaultItem
561608 { itemName = Name " one"
562- , itemUrl = Nothing
563609 }
564- , Item
610+ , defaultItem
565611 { itemName = Name " 42"
566612 , itemUrl = Just $
567613 Url " https://www.example.com/42"
@@ -600,9 +646,8 @@ testQueueNext = testGroup "next"
600646 [ defaultQueue
601647 { queueName = Name " test"
602648 , queueItems = Just $ Right
603- [ Item
649+ [ defaultItem
604650 { itemName = Name " 42"
605- , itemUrl = Nothing
606651 }
607652 ]
608653 }
0 commit comments