@@ -73,16 +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- )
85-
8676 # 'present' function tests: 12
8777
8878
@@ -643,7 +633,7 @@ def test_append_convert_to_list_empty():
643633 assert_grain_file_content ("foo:\n - baz\n " )
644634
645635
646- # 'list_present' function tests: 7
636+ # 'list_present' function tests: 14
647637
648638
649639def test_list_present ():
@@ -721,6 +711,109 @@ def test_list_present_already():
721711 assert_grain_file_content ("a: aval\n foo:\n - bar\n " )
722712
723713
714+ def test_list_present_complex_present ():
715+ with set_grains ({"a" : [{"foo" : "bar" }]}):
716+ ret = grains .list_present (name = "a" , value = [{"foo" : "bar" }, {"foo" : "baz" }])
717+ assert grains .__grains__ == {"a" : [{"foo" : "bar" }, {"foo" : "baz" }]}
718+ assert ret ["result" ] is True
719+ assert ret ["comment" ] == (
720+ "Removed value [{'foo': 'bar'}] from update due to value found in \" a\" .\n "
721+ "Append value [{'foo': 'baz'}] to grain a"
722+ )
723+ assert ret ["changes" ] == {"new" : {"a" : [{"foo" : "bar" }, {"foo" : "baz" }]}}
724+ assert_grain_file_content ("a:\n - foo: bar\n - foo: baz\n " )
725+
726+
727+ def test_list_present_racecar_present ():
728+ with set_grains ({"foo" : ["racecar" ]}):
729+ ret = grains .list_present (name = "foo" , value = ["racer" ])
730+ assert grains .__grains__ == {"foo" : ["racecar" , "racer" ]}
731+ assert ret ["result" ] is True
732+ assert ret ["comment" ] == "Append value ['racer'] to grain foo"
733+ assert ret ["changes" ] == {"new" : {"foo" : ["racecar" , "racer" ]}}
734+ assert_grain_file_content ("foo:\n - racecar\n - racer\n " )
735+
736+
737+ def test_list_present_multiple_calls_empty_as_str ():
738+ with set_grains ({}):
739+ # First Entry
740+ ret = grains .list_present (name = "foo" , value = "racecar" )
741+ assert grains .__grains__ == {"foo" : ["racecar" ]}
742+ assert ret ["result" ] is True
743+ assert ret ["comment" ] == "Append value racecar to grain foo"
744+ assert ret ["changes" ] == {"new" : {"foo" : ["racecar" ]}}
745+
746+ # Second Entry
747+ ret = grains .list_present (name = "foo" , value = ["racecar" , "taxi" ])
748+ assert grains .__grains__ == {"foo" : ["racecar" , "taxi" ]}
749+ assert ret ["result" ] is True
750+ assert ret ["comment" ] == (
751+ "Removed value ['racecar'] from update due to value found in \" foo\" .\n "
752+ "Append value ['taxi'] to grain foo"
753+ )
754+ assert ret ["changes" ] == {"new" : {"foo" : ["racecar" , "taxi" ]}}
755+
756+
757+ def test_list_present_multiple_calls_empty_as_list ():
758+ with set_grains ({}):
759+ # First Entry
760+ ret = grains .list_present (name = "foo" , value = ["racecar" ])
761+ assert grains .__grains__ == {"foo" : ["racecar" ]}
762+ assert ret ["result" ] is True
763+ assert ret ["comment" ] == "Append value ['racecar'] to grain foo"
764+ assert ret ["changes" ] == {"new" : {"foo" : ["racecar" ]}}
765+
766+ # Second Entry
767+ ret = grains .list_present (name = "foo" , value = ["racecar" , "taxi" ])
768+ assert grains .__grains__ == {"foo" : ["racecar" , "taxi" ]}
769+ assert ret ["result" ] is True
770+ assert ret ["comment" ] == (
771+ "Removed value ['racecar'] from update due to value found in \" foo\" .\n "
772+ "Append value ['taxi'] to grain foo"
773+ )
774+ assert ret ["changes" ] == {"new" : {"foo" : ["racecar" , "taxi" ]}}
775+
776+
777+ def test_list_present_multiple_calls_present_as_str ():
778+ with set_grains ({"foo" : ["nascar" ]}):
779+ # First Entry
780+ ret = grains .list_present (name = "foo" , value = "racecar" )
781+ assert grains .__grains__ == {"foo" : ["nascar" , "racecar" ]}
782+ assert ret ["result" ] is True
783+ assert ret ["comment" ] == "Append value racecar to grain foo"
784+ assert ret ["changes" ] == {"new" : {"foo" : ["nascar" , "racecar" ]}}
785+
786+ # Second Entry
787+ ret = grains .list_present (name = "foo" , value = ["racecar" , "taxi" ])
788+ assert grains .__grains__ == {"foo" : ["nascar" , "racecar" , "taxi" ]}
789+ assert ret ["result" ] is True
790+ assert ret ["comment" ] == (
791+ "Removed value ['racecar'] from update due to value found in \" foo\" .\n "
792+ "Append value ['taxi'] to grain foo"
793+ )
794+ assert ret ["changes" ] == {"new" : {"foo" : ["nascar" , "racecar" , "taxi" ]}}
795+
796+
797+ def test_list_present_multiple_calls_present_as_list ():
798+ with set_grains ({"foo" : ["nascar" ]}):
799+ # First Entry
800+ ret = grains .list_present (name = "foo" , value = ["racecar" ])
801+ assert grains .__grains__ == {"foo" : ["nascar" , "racecar" ]}
802+ assert ret ["result" ] is True
803+ assert ret ["comment" ] == "Append value ['racecar'] to grain foo"
804+ assert ret ["changes" ] == {"new" : {"foo" : ["nascar" , "racecar" ]}}
805+
806+ # Second Entry
807+ ret = grains .list_present (name = "foo" , value = ["racecar" , "taxi" ])
808+ assert grains .__grains__ == {"foo" : ["nascar" , "racecar" , "taxi" ]}
809+ assert ret ["result" ] is True
810+ assert ret ["comment" ] == (
811+ "Removed value ['racecar'] from update due to value found in \" foo\" .\n "
812+ "Append value ['taxi'] to grain foo"
813+ )
814+ assert ret ["changes" ] == {"new" : {"foo" : ["nascar" , "racecar" , "taxi" ]}}
815+
816+
724817def test_list_present_unknown_failure ():
725818 with set_grains ({"a" : "aval" , "foo" : ["bar" ]}):
726819 # Unknown reason failure
0 commit comments