@@ -62,3 +62,127 @@ def test_constructor_text_and_gcs(self):
62
62
with self .assertRaises (ValueError ):
63
63
self ._makeOne (None , content = 'abc' ,
64
64
gcs_url = 'gs://some-bucket/some-obj.txt' )
65
+
66
+ def test__to_dict_with_content (self ):
67
+ klass = self ._getTargetClass ()
68
+ content = 'Hello World'
69
+ document = self ._makeOne (None , content = content )
70
+ info = document ._to_dict ()
71
+ self .assertEqual (info , {
72
+ 'content' : content ,
73
+ 'language' : document .language ,
74
+ 'type' : klass .PLAIN_TEXT ,
75
+ })
76
+
77
+ def test__to_dict_with_gcs (self ):
78
+ klass = self ._getTargetClass ()
79
+ gcs_url = 'gs://some-bucket/some-obj.html'
80
+ document = self ._makeOne (None , gcs_url = gcs_url )
81
+ info = document ._to_dict ()
82
+ self .assertEqual (info , {
83
+ 'gcsContentUri' : gcs_url ,
84
+ 'language' : document .language ,
85
+ 'type' : klass .PLAIN_TEXT ,
86
+ })
87
+
88
+ def test__to_dict_with_no_content (self ):
89
+ klass = self ._getTargetClass ()
90
+ document = self ._makeOne (None , content = '' )
91
+ document .content = None # Manually unset the content.
92
+ info = document ._to_dict ()
93
+ self .assertEqual (info , {
94
+ 'language' : document .language ,
95
+ 'type' : klass .PLAIN_TEXT ,
96
+ })
97
+
98
+ def test_analyze_entities (self ):
99
+ from gcloud .language .entity import Entity
100
+ from gcloud .language .entity import EntityType
101
+
102
+ name1 = 'R-O-C-K'
103
+ name2 = 'USA'
104
+ content = name1 + ' in the ' + name2
105
+ metadata1 = {
106
+ 'wikipedia_url' : 'http://en.wikipedia.org/wiki/Rock_music' ,
107
+ }
108
+ metadata2 = {
109
+ 'wikipedia_url' : 'http://en.wikipedia.org/wiki/United_States' ,
110
+ }
111
+ salience1 = 0.91391456
112
+ salience2 = 0.086085409
113
+ response = {
114
+ 'entities' : [
115
+ {
116
+ 'name' : name1 ,
117
+ 'type' : EntityType .OTHER ,
118
+ 'metadata' : metadata1 ,
119
+ 'salience' : salience1 ,
120
+ 'mentions' : [
121
+ {
122
+ 'text' : {
123
+ 'content' : name1 ,
124
+ 'beginOffset' : - 1
125
+ }
126
+ }
127
+ ]
128
+ },
129
+ {
130
+ 'name' : name2 ,
131
+ 'type' : EntityType .LOCATION ,
132
+ 'metadata' : metadata2 ,
133
+ 'salience' : salience2 ,
134
+ 'mentions' : [
135
+ {
136
+ 'text' : {
137
+ 'content' : name2 ,
138
+ 'beginOffset' : - 1 ,
139
+ },
140
+ },
141
+ ],
142
+ },
143
+ ],
144
+ 'language' : 'en' ,
145
+ }
146
+ connection = _Connection (response )
147
+ client = _Client (connection = connection )
148
+ document = self ._makeOne (client , content )
149
+
150
+ entities = document .analyze_entities ()
151
+ self .assertEqual (len (entities ), 2 )
152
+ entity1 = entities [0 ]
153
+ self .assertIsInstance (entity1 , Entity )
154
+ self .assertEqual (entity1 .name , name1 )
155
+ self .assertEqual (entity1 .entity_type , EntityType .OTHER )
156
+ self .assertEqual (entity1 .metadata , metadata1 )
157
+ self .assertEqual (entity1 .salience , salience1 )
158
+ self .assertEqual (entity1 .mentions , [name1 ])
159
+ entity2 = entities [1 ]
160
+ self .assertIsInstance (entity2 , Entity )
161
+ self .assertEqual (entity2 .name , name2 )
162
+ self .assertEqual (entity2 .entity_type , EntityType .LOCATION )
163
+ self .assertEqual (entity2 .metadata , metadata2 )
164
+ self .assertEqual (entity2 .salience , salience2 )
165
+ self .assertEqual (entity2 .mentions , [name2 ])
166
+
167
+ # Verify the request.
168
+ self .assertEqual (len (connection ._requested ), 1 )
169
+ req = connection ._requested [0 ]
170
+ self .assertEqual (req ['path' ], 'analyzeEntities' )
171
+ self .assertEqual (req ['method' ], 'POST' )
172
+
173
+
174
+ class _Connection (object ):
175
+
176
+ def __init__ (self , response ):
177
+ self ._response = response
178
+ self ._requested = []
179
+
180
+ def api_request (self , ** kwargs ):
181
+ self ._requested .append (kwargs )
182
+ return self ._response
183
+
184
+
185
+ class _Client (object ):
186
+
187
+ def __init__ (self , connection = None ):
188
+ self .connection = connection
0 commit comments