2222use Google \Cloud \Spanner \Transaction ;
2323use Google \Cloud \TestUtils \EventuallyConsistentTestTrait ;
2424use Google \Cloud \TestUtils \TestTrait ;
25- use PHPUnitRetry \RetryTrait ;
2625use PHPUnit \Framework \TestCase ;
2726
28- /**
29- * @retryAttempts 3
30- * @retryDelayMethod exponentialBackoff
31- */
3227class spannerPgTest extends TestCase
3328{
3429 use TestTrait {
3530 TestTrait::runFunctionSnippet as traitRunFunctionSnippet;
3631 }
3732
38- use RetryTrait, EventuallyConsistentTestTrait;
33+ use EventuallyConsistentTestTrait;
3934
4035 /** @var string instanceId */
4136 protected static $ instanceId ;
@@ -49,6 +44,9 @@ class spannerPgTest extends TestCase
4944 /** @var $lastUpdateData int */
5045 protected static $ lastUpdateDataTimestamp ;
5146
47+ /** @var $jsonbTable string */
48+ protected static $ jsonbTable ;
49+
5250 public static function setUpBeforeClass (): void
5351 {
5452 self ::checkProjectEnvVars ();
@@ -245,6 +243,58 @@ public function testNumericDataType()
245243 $ this ->assertStringContainsString ('Inserted 1 venue(s) with NaN revenue. ' , $ output );
246244 }
247245
246+ /**
247+ * @depends testCreateDatabase
248+ */
249+ public function testJsonbAddColumn ()
250+ {
251+ self ::$ jsonbTable = 'Venues ' . time () . rand ();
252+
253+ // Create the table for our JSONB tests.
254+ $ database = self ::$ instance ->database (self ::$ databaseId );
255+ $ op = $ database ->updateDdl (
256+ sprintf ('CREATE TABLE %s (
257+ VenueId bigint NOT NULL PRIMARY KEY
258+ ) ' , self ::$ jsonbTable )
259+ );
260+
261+ $ op ->pollUntilComplete ();
262+
263+ // Now run the test
264+ $ output = $ this ->runFunctionSnippet ('pg_add_jsonb_column ' , [
265+ self ::$ instanceId , self ::$ databaseId , self ::$ jsonbTable
266+ ]);
267+ self ::$ lastUpdateDataTimestamp = time ();
268+
269+ $ this ->assertStringContainsString (sprintf ('Added column VenueDetails on table %s. ' , self ::$ jsonbTable ), $ output );
270+ }
271+
272+ /**
273+ * @depends testJsonbAddColumn
274+ */
275+ public function testJsonbUpdateData ()
276+ {
277+ $ output = $ this ->runFunctionSnippet ('pg_jsonb_update_data ' , [
278+ self ::$ instanceId , self ::$ databaseId , self ::$ jsonbTable
279+ ]);
280+ self ::$ lastUpdateDataTimestamp = time ();
281+
282+ $ this ->assertStringContainsString (sprintf ('Inserted/updated 3 rows in table %s ' , self ::$ jsonbTable ), $ output );
283+ }
284+
285+ /**
286+ * @depends testJsonbUpdateData
287+ */
288+ public function testJsonbQueryParam ()
289+ {
290+ $ output = $ this ->runFunctionSnippet ('pg_jsonb_query_parameter ' , [
291+ self ::$ instanceId , self ::$ databaseId , self ::$ jsonbTable
292+ ]);
293+ self ::$ lastUpdateDataTimestamp = time ();
294+
295+ $ this ->assertEquals ('VenueId: 1, VenueDetails: {"open": true, "rating": 9} ' . PHP_EOL , $ output );
296+ }
297+
248298 /**
249299 * @depends testCreateDatabase
250300 */
0 commit comments