ibm_watson 2.0.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,7 +14,7 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
  #
17
- # IBM OpenAPI SDK Code Generator Version: 3.19.0-be3b4618-20201113-200858
17
+ # IBM OpenAPI SDK Code Generator Version: 3.31.0-902c9336-20210504-161156
18
18
  #
19
19
  # The IBM Watson™ Tone Analyzer service uses linguistic analysis to detect
20
20
  # emotional and language tones in written text. The service can analyze tone at both the
@@ -34,7 +34,6 @@ require "json"
34
34
  require "ibm_cloud_sdk_core"
35
35
  require_relative "./common.rb"
36
36
 
37
- # Module for the Watson APIs
38
37
  module IBMWatson
39
38
  ##
40
39
  # The Tone Analyzer V3 service.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IBMWatson
4
- VERSION = "2.0.1"
4
+ VERSION = "2.1.2"
5
5
  end
@@ -14,7 +14,7 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
  #
17
- # IBM OpenAPI SDK Code Generator Version: 3.19.0-be3b4618-20201113-200858
17
+ # IBM OpenAPI SDK Code Generator Version: 3.31.0-902c9336-20210504-161156
18
18
  #
19
19
  # IBM Watson™ Visual Recognition is discontinued. Existing instances are supported
20
20
  # until 1 December 2021, but as of 7 January 2021, you can't create instances. Any
@@ -31,7 +31,6 @@ require "json"
31
31
  require "ibm_cloud_sdk_core"
32
32
  require_relative "./common.rb"
33
33
 
34
- # Module for the Watson APIs
35
34
  module IBMWatson
36
35
  ##
37
36
  # The Visual Recognition V3 service.
@@ -14,7 +14,7 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
  #
17
- # IBM OpenAPI SDK Code Generator Version: 3.19.0-be3b4618-20201113-200858
17
+ # IBM OpenAPI SDK Code Generator Version: 3.31.0-902c9336-20210504-161156
18
18
  #
19
19
  # IBM Watson™ Visual Recognition is discontinued. Existing instances are supported
20
20
  # until 1 December 2021, but as of 7 January 2021, you can't create instances. Any
@@ -30,7 +30,6 @@ require "json"
30
30
  require "ibm_cloud_sdk_core"
31
31
  require_relative "./common.rb"
32
32
 
33
- # Module for the Watson APIs
34
33
  module IBMWatson
35
34
  ##
36
35
  # The Visual Recognition V4 service.
@@ -159,7 +158,7 @@ module IBMWatson
159
158
  #########################
160
159
 
161
160
  ##
162
- # @!method create_collection(name: nil, description: nil)
161
+ # @!method create_collection(name: nil, description: nil, training_status: nil)
163
162
  # Create a collection.
164
163
  # Create a collection that can be used to store images.
165
164
  #
@@ -171,8 +170,9 @@ module IBMWatson
171
170
  # @param name [String] The name of the collection. The name can contain alphanumeric, underscore, hyphen,
172
171
  # and dot characters. It cannot begin with the reserved prefix `sys-`.
173
172
  # @param description [String] The description of the collection.
173
+ # @param training_status [TrainingStatus] Training status information for the collection.
174
174
  # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
175
- def create_collection(name: nil, description: nil)
175
+ def create_collection(name: nil, description: nil, training_status: nil)
176
176
  raise ArgumentError.new("version must be provided") if version.nil?
177
177
 
