@@ -71,4 +71,88 @@ public function test_set_site_transient_is_not_stored_as_autoload_option() {
71
71
72
72
$ this ->assertArrayNotHasKey ( '_site_transient_ ' . $ key , $ options );
73
73
}
74
+
75
+ /**
76
+ * Ensure site transients are stored in the options table on single site installations.
77
+ *
78
+ * @group ms-excluded
79
+ *
80
+ * @covers ::set_site_transient
81
+ */
82
+ public function test_site_transient_stored_in_options_on_single_site () {
83
+ global $ wpdb ;
84
+ $ key = 'test_site_transient_stored_in_options_on_single_site ' ;
85
+ $ value = 'Test Site Transient Value ' ;
86
+
87
+ set_site_transient ( $ key , $ value );
88
+
89
+ $ option = $ wpdb ->get_row (
90
+ $ wpdb ->prepare (
91
+ "SELECT option_name, option_value from {$ wpdb ->options } WHERE option_name = %s " ,
92
+ '_site_transient_ ' . $ key
93
+ )
94
+ );
95
+ $ this ->assertEquals (
96
+ (object ) array (
97
+ 'option_name ' => '_site_transient_ ' . $ key ,
98
+ 'option_value ' => $ value ,
99
+ ),
100
+ $ option ,
101
+ 'Site transient should be stored in the options table on single site installations. '
102
+ );
103
+ }
104
+
105
+ /**
106
+ * Ensure site transients are stored in the sitemeta table on multisite.
107
+ *
108
+ * @group ms-required
109
+ *
110
+ * @covers ::set_site_transient
111
+ */
112
+ public function test_site_transients_stored_in_site_meta_on_ms () {
113
+ global $ wpdb ;
114
+ $ key = 'test_site_transient_stored_in_site_meta_on_ms ' ;
115
+ $ value = 'Test Site Transient Value ' ;
116
+
117
+ set_site_transient ( $ key , $ value );
118
+
119
+ $ option = $ wpdb ->get_row (
120
+ $ wpdb ->prepare (
121
+ "SELECT meta_key, meta_value from {$ wpdb ->sitemeta } WHERE meta_key = %s " ,
122
+ '_site_transient_ ' . $ key
123
+ )
124
+ );
125
+ $ this ->assertEquals (
126
+ (object ) array (
127
+ 'meta_key ' => '_site_transient_ ' . $ key ,
128
+ 'meta_value ' => $ value ,
129
+ ),
130
+ $ option ,
131
+ 'Site transient should be stored in sitemeta table on multisite. '
132
+ );
133
+ }
134
+
135
+ /**
136
+ * Ensure site transients are not stored in the options table on multisite.
137
+ *
138
+ * @group ms-required
139
+ *
140
+ * @covers ::set_site_transient
141
+ */
142
+ public function test_site_transients_not_stored_in_options_table_on_ms () {
143
+ global $ wpdb ;
144
+ $ key = 'test_site_transients_not_stored_in_options_table_on_ms ' ;
145
+ $ value = 'Test Site Transient Value ' ;
146
+
147
+ set_site_transient ( $ key , $ value );
148
+
149
+ $ option = $ wpdb ->get_row (
150
+ $ wpdb ->prepare (
151
+ "SELECT option_name, option_value from {$ wpdb ->options } WHERE option_name = %s " ,
152
+ '_site_transient_ ' . $ key
153
+ )
154
+ );
155
+
156
+ $ this ->assertNull ( $ option , 'Querying option table should not return transient on multisite. ' );
157
+ }
74
158
}
0 commit comments