@@ -546,13 +546,35 @@ def _call_fut(self, value):
546546 def test_w_float (self ):
547547 self .assertEqual (self ._call_fut (1.234567 ), 1.234567 )
548548
549- def test_w_datetime (self ):
549+ def test_w_string (self ):
550+ ZULU = '2016-12-20 15:58:27.339328+00:00'
551+ self .assertEqual (self ._call_fut (ZULU ), ZULU )
552+
553+ def test_w_datetime_wo_zone (self ):
554+ import datetime
555+ ZULU = '2016-12-20 15:58:27.339328+00:00'
556+ when = datetime .datetime (2016 , 12 , 20 , 15 , 58 , 27 , 339328 )
557+ self .assertEqual (self ._call_fut (when ), ZULU )
558+
559+ def test_w_datetime_w_non_utc_zone (self ):
560+ import datetime
561+
562+ class _Zone (datetime .tzinfo ):
563+
564+ def utcoffset (self , _ ):
565+ return datetime .timedelta (minutes = - 240 )
566+
567+ ZULU = '2016-12-20 19:58:27.339328+00:00'
568+ when = datetime .datetime (
569+ 2016 , 12 , 20 , 15 , 58 , 27 , 339328 , tzinfo = _Zone ())
570+ self .assertEqual (self ._call_fut (when ), ZULU )
571+
572+ def test_w_datetime_w_utc_zone (self ):
550573 import datetime
551574 from google .cloud ._helpers import UTC
552- from google .cloud ._helpers import _microseconds_from_datetime
553- when = datetime .datetime (2016 , 12 , 3 , 14 , 11 , 27 , tzinfo = UTC )
554- self .assertEqual (self ._call_fut (when ),
555- _microseconds_from_datetime (when ) / 1e6 )
575+ ZULU = '2016-12-20 15:58:27.339328+00:00'
576+ when = datetime .datetime (2016 , 12 , 20 , 15 , 58 , 27 , 339328 , tzinfo = UTC )
577+ self .assertEqual (self ._call_fut (when ), ZULU )
556578
557579
558580class Test_datetime_to_json (unittest .TestCase ):
@@ -907,20 +929,20 @@ def test_to_api_repr_w_bool(self):
907929 self .assertEqual (param .to_api_repr (), EXPECTED )
908930
909931 def test_to_api_repr_w_timestamp_datetime (self ):
932+ from google .cloud ._helpers import UTC
910933 import datetime
911- from google .cloud ._helpers import _microseconds_from_datetime
912- now = datetime .datetime .utcnow ()
913- seconds = _microseconds_from_datetime (now ) / 1.0e6
934+ STAMP = '2016-12-20 15:58:27.339328+00:00'
935+ when = datetime .datetime (2016 , 12 , 20 , 15 , 58 , 27 , 339328 , tzinfo = UTC )
914936 EXPECTED = {
915937 'parameterType' : {
916938 'type' : 'TIMESTAMP' ,
917939 },
918940 'parameterValue' : {
919- 'value' : seconds ,
941+ 'value' : STAMP ,
920942 },
921943 }
922944 klass = self ._get_target_class ()
923- param = klass .positional (type_ = 'TIMESTAMP' , value = now )
945+ param = klass .positional (type_ = 'TIMESTAMP' , value = when )
924946 self .assertEqual (param .to_api_repr (), EXPECTED )
925947
926948 def test_to_api_repr_w_timestamp_micros (self ):
@@ -1060,6 +1082,7 @@ def test_from_api_repr_w_name(self):
10601082 def test_from_api_repr_wo_name (self ):
10611083 RESOURCE = {
10621084 'parameterType' : {
1085+ 'type' : 'ARRAY' ,
10631086 'arrayType' : 'INT64' ,
10641087 },
10651088 'parameterValue' : {
@@ -1076,6 +1099,7 @@ def test_to_api_repr_w_name(self):
10761099 EXPECTED = {
10771100 'name' : 'foo' ,
10781101 'parameterType' : {
1102+ 'type' : 'ARRAY' ,
10791103 'arrayType' : 'INT64' ,
10801104 },
10811105 'parameterValue' : {
@@ -1088,6 +1112,7 @@ def test_to_api_repr_w_name(self):
10881112 def test_to_api_repr_wo_name (self ):
10891113 EXPECTED = {
10901114 'parameterType' : {
1115+ 'type' : 'ARRAY' ,
10911116 'arrayType' : 'INT64' ,
10921117 },
10931118 'parameterValue' : {
@@ -1101,6 +1126,7 @@ def test_to_api_repr_wo_name(self):
11011126 def test_to_api_repr_w_unknown_type (self ):
11021127 EXPECTED = {
11031128 'parameterType' : {
1129+ 'type' : 'ARRAY' ,
11041130 'arrayType' : 'UNKNOWN' ,
11051131 },
11061132 'parameterValue' : {
@@ -1148,13 +1174,17 @@ def test_from_api_repr_w_name(self):
11481174 RESOURCE = {
11491175 'name' : 'foo' ,
11501176 'parameterType' : {
1177+ 'type' : 'STRUCT' ,
11511178 'structTypes' : [
1152- {'name' : 'bar' , 'type' : ' INT64' },
1153- {'name' : 'baz' , 'type' : ' STRING' },
1179+ {'name' : 'bar' , 'type' : { 'type' : ' INT64'} },
1180+ {'name' : 'baz' , 'type' : { 'type' : ' STRING'} },
11541181 ],
11551182 },
11561183 'parameterValue' : {
1157- 'structValues' : {'bar' : 123 , 'baz' : 'abc' },
1184+ 'structValues' : {
1185+ 'bar' : {'value' : 123 },
1186+ 'baz' : {'value' : 'abc' },
1187+ },
11581188 },
11591189 }
11601190 klass = self ._get_target_class ()
@@ -1166,13 +1196,17 @@ def test_from_api_repr_w_name(self):
11661196 def test_from_api_repr_wo_name (self ):
11671197 RESOURCE = {
11681198 'parameterType' : {
1199+ 'type' : 'STRUCT' ,
11691200 'structTypes' : [
1170- {'name' : 'bar' , 'type' : ' INT64' },
1171- {'name' : 'baz' , 'type' : ' STRING' },
1201+ {'name' : 'bar' , 'type' : { 'type' : ' INT64'} },
1202+ {'name' : 'baz' , 'type' : { 'type' : ' STRING'} },
11721203 ],
11731204 },
11741205 'parameterValue' : {
1175- 'structValues' : {'bar' : 123 , 'baz' : 'abc' },
1206+ 'structValues' : {
1207+ 'bar' : {'value' : 123 },
1208+ 'baz' : {'value' : 'abc' },
1209+ },
11761210 },
11771211 }
11781212 klass = self ._get_target_class ()
@@ -1185,13 +1219,17 @@ def test_to_api_repr_w_name(self):
11851219 EXPECTED = {
11861220 'name' : 'foo' ,
11871221 'parameterType' : {
1222+ 'type' : 'STRUCT' ,
11881223 'structTypes' : [
1189- {'name' : 'bar' , 'type' : ' INT64' },
1190- {'name' : 'baz' , 'type' : ' STRING' },
1224+ {'name' : 'bar' , 'type' : { 'type' : ' INT64'} },
1225+ {'name' : 'baz' , 'type' : { 'type' : ' STRING'} },
11911226 ],
11921227 },
11931228 'parameterValue' : {
1194- 'structValues' : {'bar' : '123' , 'baz' : 'abc' },
1229+ 'structValues' : {
1230+ 'bar' : {'value' : '123' },
1231+ 'baz' : {'value' : 'abc' },
1232+ },
11951233 },
11961234 }
11971235 sub_1 = self ._make_subparam ('bar' , 'INT64' , 123 )
@@ -1202,13 +1240,17 @@ def test_to_api_repr_w_name(self):
12021240 def test_to_api_repr_wo_name (self ):
12031241 EXPECTED = {
12041242 'parameterType' : {
1243+ 'type' : 'STRUCT' ,
12051244 'structTypes' : [
1206- {'name' : 'bar' , 'type' : ' INT64' },
1207- {'name' : 'baz' , 'type' : ' STRING' },
1245+ {'name' : 'bar' , 'type' : { 'type' : ' INT64'} },
1246+ {'name' : 'baz' , 'type' : { 'type' : ' STRING'} },
12081247 ],
12091248 },
12101249 'parameterValue' : {
1211- 'structValues' : {'bar' : '123' , 'baz' : 'abc' },
1250+ 'structValues' : {
1251+ 'bar' : {'value' : '123' },
1252+ 'baz' : {'value' : 'abc' },
1253+ },
12121254 },
12131255 }
12141256 sub_1 = self ._make_subparam ('bar' , 'INT64' , 123 )
0 commit comments