178
178
  headers = {
@@ -186,7 +186,8 @@ module IBMWatson
186
186
 
187
187
  data = {
188
188
  "name" => name,
189
- "description" => description
189
+ "description" => description,
190
+ "training_status" => training_status
190
191
  }
191
192
 
192
193
  method_url = "/v4/collections"
@@ -264,7 +265,7 @@ module IBMWatson
264
265
  end
265
266
 
266
267
  ##
267
- # @!method update_collection(collection_id:, name: nil, description: nil)
268
+ # @!method update_collection(collection_id:, name: nil, description: nil, training_status: nil)
268
269
  # Update a collection.
269
270
  # Update the name or description of a collection.
270
271
  #
@@ -274,8 +275,9 @@ module IBMWatson
274
275
  # @param name [String] The name of the collection. The name can contain alphanumeric, underscore, hyphen,
275
276
  # and dot characters. It cannot begin with the reserved prefix `sys-`.
276
277
  # @param description [String] The description of the collection.
278
+ # @param training_status [TrainingStatus] Training status information for the collection.
277
279
  # @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.
278
- def update_collection(collection_id:, name: nil, description: nil)
280
+ def update_collection(collection_id:, name: nil, description: nil, training_status: nil)
279
281
  raise ArgumentError.new("version must be provided") if version.nil?
280
282
 
281
283
  raise ArgumentError.new("collection_id must be provided") if collection_id.nil?
@@ -291,7 +293,8 @@ module IBMWatson
291
293
 
292
294
  data = {
293
295
  "name" => name,
294
- "description" => description
296
+ "description" => description,
297
+ "training_status" => training_status
295
298
  }
296
299
 
297
300
  method_url = "/v4/collections/%s" % [ERB::Util.url_encode(collection_id)]
@@ -120,6 +120,7 @@ if !ENV["DISCOVERY_V2_APIKEY"].nil?
120
120
  )
121
121
  query_id = service_response.result["query_id"]
122
122
  refute(service_response.nil?)
123
+ # puts JSON.pretty_generate(service_response.result)
123
124
 
124
125
  service_response = service.get_training_query(
125
126
  project_id: @project_id,
@@ -134,6 +135,12 @@ if !ENV["DISCOVERY_V2_APIKEY"].nil?
134
135
  examples: []
135
136
  )
136
137
  refute(service_response.nil?)
138
+
139
+ service_response = service.delete_training_query(
140
+ project_id: @project_id,
141
+ query_id: query_id
142
+ )
143
+ assert(service_response.nil?)
137
144
  end
138
145
 
139
146
  def test_create_get_update_delete_collection
@@ -238,6 +245,14 @@ if !ENV["DISCOVERY_V2_APIKEY"].nil?
238
245
  assert(service_response.nil?)
239
246
  end
240
247
 
248
+ def test_query_collection_notices
249
+ service_response = service.query_collection_notices(
250
+ project_id: @project_id,
251
+ collection_id: @collection_id
252
+ )
253
+ refute(service_response.result.nil?)
254
+ end
255
+
241
256
  def test_delete_user_data
242
257
  skip "Covered with the unit test. No need to run it here"
243
258
 
