@@ -654,3 +654,161 @@ Feature: Manage WordPress transient cache
654654 """
655655 Warning: Transient with key "my_key" is not set.
656656 """
657+
658+ Scenario : Nested values from transient can be updated at any depth.
659+ Given a WP install
660+ And a wp-content/mu-plugins/test-harness.php file:
661+ """
662+ <?php
663+ $set_foo = function(){
664+ set_transient( 'my_key', ['foo' => 'bar'] );
665+ set_transient( 'my_key_2', ['foo' => ['bar' => 'baz']] );
666+ };
667+
668+ WP_CLI::add_hook( 'before_invoke:transient patch', $set_foo );
669+ """
670+
671+ When I try `wp transient patch insert my_key fuz baz`
672+ Then STDOUT should be:
673+ """
674+ Success: Updated transient 'my_key'.
675+ """
676+
677+ When I try `wp transient patch insert my_key_2 foo fuz bar`
678+ Then STDOUT should be:
679+ """
680+ Success: Updated transient 'my_key_2'.
681+ """
682+
683+ When I try `wp transient patch insert unknown_key foo bar`
684+ Then STDERR should be:
685+ """
686+ Error: Cannot create key "foo" on data type boolean
687+ """
688+
689+ When I try `wp transient patch insert my_key foo bar`
690+ Then STDOUT should be:
691+ """
692+ Success: Value passed for transient 'my_key' is unchanged.
693+ """
694+
695+ When I try `wp transient patch update my_key foo biz`
696+ Then STDOUT should be:
697+ """
698+ Success: Updated transient 'my_key'.
699+ """
700+
701+ When I try `wp transient patch update my_key_2 foo bar biz`
702+ Then STDOUT should be:
703+ """
704+ Success: Updated transient 'my_key_2'.
705+ """
706+
707+ When I try `wp transient patch update unknown_key foo bar`
708+ Then STDERR should be:
709+ """
710+ Error: No data exists for key "foo"
711+ """
712+
713+ When I try `wp transient patch update my_key foo bar`
714+ Then STDOUT should be:
715+ """
716+ Success: Value passed for transient 'my_key' is unchanged.
717+ """
718+
719+ When I try `wp transient patch delete my_key foo`
720+ Then STDOUT should be:
721+ """
722+ Success: Updated transient 'my_key'.
723+ """
724+
725+ When I try `wp transient patch delete my_key_2 foo bar`
726+ Then STDOUT should be:
727+ """
728+ Success: Updated transient 'my_key_2'.
729+ """
730+
731+ When I try `wp transient patch delete unknown_key foo`
732+ Then STDERR should be:
733+ """
734+ Error: No data exists for key "foo"
735+ """
736+
737+ Scenario : Nested values from site transient can be updated at any depth.
738+ Given a WP install
739+ And a wp-content/mu-plugins/test-harness.php file:
740+ """
741+ <?php
742+ $set_foo = function(){
743+ set_site_transient( 'my_key', ['foo' => 'bar'] );
744+ set_site_transient( 'my_key_2', ['foo' => ['bar' => 'baz']] );
745+ };
746+
747+ WP_CLI::add_hook( 'before_invoke:transient patch', $set_foo );
748+ """
749+
750+ When I try `wp transient patch insert my_key fuz baz --network`
751+ Then STDOUT should be:
752+ """
753+ Success: Updated transient 'my_key'.
754+ """
755+
756+ When I try `wp transient patch insert my_key_2 foo fuz bar --network`
757+ Then STDOUT should be:
758+ """
759+ Success: Updated transient 'my_key_2'.
760+ """
761+
762+ When I try `wp transient patch insert unknown_key foo bar --network`
763+ Then STDERR should be:
764+ """
765+ Error: Cannot create key "foo" on data type boolean
766+ """
767+
768+ When I try `wp transient patch insert my_key foo bar --network`
769+ Then STDOUT should be:
770+ """
771+ Success: Value passed for transient 'my_key' is unchanged.
772+ """
773+
774+ When I try `wp transient patch update my_key foo biz --network`
775+ Then STDOUT should be:
776+ """
777+ Success: Updated transient 'my_key'.
778+ """
779+
780+ When I try `wp transient patch update my_key_2 foo bar biz --network`
781+ Then STDOUT should be:
782+ """
783+ Success: Updated transient 'my_key_2'.
784+ """
785+
786+ When I try `wp transient patch update unknown_key foo bar --network`
787+ Then STDERR should be:
788+ """
789+ Error: No data exists for key "foo"
790+ """
791+
792+ When I try `wp transient patch update my_key foo bar --network`
793+ Then STDOUT should be:
794+ """
795+ Success: Value passed for transient 'my_key' is unchanged.
796+ """
797+
798+ When I try `wp transient patch delete my_key foo --network`
799+ Then STDOUT should be:
800+ """
801+ Success: Updated transient 'my_key'.
802+ """
803+
804+ When I try `wp transient patch delete my_key_2 foo bar --network`
805+ Then STDOUT should be:
806+ """
807+ Success: Updated transient 'my_key_2'.
808+ """
809+
810+ When I try `wp transient patch delete unknown_key foo --network`
811+ Then STDERR should be:
812+ """
813+ Error: No data exists for key "foo"
814+ """
0 commit comments