@@ -62,3 +62,124 @@ def test_constructor_text_and_gcs(self):
6262 with self .assertRaises (ValueError ):
6363 self ._makeOne (None , content = 'abc' ,
6464 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+ wiki2 = 'http://en.wikipedia.org/wiki/United_States'
106+ salience1 = 0.91391456
107+ salience2 = 0.086085409
108+ response = {
109+ 'entities' : [
110+ {
111+ 'name' : name1 ,
112+ 'type' : EntityType .OTHER ,
113+ 'metadata' : {},
114+ 'salience' : salience1 ,
115+ 'mentions' : [
116+ {
117+ 'text' : {
118+ 'content' : name1 ,
119+ 'beginOffset' : - 1
120+ }
121+ }
122+ ]
123+ },
124+ {
125+ 'name' : name2 ,
126+ 'type' : EntityType .LOCATION ,
127+ 'metadata' : {'wikipedia_url' : wiki2 },
128+ 'salience' : salience2 ,
129+ 'mentions' : [
130+ {
131+ 'text' : {
132+ 'content' : name2 ,
133+ 'beginOffset' : - 1 ,
134+ },
135+ },
136+ ],
137+ },
138+ ],
139+ 'language' : 'en' ,
140+ }
141+ connection = _Connection (response )
142+ client = _Client (connection = connection )
143+ document = self ._makeOne (client , content )
144+
145+ entities = document .analyze_entities ()
146+ self .assertEqual (len (entities ), 2 )
147+ entity1 = entities [0 ]
148+ self .assertIsInstance (entity1 , Entity )
149+ self .assertEqual (entity1 .name , name1 )
150+ self .assertEqual (entity1 .entity_type , EntityType .OTHER )
151+ self .assertEqual (entity1 .wikipedia_url , None )
152+ self .assertEqual (entity1 .metadata , {})
153+ self .assertEqual (entity1 .salience , salience1 )
154+ self .assertEqual (entity1 .mentions , [name1 ])
155+ entity2 = entities [1 ]
156+ self .assertIsInstance (entity2 , Entity )
157+ self .assertEqual (entity2 .name , name2 )
158+ self .assertEqual (entity2 .entity_type , EntityType .LOCATION )
159+ self .assertEqual (entity2 .wikipedia_url , wiki2 )
160+ self .assertEqual (entity2 .metadata , {})
161+ self .assertEqual (entity2 .salience , salience2 )
162+ self .assertEqual (entity2 .mentions , [name2 ])
163+
164+ # Verify the request.
165+ self .assertEqual (len (connection ._requested ), 1 )
166+ req = connection ._requested [0 ]
167+ self .assertEqual (req ['path' ], 'analyzeEntities' )
168+ self .assertEqual (req ['method' ], 'POST' )
169+
170+
171+ class _Connection (object ):
172+
173+ def __init__ (self , response ):
174+ self ._response = response
175+ self ._requested = []
176+
177+ def api_request (self , ** kwargs ):
178+ self ._requested .append (kwargs )
179+ return self ._response
180+
181+
182+ class _Client (object ):
183+
184+ def __init__ (self , connection = None ):
185+ self .connection = connection
0 commit comments