@@ -86,7 +86,7 @@ if !ENV["NATURAL_LANGUAGE_UNDERSTANDING_APIKEY"].nil? && !ENV["NATURAL_LANGUAGE_
86
86
  end
87
87
 
88
88
  def test_list_models
89
- skip
89
+ # skip
90
90
  service.add_default_headers(
91
91
  headers: {
92
92
  "X-Watson-Learning-Opt-Out" => "1",
@@ -96,6 +96,139 @@ if !ENV["NATURAL_LANGUAGE_UNDERSTANDING_APIKEY"].nil? && !ENV["NATURAL_LANGUAGE_
96
96
  service_response = service.list_models
97
97
  assert((200..299).cover?(service_response.status))
98
98
  end
99
+
100
+ def test_check_orphands
101
+ skip "Use to help delete old models"
102
+ service.add_default_headers(
103
+ headers: {
104
+ "X-Watson-Learning-Opt-Out" => "1",
105
+ "X-Watson-Test" => "1"
106
+ }
107
+ )
108
+ service_response = service.list_sentiment_models
109
+ puts JSON.pretty_generate(service_response.result)
110
+ service_response = service.list_categories_models
111
+ puts JSON.pretty_generate(service_response.result)
112
+ service_response = service.list_classifications_models
113
+ puts JSON.pretty_generate(service_response.result)
114
+
115
+ # service.delete_sentiment_model(model_id: "model_id1")
116
+ # service.delete_categories_model(model_id: "0122b971-94c9-4468-a98f-930f4ce28c32")
117
+ # service.delete_classifications_model(model_id: "0122b971-94c9-4468-a98f-930f4ce28c32")
118
+ end
119
+
120
+ def test_sentiment_models
121
+ # skip "test_sentiment_models"
122
+ service.add_default_headers(
123
+ headers: {
124
+ "X-Watson-Learning-Opt-Out" => "1",
125
+ "X-Watson-Test" => "1"
126
+ }
127
+ )
128
+ training_data = File.open(Dir.getwd + "/resources/nlu_sentiment_data.csv")
129
+ service_response = service.create_sentiment_model(
130
+ language: "en",
131
+ training_data: training_data
132
+ )
133
+ assert((200..299).cover?(service_response.status))
134
+
135
+ service_response = service.list_sentiment_models
136
+ model_id = service_response.result["models"][0]["model_id"]
137
+ assert((200..299).cover?(service_response.status))
138
+
139
+ service_response = service.get_sentiment_model(model_id: model_id)
140
+ assert((200..299).cover?(service_response.status))
141
+
142
+ service_response = service.update_sentiment_model(
143
+ model_id: model_id,
144
+ language: "en",
145
+ training_data: training_data
146
+ )
147
+ assert((200..299).cover?(service_response.status))
148
+
149
+ service_response = service.delete_sentiment_model(
150
+ model_id: model_id
151
+ )
152
+ assert((200..299).cover?(service_response.status))
153
+ end
154
+
155
+ def test_categories_models
156
+ # skip "test_categories_models"
157
+ service.add_default_headers(
158
+ headers: {
159
+ "X-Watson-Learning-Opt-Out" => "1",
160
+ "X-Watson-Test" => "1"
161
+ }
162
+ )
163
+ training_data = File.open(Dir.getwd + "/resources/nlu_categories_training.json")
164
+ service_response = service.create_categories_model(
165
+ language: "en",
166
+ training_data: training_data,
167
+ training_data_content_type: "application/json"
168
+ )
169
+ assert((200..299).cover?(service_response.status))
170
+
171
+ service_response = service.list_categories_models
172
+ model_id = service_response.result["models"][0]["model_id"]
173
+ assert((200..299).cover?(service_response.status))
174
+ # puts JSON.pretty_generate(service_response.result)
175
+ # puts JSON.pretty_generate(model_id)
176
+
177
+ service_response = service.get_categories_model(model_id: model_id)
178
+ assert((200..299).cover?(service_response.status))
179
+
180
+ service_response = service.update_categories_model(
181
+ model_id: model_id,
182
+ language: "en",
183
+ training_data: training_data,
184
+ training_data_content_type: "application/json"
185
+ )
186
+ assert((200..299).cover?(service_response.status))
187
+
188
+ service_response = service.delete_categories_model(
189
+ model_id: model_id
190
+ )
191
+ assert((200..299).cover?(service_response.status))
192
+ end
193
+
194
+ def test_classifications_models
195
+ # skip "test_classifications_models"
196
+ service.add_default_headers(
197
+ headers: {
198
+ "X-Watson-Learning-Opt-Out" => "1",
199
+ "X-Watson-Test" => "1"
200
+ }
201
+ )
202
+ training_data = File.open(Dir.getwd + "/resources/nlu_classifications_training.json")
203
+ service_response = service.create_classifications_model(
204
+ language: "en",
205
+ training_data: training_data,
206
+ training_data_content_type: "application/json"
207
+ )
208
+ assert((200..299).cover?(service_response.status))
209
+
210
+ service_response = service.list_classifications_models
211
+ model_id = service_response.result["models"][0]["model_id"]
212
+ assert((200..299).cover?(service_response.status))
213
+ # puts JSON.pretty_generate(service_response.result)
214
+ # puts JSON.pretty_generate(model_id)
215
+
216
+ service_response = service.get_classifications_model(model_id: model_id)
217
+ assert((200..299).cover?(service_response.status))
218
+
219
+ service_response = service.update_classifications_model(
220
+ model_id: model_id,
221
+ language: "en",
222
+ training_data: training_data,
223
+ training_data_content_type: "application/json"
224
+ )
225
+ assert((200..299).cover?(service_response.status))
226
+
227
+ service_response = service.delete_classifications_model(
228
+ model_id: model_id
229
+ )
230
+ assert((200..299).cover?(service_response.status))
231
+ end
99
232
  end
100
233
  else
101
234
  class NaturalLanguageUnderstandingV1Test < Minitest::Test
@@ -83,6 +83,63 @@ if !ENV["TEXT_TO_SPEECH_APIKEY"].nil? && !ENV["TEXT_TO_SPEECH_URL"].nil?
83
83
  customization_id: customization_id
84
84
  )
85
85
  end
86
+
87
+ def test_custom_prompts
88
+ customization_id = @service.create_custom_model(
89
+ name: "test_integration_customization",
90
+ description: "RUBY customization for tests"
91
+ ).result["customization_id"]
92
+
93
+ prompt_metadata = { prompt_text: "Thank you and goodbye" }
94
+ prompt_json = JSON[prompt_metadata]
95
+ audio_file = File.open(Dir.getwd + "/resources/speech.wav")
96
+ prompt = @service.add_custom_prompt(
97
+ customization_id: customization_id,
98
+ prompt_id: "rubyprompt_id",
99
+ metadata: prompt_json,
100
+ file: audio_file
101
+ ).result["prompt"]
102
+ assert(prompt == "Thank you and goodbye")
103
+
104
+ prompts = @service.list_custom_prompts(customization_id: customization_id).result["prompts"]
105
+ refute(prompts.nil?)
106
+
107
+ prompt = @service.get_custom_prompt(
108
+ customization_id: customization_id,
109
+ prompt_id: "rubyprompt_id"
110
+ ).result["prompt"]
111
+ assert(prompt == "Thank you and goodbye")
112
+
113
+ @service.delete_custom_prompt(
114
+ customization_id: customization_id,
115
+ prompt_id: "rubyprompt_id"
116
+ )
117
+
118
+ @service.delete_custom_model(
119
+ customization_id: customization_id
120
+ )
121
+ end
122
+
123
+ def test_speaker_models
124
+ audio_file = File.open(Dir.getwd + "/resources/speech.wav")
125
+ @service.create_speaker_model(
126
+ speaker_name: "RubyMike",
127
+ audio: audio_file
128
+ ).result["speaker_model"]
129
+
130
+ speakers = @service.list_speaker_models.result["speakers"]
131
+ speaker_id = speakers[0]["speaker_id"]
132
+ # puts JSON.pretty_generate(speakers)
133
+
134
+ @service.get_speaker_model(
135
+ speaker_id: speaker_id
136
+ ).result["models_speaker"]
137
+
138
+ # speaker_id = d3d03b69-4035-4420-928d-7ac2e0249829
139
+ @service.delete_speaker_model(
140
+ speaker_id: speaker_id
141
+ )
142
+ end
86
143
  end
87
144
  else
88
145
  class TextToSpeechV1Test < Minitest::Test
@@ -467,4 +467,33 @@ class DiscoveryV2Test < Minitest::Test
467
467
  )
468
468
  assert_nil(service_response)
469
469
  end
470
+
471
+ def test_delete_training_query
472
+ stub_request(:delete, "https://api.us-south.discovery.watson.cloud.ibm.com/discovery/api/v2/projects/project/training_data/queries/queryid?version=2018-03-05")
473
+ .with(
474
+ headers: {
475
+ "Host" => "api.us-south.discovery.watson.cloud.ibm.com"
476
+ }
477
+ ).to_return(status: 200, body: { "body" => "hello" }.to_json, headers: { "Content-Type" => "application/json" })
478
+ service_response = service.delete_training_query(
479
+ project_id: "project",
480
+ query_id: "queryid"
481
+ )
482
+ assert_nil(service_response)
483
+ end
484
+
485
+ def test_query_collection_notices
486
+ stub_request(:get, "https://api.us-south.discovery.watson.cloud.ibm.com/discovery/api/v2/projects/project/collections/collection/notices?version=2018-03-05")
487
+ .with(
488
+ headers: {
489
+ "Accept" => "application/json",
490
+ "Host" => "api.us-south.discovery.watson.cloud.ibm.com"
491
+ }
492
+ ).to_return(status: 200, body: { "body" => "hello" }.to_json, headers: { "Content-Type" => "application/json" })
493
+ service_response = service.query_collection_notices(
494
+ project_id: "project",
495
+ collection_id: "collection"
496
+ )
497
+ assert_equal({ "body" => "hello" }, service_response.result)
498
+ end
470
499
  end
@@ -144,4 +144,235 @@ class NaturalLanguageUnderstandingV1Test < Minitest::Test
144
144
  )
145
145
  assert_equal({ "deleted" => model_id }, service_response.result)
146
146
  end
147
+
148
+ def test_sentiment_models
149
+ authenticator = IBMWatson::Authenticators::BasicAuthenticator.new(
150
+ username: "username",
151
+ password: "password"
152
+ )
153
+ service = IBMWatson::NaturalLanguageUnderstandingV1.new(
154
+ version: "2018-03-16",
155
+ authenticator: authenticator
156
+ )
157
+
158
+ stub_request(:post, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment?version=2018-03-16")
159
+ .with(
160
+ headers: {
161
+ "Accept" => "application/json",
162
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
163
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
164
+ }
165
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
166
+ training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
167
+ service_response = service.create_sentiment_model(
168
+ language: "en",
169
+ training_data: training_data
170
+ )
171
+ assert_equal({ "resulting_key" => true }, service_response.result)
172
+
173
+ stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment?version=2018-03-16")
174
+ .with(
175
+ headers: {
176
+ "Accept" => "application/json",
177
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
178
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
179
+ }
180
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
181
+ service_response = service.list_sentiment_models
182
+ assert_equal({ "resulting_key" => true }, service_response.result)
183
+
184
+ stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment/model_id?version=2018-03-16")
185
+ .with(
186
+ headers: {
187
+ "Accept" => "application/json",
188
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
189
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
190
+ }
191
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
192
+ service_response = service.get_sentiment_model(model_id: "model_id")
193
+ assert_equal({ "resulting_key" => true }, service_response.result)
194
+
195
+ stub_request(:put, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment/model_id?version=2018-03-16")
196
+ .with(
197
+ headers: {
198
+ "Accept" => "application/json",
199
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
200
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
201
+ }
202
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
203
+ training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
204
+ service_response = service.update_sentiment_model(
205
+ model_id: "model_id",
206
+ language: "en",
207
+ training_data: training_data
208
+ )
209
+ assert_equal({ "resulting_key" => true }, service_response.result)
210
+
211
+ stub_request(:delete, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment/model_id?version=2018-03-16")
212
+ .with(
213
+ headers: {
214
+ "Accept" => "application/json",
215
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
216
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
217
+ }
218
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
219
+ service_response = service.delete_sentiment_model(
220
+ model_id: "model_id"
221
+ )
222
+ assert_equal({ "resulting_key" => true }, service_response.result)
223
+ end
224
+
225
+ def test_categories_models
226
+ authenticator = IBMWatson::Authenticators::BasicAuthenticator.new(
227
+ username: "username",
228
+ password: "password"
229
+ )
230
+ service = IBMWatson::NaturalLanguageUnderstandingV1.new(
231
+ version: "2018-03-16",
232
+ authenticator: authenticator
233
+ )
234
+
235
+ stub_request(:post, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories?version=2018-03-16")
236
+ .with(
237
+ headers: {
238
+ "Accept" => "application/json",
239
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
240
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
241
+ }
242
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
243
+ training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
244
+ service_response = service.create_categories_model(
245
+ language: "en",
246
+ training_data: training_data
247
+ )
248
+ assert_equal({ "resulting_key" => true }, service_response.result)
249
+
250
+ stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories?version=2018-03-16")
251
+ .with(
252
+ headers: {
253
+ "Accept" => "application/json",
254
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
255
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
256
+ }
257
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
258
+ service_response = service.list_categories_models
259
+ assert_equal({ "resulting_key" => true }, service_response.result)
260
+
261
+ stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories/model_id?version=2018-03-16")
262
+ .with(
263
+ headers: {
264
+ "Accept" => "application/json",
265
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
266
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
267
+ }
268
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
269
+ service_response = service.get_categories_model(model_id: "model_id")
270
+ assert_equal({ "resulting_key" => true }, service_response.result)
271
+
272
+ stub_request(:put, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories/model_id?version=2018-03-16")
273
+ .with(
274
+ headers: {
275
+ "Accept" => "application/json",
276
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
277
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
278
+ }
279
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
280
+ training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
281
+ service_response = service.update_categories_model(
282
+ model_id: "model_id",
283
+ language: "en",
284
+ training_data: training_data
285
+ )
286
+ assert_equal({ "resulting_key" => true }, service_response.result)
287
+
288
+ stub_request(:delete, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories/model_id?version=2018-03-16")
289
+ .with(
290
+ headers: {
291
+ "Accept" => "application/json",
292
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
293
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
294
+ }
295
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
296
+ service_response = service.delete_categories_model(
297
+ model_id: "model_id"
298
+ )
299
+ assert_equal({ "resulting_key" => true }, service_response.result)
300
+ end
301
+
302
+ def test_classifications_models
303
+ authenticator = IBMWatson::Authenticators::BasicAuthenticator.new(
304
+ username: "username",
305
+ password: "password"
306
+ )
307
+ service = IBMWatson::NaturalLanguageUnderstandingV1.new(
308
+ version: "2018-03-16",
309
+ authenticator: authenticator
310
+ )
311
+
312
+ stub_request(:post, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications?version=2018-03-16")
313
+ .with(
314
+ headers: {
315
+ "Accept" => "application/json",
316
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
317
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
318
+ }
319
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
320
+ training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
321
+ service_response = service.create_classifications_model(
322
+ language: "en",
323
+ training_data: training_data
324
+ )
325
+ assert_equal({ "resulting_key" => true }, service_response.result)
326
+
327
+ stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications?version=2018-03-16")
328
+ .with(
329
+ headers: {
330
+ "Accept" => "application/json",
331
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
332
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
333
+ }
334
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
335
+ service_response = service.list_classifications_models
336
+ assert_equal({ "resulting_key" => true }, service_response.result)
337
+
338
+ stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications/model_id?version=2018-03-16")
339
+ .with(
340
+ headers: {
341
+ "Accept" => "application/json",
342
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
343
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
344
+ }
345
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
346
+ service_response = service.get_classifications_model(model_id: "model_id")
347
+ assert_equal({ "resulting_key" => true }, service_response.result)
348
+
349
+ stub_request(:put, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications/model_id?version=2018-03-16")
350
+ .with(
351
+ headers: {
352
+ "Accept" => "application/json",
353
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
354
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
355
+ }
356
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
357
+ training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
358
+ service_response = service.update_classifications_model(
359
+ model_id: "model_id",
360
+ language: "en",
361
+ training_data: training_data
362
+ )
363
+ assert_equal({ "resulting_key" => true }, service_response.result)
364
+
365
+ stub_request(:delete, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications/model_id?version=2018-03-16")
366
+ .with(
367
+ headers: {
368
+ "Accept" => "application/json",
369
+ "Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
370
+ "Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
371
+ }
372
+ ).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
373
+ service_response = service.delete_classifications_model(
374
+ model_id: "model_id"
375
+ )
376
+ assert_equal({ "resulting_key" => true }, service_response.result)
377
+ end
147
378
  end