@@ -73,15 +73,6 @@ def test_exists_found():
7373        assert  ret ["comment" ] ==  "Grain exists" 
7474        assert  ret ["changes" ] ==  {}
7575
76-     # 'make_hashable' function tests: 1 
77- 
78- 
79- def  test_make_hashable ():
80-     with  set_grains ({"cmplx_lst_grain" : [{"a" : "aval" }, {"foo" : "bar" }]}):
81-         hashable_list  =  {"cmplx_lst_grain" : [{"a" : "aval" }, {"foo" : "bar" }]}
82-         assert  grains .make_hashable (grains .__grains__ ).issubset (
83-             grains .make_hashable (hashable_list )
84-         )
8576
8677    # 'present' function tests: 12 
8778
@@ -643,7 +634,7 @@ def test_append_convert_to_list_empty():
643634        assert_grain_file_content ("foo:\n - baz\n " )
644635
645636
646- # 'list_present' function tests: 7  
637+ # 'list_present' function tests: 14  
647638
648639
649640def  test_list_present ():
@@ -721,6 +712,109 @@ def test_list_present_already():
721712        assert_grain_file_content ("a: aval\n foo:\n - bar\n " )
722713
723714
715+ def  test_list_present_complex_present ():
716+     with  set_grains ({"a" : [{"foo" : "bar" }]}):
717+         ret  =  grains .list_present (name = "a" , value = [{"foo" : "bar" }, {"foo" : "baz" }])
718+         assert  grains .__grains__  ==  {"a" : [{"foo" : "bar" }, {"foo" : "baz" }]}
719+         assert  ret ["result" ] is  True 
720+         assert  ret ["comment" ] ==  (
721+             "Removed value [{'foo': 'bar'}] from update due to value found in \" a\" .\n " 
722+             "Append value [{'foo': 'baz'}] to grain a" 
723+         )
724+         assert  ret ["changes" ] ==  {"new" : {"a" : [{"foo" : "bar" }, {"foo" : "baz" }]}}
725+         assert_grain_file_content ("a:\n - foo: bar\n - foo: baz\n " )
726+ 
727+ 
728+ def  test_list_present_racecar_present ():
729+     with  set_grains ({"foo" : ["racecar" ]}):
730+         ret  =  grains .list_present (name = "foo" , value = ["racer" ])
731+         assert  grains .__grains__  ==  {"foo" : ["racecar" , "racer" ]}
732+         assert  ret ["result" ] is  True 
733+         assert  ret ["comment" ] ==  "Append value ['racer'] to grain foo" 
734+         assert  ret ["changes" ] ==  {"new" : {"foo" : ["racecar" , "racer" ]}}
735+         assert_grain_file_content ("foo:\n - racecar\n - racer\n " )
736+ 
737+ 
738+ def  test_list_present_multiple_calls_empty_as_str ():
739+     with  set_grains ({}):
740+         # First Entry 
741+         ret  =  grains .list_present (name = "foo" , value = "racecar" )
742+         assert  grains .__grains__  ==  {"foo" : ["racecar" ]}
743+         assert  ret ["result" ] is  True 
744+         assert  ret ["comment" ] ==  "Append value racecar to grain foo" 
745+         assert  ret ["changes" ] ==  {"new" : {"foo" : ["racecar" ]}}
746+ 
747+         # Second Entry 
748+         ret  =  grains .list_present (name = "foo" , value = ["racecar" , "taxi" ])
749+         assert  grains .__grains__  ==  {"foo" : ["racecar" , "taxi" ]}
750+         assert  ret ["result" ] is  True 
751+         assert  ret ["comment" ] ==  (
752+             "Removed value ['racecar'] from update due to value found in \" foo\" .\n " 
753+             "Append value ['taxi'] to grain foo" 
754+         )
755+         assert  ret ["changes" ] ==  {"new" : {"foo" : ["racecar" , "taxi" ]}}
756+ 
757+ 
758+ def  test_list_present_multiple_calls_empty_as_list ():
759+     with  set_grains ({}):
760+         # First Entry 
761+         ret  =  grains .list_present (name = "foo" , value = ["racecar" ])
762+         assert  grains .__grains__  ==  {"foo" : ["racecar" ]}
763+         assert  ret ["result" ] is  True 
764+         assert  ret ["comment" ] ==  "Append value ['racecar'] to grain foo" 
765+         assert  ret ["changes" ] ==  {"new" : {"foo" : ["racecar" ]}}
766+ 
767+         # Second Entry 
768+         ret  =  grains .list_present (name = "foo" , value = ["racecar" , "taxi" ])
769+         assert  grains .__grains__  ==  {"foo" : ["racecar" , "taxi" ]}
770+         assert  ret ["result" ] is  True 
771+         assert  ret ["comment" ] ==  (
772+             "Removed value ['racecar'] from update due to value found in \" foo\" .\n " 
773+             "Append value ['taxi'] to grain foo" 
774+         )
775+         assert  ret ["changes" ] ==  {"new" : {"foo" : ["racecar" , "taxi" ]}}
776+ 
777+ 
778+ def  test_list_present_multiple_calls_present_as_str ():
779+     with  set_grains ({"foo" : ["nascar" ]}):
780+         # First Entry 
781+         ret  =  grains .list_present (name = "foo" , value = "racecar" )
782+         assert  grains .__grains__  ==  {"foo" : ["nascar" , "racecar" ]}
783+         assert  ret ["result" ] is  True 
784+         assert  ret ["comment" ] ==  "Append value racecar to grain foo" 
785+         assert  ret ["changes" ] ==  {"new" : {"foo" : ["nascar" , "racecar" ]}}
786+ 
787+         # Second Entry 
788+         ret  =  grains .list_present (name = "foo" , value = ["racecar" , "taxi" ])
789+         assert  grains .__grains__  ==  {"foo" : ["nascar" , "racecar" , "taxi" ]}
790+         assert  ret ["result" ] is  True 
791+         assert  ret ["comment" ] ==  (
792+             "Removed value ['racecar'] from update due to value found in \" foo\" .\n " 
793+             "Append value ['taxi'] to grain foo" 
794+         )
795+         assert  ret ["changes" ] ==  {"new" : {"foo" : ["nascar" , "racecar" , "taxi" ]}}
796+ 
797+ 
798+ def  test_list_present_multiple_calls_present_as_list ():
799+     with  set_grains ({"foo" : ["nascar" ]}):
800+         # First Entry 
801+         ret  =  grains .list_present (name = "foo" , value = ["racecar" ])
802+         assert  grains .__grains__  ==  {"foo" : ["nascar" , "racecar" ]}
803+         assert  ret ["result" ] is  True 
804+         assert  ret ["comment" ] ==  "Append value ['racecar'] to grain foo" 
805+         assert  ret ["changes" ] ==  {"new" : {"foo" : ["nascar" , "racecar" ]}}
806+ 
807+         # Second Entry 
808+         ret  =  grains .list_present (name = "foo" , value = ["racecar" , "taxi" ])
809+         assert  grains .__grains__  ==  {"foo" : ["nascar" , "racecar" , "taxi" ]}
810+         assert  ret ["result" ] is  True 
811+         assert  ret ["comment" ] ==  (
812+             "Removed value ['racecar'] from update due to value found in \" foo\" .\n " 
813+             "Append value ['taxi'] to grain foo" 
814+         )
815+         assert  ret ["changes" ] ==  {"new" : {"foo" : ["nascar" , "racecar" , "taxi" ]}}
816+ 
817+ 
724818def  test_list_present_unknown_failure ():
725819    with  set_grains ({"a" : "aval" , "foo" : ["bar" ]}):
726820        # Unknown reason failure 
0 commit comments