@@ -117,6 +117,7 @@ def test_data_row_bulk_creation(dataset, rand_gen, image_url):
117117 data_rows = list (dataset .data_rows ())
118118 assert len (data_rows ) == 2
119119 assert {data_row .row_data for data_row in data_rows } == {image_url }
120+ assert {data_row .global_key for data_row in data_rows } == {None }
120121
121122 # Test creation using file name
122123 with NamedTemporaryFile () as fp :
@@ -174,6 +175,7 @@ def test_data_row_single_creation(dataset, rand_gen, image_url):
174175 assert requests .get (image_url ).content == \
175176 requests .get (data_row .row_data ).content
176177 assert data_row .media_attributes is not None
178+ assert data_row .global_key is None
177179
178180 with NamedTemporaryFile () as fp :
179181 data = rand_gen (str ).encode ()
@@ -582,3 +584,64 @@ def test_create_data_rows_local_file(dataset, sample_image):
582584 data_row = list (dataset .data_rows ())[0 ]
583585 assert data_row .external_id == "tests/integration/media/sample_image.jpg"
584586 assert len (data_row .metadata_fields ) == 4
587+
588+
589+ def test_data_row_with_global_key (dataset , sample_image ):
590+ global_key = str (uuid .uuid4 ())
591+ row = dataset .create_data_row ({
592+ DataRow .row_data : sample_image ,
593+ DataRow .global_key : global_key
594+ })
595+
596+ assert row .global_key == global_key
597+
598+
599+ def test_data_row_bulk_creation_with_unique_global_keys (dataset , sample_image ):
600+ global_key_1 = str (uuid .uuid4 ())
601+ global_key_2 = str (uuid .uuid4 ())
602+ global_key_3 = str (uuid .uuid4 ())
603+
604+ task = dataset .create_data_rows ([
605+ {
606+ DataRow .row_data : sample_image ,
607+ DataRow .global_key : global_key_1
608+ },
609+ {
610+ DataRow .row_data : sample_image ,
611+ DataRow .global_key : global_key_2
612+ },
613+ {
614+ DataRow .row_data : sample_image ,
615+ DataRow .global_key : global_key_3
616+ },
617+ ])
618+
619+ task .wait_till_done ()
620+ assert {row .global_key for row in dataset .data_rows ()
621+ } == {global_key_1 , global_key_2 , global_key_3 }
622+
623+
624+ def test_data_row_bulk_creation_with_same_global_keys (dataset , sample_image ):
625+ global_key_1 = str (uuid .uuid4 ())
626+
627+ task = dataset .create_data_rows ([{
628+ DataRow .row_data : sample_image ,
629+ DataRow .global_key : global_key_1
630+ }, {
631+ DataRow .row_data : sample_image ,
632+ DataRow .global_key : global_key_1
633+ }])
634+
635+ task .wait_till_done ()
636+ assert task .status == "FAILED"
637+ assert len (list (dataset .data_rows ())) == 0
638+
639+ task = dataset .create_data_rows ([{
640+ DataRow .row_data : sample_image ,
641+ DataRow .global_key : global_key_1
642+ }])
643+
644+ task .wait_till_done ()
645+ assert task .status == "COMPLETE"
646+ assert len (list (dataset .data_rows ())) == 1
647+ assert list (dataset .data_rows ())[0 ].global_key == global_key_1
0 commit comments