ibm_watson 0.1.0 → 0.1.1
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.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/bin/console +1 -0
- data/lib/ibm_watson/iam_token_manager.rb +7 -7
- data/lib/ibm_watson/version.rb +3 -1
- data/lib/ibm_watson/watson_service.rb +2 -2
- data/lib/ibm_watson/websocket/speech_to_text_websocket_listener.rb +3 -3
- data/rakefile +1 -1
- data/test/integration/test_assistant_v1.rb +640 -638
- data/test/integration/test_discovery_v1.rb +173 -170
- data/test/integration/test_iam_assistant_v1.rb +674 -672
- data/test/integration/test_language_translator_v3.rb +68 -66
- data/test/integration/test_natural_language_classifier_v1.rb +57 -55
- data/test/integration/test_natural_language_understanding_v1.rb +89 -87
- data/test/integration/test_personality_insights_v3.rb +87 -85
- data/test/integration/test_speech_to_text_v1.rb +143 -142
- data/test/integration/test_text_to_speech_v1.rb +71 -69
- data/test/integration/test_tone_analyzer_v3.rb +65 -63
- data/test/integration/test_visual_recognition_v3.rb +53 -51
- data/test/test_helper.rb +0 -1
- metadata +4 -18
@@ -4,78 +4,80 @@ require("json")
|
|
4
4
|
require_relative("./../test_helper.rb")
|
5
5
|
require("minitest/hooks/test")
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
7
|
+
unless ENV["LANGUAGE_TRANSLATOR_V3_USERNAME"].nil? || ENV["LANGUAGE_TRANSLATOR_V3_PASSWORD"].nil?
|
8
|
+
# Integration tests for the Language Translator V3 Service
|
9
|
+
class LanguageTranslatorV3Test < Minitest::Test
|
10
|
+
include Minitest::Hooks
|
11
|
+
attr_accessor :service
|
12
|
+
def before_all
|
13
|
+
@service = IBMWatson::LanguageTranslatorV3.new(
|
14
|
+
username: ENV["LANGUAGE_TRANSLATOR_V3_USERNAME"],
|
15
|
+
password: ENV["LANGUAGE_TRANSLATOR_V3_PASSWORD"],
|
16
|
+
version: "2018-05-01"
|
17
|
+
)
|
18
|
+
@service.add_default_headers(
|
19
|
+
headers: {
|
20
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
21
|
+
"X-Watson-Test" => "1"
|
22
|
+
}
|
23
|
+
)
|
24
|
+
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
def test_get_model
|
27
|
+
service_response = service.get_model(
|
28
|
+
model_id: "en-it"
|
29
|
+
).result
|
30
|
+
refute(service_response.nil?)
|
31
|
+
end
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
def test_list_models
|
34
|
+
service_response = service.list_models.result
|
35
|
+
refute(service_response.nil?)
|
36
|
+
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
38
|
+
def test_translate_source_target
|
39
|
+
service_response = service.translate(
|
40
|
+
text: "Hola, cómo estás? €",
|
41
|
+
source: "es",
|
42
|
+
target: "en"
|
43
|
+
).result
|
44
|
+
refute(service_response.nil?)
|
45
|
+
end
|
45
46
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
47
|
+
def test_translate_model_id
|
48
|
+
service_response = service.translate(
|
49
|
+
text: "Messi is the best ever",
|
50
|
+
model_id: "en-es"
|
51
|
+
).result
|
52
|
+
refute(service_response.nil?)
|
53
|
+
end
|
53
54
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
55
|
+
def test_identify
|
56
|
+
service_response = service.identify(
|
57
|
+
text: "祝你有美好的一天"
|
58
|
+
).result
|
59
|
+
refute(service_response.nil?)
|
60
|
+
end
|
60
61
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
def test_list_identifiable_languages
|
63
|
+
service_response = service.list_identifiable_languages.result
|
64
|
+
refute(service_response.nil?)
|
65
|
+
end
|
65
66
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
67
|
+
def test_create_delete_model
|
68
|
+
skip "Methods not available in lite plans"
|
69
|
+
custom_model = File.open(Dir.getwd + "/resources/language_translator_model.tmx")
|
70
|
+
service_response = service.create_model(
|
71
|
+
base_model_id: "en-fr",
|
72
|
+
name: "test_glossary_ruby_integration",
|
73
|
+
forced_glossary: custom_model
|
74
|
+
).result
|
75
|
+
refute(service_response.nil?)
|
76
|
+
model_id = service_response["model_id"]
|
77
|
+
service_response = service.delete_model(
|
78
|
+
model_id: model_id
|
79
|
+
).result
|
80
|
+
assert_equal("OK", service_response["status"])
|
81
|
+
end
|
80
82
|
end
|
81
83
|
end
|
@@ -4,66 +4,68 @@ require("json")
|
|
4
4
|
require_relative("./../test_helper.rb")
|
5
5
|
require("minitest/hooks/test")
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
def test_list_classifier
|
25
|
-
list_classifiers = @service.list_classifiers.result
|
26
|
-
refute(list_classifiers.nil?)
|
27
|
-
end
|
7
|
+
unless ENV["NATURAL_LANGUAGE_CLASSIFIER_USERNAME"].nil? || ENV["NATURAL_LANGUAGE_CLASSIFIER_PASSWORD"].nil?
|
8
|
+
# Integration tests for the Natural Language Classifier V1 Service
|
9
|
+
class NaturalLanguageClassifierV1Test < Minitest::Test
|
10
|
+
include Minitest::Hooks
|
11
|
+
attr_accessor :service
|
12
|
+
def before_all
|
13
|
+
@service = IBMWatson::NaturalLanguageClassifierV1.new(
|
14
|
+
username: ENV["NATURAL_LANGUAGE_CLASSIFIER_USERNAME"],
|
15
|
+
password: ENV["NATURAL_LANGUAGE_CLASSIFIER_PASSWORD"]
|
16
|
+
)
|
17
|
+
@service.add_default_headers(
|
18
|
+
headers: {
|
19
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
20
|
+
"X-Watson-Test" => "1"
|
21
|
+
}
|
22
|
+
)
|
23
|
+
end
|
28
24
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
metadata = { "name" => "my-classifier", "language" => "en" }
|
33
|
-
status = nil
|
34
|
-
classifier = @service.create_classifier(
|
35
|
-
metadata: metadata,
|
36
|
-
training_data: training_data
|
37
|
-
).result
|
38
|
-
classifier_id = classifier["classifier_id"]
|
39
|
-
iterations = 0
|
40
|
-
while iterations < 15
|
41
|
-
status = @service.get_classifier(classifier_id: classifier_id)
|
42
|
-
iterations += 1
|
43
|
-
sleep(5) unless status["status"] == "Available"
|
25
|
+
def test_list_classifier
|
26
|
+
list_classifiers = @service.list_classifiers.result
|
27
|
+
refute(list_classifiers.nil?)
|
44
28
|
end
|
45
|
-
|
29
|
+
|
30
|
+
def test_classify_text
|
31
|
+
skip "The classifier takes more than a minute"
|
32
|
+
training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
|
33
|
+
metadata = { "name" => "my-classifier", "language" => "en" }
|
34
|
+
status = nil
|
35
|
+
classifier = @service.create_classifier(
|
36
|
+
metadata: metadata,
|
37
|
+
training_data: training_data
|
38
|
+
).result
|
39
|
+
classifier_id = classifier["classifier_id"]
|
40
|
+
iterations = 0
|
41
|
+
while iterations < 15
|
42
|
+
status = @service.get_classifier(classifier_id: classifier_id)
|
43
|
+
iterations += 1
|
44
|
+
sleep(5) unless status["status"] == "Available"
|
45
|
+
end
|
46
|
+
unless status["status"] == "Available"
|
47
|
+
@service.delete_classifier(
|
48
|
+
classifier_id: classifier_id
|
49
|
+
)
|
50
|
+
assert(false, msg: "Classifier is not available")
|
51
|
+
end
|
52
|
+
|
53
|
+
classes = @service.classify(
|
54
|
+
classifier_id: classifier_id,
|
55
|
+
text: "How hot will it be tomorrow?"
|
56
|
+
).result
|
57
|
+
refute(classes.nil?)
|
58
|
+
|
59
|
+
collection = [{ "text" => "How hot will it be today?" }, { "text" => "Is it hot outside?" }]
|
60
|
+
classes = @service.classify_collection(
|
61
|
+
classifier_id: classifier_id,
|
62
|
+
collection: collection
|
63
|
+
).result
|
64
|
+
refute(classes.nil?)
|
65
|
+
|
46
66
|
@service.delete_classifier(
|
47
67
|
classifier_id: classifier_id
|
48
68
|
)
|
49
|
-
assert(false, msg: "Classifier is not available")
|
50
69
|
end
|
51
|
-
|
52
|
-
classes = @service.classify(
|
53
|
-
classifier_id: classifier_id,
|
54
|
-
text: "How hot will it be tomorrow?"
|
55
|
-
).result
|
56
|
-
refute(classes.nil?)
|
57
|
-
|
58
|
-
collection = [{ "text" => "How hot will it be today?" }, { "text" => "Is it hot outside?" }]
|
59
|
-
classes = @service.classify_collection(
|
60
|
-
classifier_id: classifier_id,
|
61
|
-
collection: collection
|
62
|
-
).result
|
63
|
-
refute(classes.nil?)
|
64
|
-
|
65
|
-
@service.delete_classifier(
|
66
|
-
classifier_id: classifier_id
|
67
|
-
)
|
68
70
|
end
|
69
71
|
end
|
@@ -3,96 +3,98 @@
|
|
3
3
|
require("json")
|
4
4
|
require_relative("./../test_helper.rb")
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
)
|
20
|
-
text = "IBM is an American multinational technology company "
|
21
|
-
text += "headquartered in Armonk, New York, United States, "
|
22
|
-
text += "with operations in over 170 countries."
|
23
|
-
service_response = service.analyze(
|
24
|
-
features: {
|
25
|
-
entities: {
|
26
|
-
emotion: true,
|
27
|
-
sentiment: true,
|
28
|
-
limit: 2
|
29
|
-
},
|
30
|
-
keywords: {
|
31
|
-
emotion: true,
|
32
|
-
sentiment: true,
|
33
|
-
limit: 2
|
6
|
+
unless ENV["NATURAL_LANGUAGE_UNDERSTANDING_USERNAME"].nil? || ENV["NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD"].nil?
|
7
|
+
# Integration tests for the Natural Language Understanding V1 Service
|
8
|
+
class NaturalLanguageUnderstandingV1Test < Minitest::Test
|
9
|
+
def test_text_analyze
|
10
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
11
|
+
version: "2018-03-16",
|
12
|
+
username: ENV["NATURAL_LANGUAGE_UNDERSTANDING_USERNAME"],
|
13
|
+
password: ENV["NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD"]
|
14
|
+
)
|
15
|
+
service.add_default_headers(
|
16
|
+
headers: {
|
17
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
18
|
+
"X-Watson-Test" => "1"
|
34
19
|
}
|
35
|
-
|
36
|
-
text
|
37
|
-
|
38
|
-
|
39
|
-
|
20
|
+
)
|
21
|
+
text = "IBM is an American multinational technology company "
|
22
|
+
text += "headquartered in Armonk, New York, United States, "
|
23
|
+
text += "with operations in over 170 countries."
|
24
|
+
service_response = service.analyze(
|
25
|
+
features: {
|
26
|
+
entities: {
|
27
|
+
emotion: true,
|
28
|
+
sentiment: true,
|
29
|
+
limit: 2
|
30
|
+
},
|
31
|
+
keywords: {
|
32
|
+
emotion: true,
|
33
|
+
sentiment: true,
|
34
|
+
limit: 2
|
35
|
+
}
|
36
|
+
},
|
37
|
+
text: text
|
38
|
+
)
|
39
|
+
assert((200..299).cover?(service_response.status))
|
40
|
+
end
|
40
41
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
42
|
+
def test_html_analyze
|
43
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
44
|
+
version: "2018-03-16",
|
45
|
+
username: ENV["NATURAL_LANGUAGE_UNDERSTANDING_USERNAME"],
|
46
|
+
password: ENV["NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD"]
|
47
|
+
)
|
48
|
+
service.add_default_headers(
|
49
|
+
headers: {
|
50
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
51
|
+
"X-Watson-Test" => "1"
|
52
|
+
}
|
53
|
+
)
|
54
|
+
service_response = service.analyze(
|
55
|
+
features: {
|
56
|
+
sentiment: {}
|
57
|
+
},
|
58
|
+
html: "<span>hello this is a test </span>"
|
59
|
+
)
|
60
|
+
assert((200..299).cover?(service_response.status))
|
61
|
+
end
|
61
62
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
63
|
+
def test_url_analyze
|
64
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
65
|
+
version: "2018-03-16",
|
66
|
+
username: ENV["NATURAL_LANGUAGE_UNDERSTANDING_USERNAME"],
|
67
|
+
password: ENV["NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD"]
|
68
|
+
)
|
69
|
+
service.add_default_headers(
|
70
|
+
headers: {
|
71
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
72
|
+
"X-Watson-Test" => "1"
|
73
|
+
}
|
74
|
+
)
|
75
|
+
service_response = service.analyze(
|
76
|
+
features: {
|
77
|
+
categories: {}
|
78
|
+
},
|
79
|
+
url: "www.ibm.com"
|
80
|
+
)
|
81
|
+
assert((200..299).cover?(service_response.status))
|
82
|
+
end
|
82
83
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
84
|
+
def test_list_models
|
85
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
86
|
+
version: "2018-03-16",
|
87
|
+
username: ENV["NATURAL_LANGUAGE_UNDERSTANDING_USERNAME"],
|
88
|
+
password: ENV["NATURAL_LANGUAGE_UNDERSTANDING_PASSWORD"]
|
89
|
+
)
|
90
|
+
service.add_default_headers(
|
91
|
+
headers: {
|
92
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
93
|
+
"X-Watson-Test" => "1"
|
94
|
+
}
|
95
|
+
)
|
96
|
+
service_response = service.list_models
|
97
|
+
assert((200..299).cover?(service_response.status))
|
98
|
+
end
|
97
99
|
end
|
98
100
|
end
|
@@ -3,93 +3,95 @@
|
|
3
3
|
require("json")
|
4
4
|
require_relative("./../test_helper.rb")
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
6
|
+
unless ENV["PERSONALITY_INSIGHTS_USERNAME"].nil? || ENV["PERSONALITY_INSIGHTS_PASSWORD"].nil?
|
7
|
+
# Integration tests for the Personality Insights V3 Service
|
8
|
+
class PersonalityInsightsV3Test < Minitest::Test
|
9
|
+
def test_plain_to_json
|
10
|
+
personality_text = File.read(Dir.getwd + "/resources/personality-v3.txt")
|
11
|
+
service = IBMWatson::PersonalityInsightsV3.new(
|
12
|
+
version: "2017-10-13",
|
13
|
+
username: ENV["PERSONALITY_INSIGHTS_USERNAME"],
|
14
|
+
password: ENV["PERSONALITY_INSIGHTS_PASSWORD"]
|
15
|
+
)
|
16
|
+
service.add_default_headers(
|
17
|
+
headers: {
|
18
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
19
|
+
"X-Watson-Test" => "1"
|
20
|
+
}
|
21
|
+
)
|
22
|
+
service_response = service.profile(
|
23
|
+
content: personality_text,
|
24
|
+
content_type: "text/plain;charset=utf-8"
|
25
|
+
)
|
26
|
+
assert((200..299).cover?(service_response.status))
|
27
|
+
end
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
29
|
+
def test_json_to_json
|
30
|
+
personality_text = File.read(Dir.getwd + "/resources/personality-v3.json")
|
31
|
+
service = IBMWatson::PersonalityInsightsV3.new(
|
32
|
+
version: "2017-10-13",
|
33
|
+
username: ENV["PERSONALITY_INSIGHTS_USERNAME"],
|
34
|
+
password: ENV["PERSONALITY_INSIGHTS_PASSWORD"]
|
35
|
+
)
|
36
|
+
service.add_default_headers(
|
37
|
+
headers: {
|
38
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
39
|
+
"X-Watson-Test" => "1"
|
40
|
+
}
|
41
|
+
)
|
42
|
+
service_response = service.profile(
|
43
|
+
content: personality_text,
|
44
|
+
content_type: "application/json",
|
45
|
+
raw_scores: true,
|
46
|
+
consumption_preferences: true
|
47
|
+
)
|
48
|
+
assert((200..299).cover?(service_response.status))
|
49
|
+
end
|
49
50
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
51
|
+
def test_json_to_csv
|
52
|
+
personality_text = File.read(Dir.getwd + "/resources/personality-v3.json")
|
53
|
+
service = IBMWatson::PersonalityInsightsV3.new(
|
54
|
+
version: "2017-10-13",
|
55
|
+
username: ENV["PERSONALITY_INSIGHTS_USERNAME"],
|
56
|
+
password: ENV["PERSONALITY_INSIGHTS_PASSWORD"]
|
57
|
+
)
|
58
|
+
service.add_default_headers(
|
59
|
+
headers: {
|
60
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
61
|
+
"X-Watson-Test" => "1"
|
62
|
+
}
|
63
|
+
)
|
64
|
+
service_response = service.profile(
|
65
|
+
content: personality_text,
|
66
|
+
content_type: "application/json",
|
67
|
+
accept: "text/csv",
|
68
|
+
csv_headers: true,
|
69
|
+
raw_scores: true,
|
70
|
+
consumption_preferences: true
|
71
|
+
)
|
72
|
+
assert((200..299).cover?(service_response.status))
|
73
|
+
end
|
73
74
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
75
|
+
def test_plain_to_json_es
|
76
|
+
personality_text = File.read(Dir.getwd + "/resources/personality-v3-es.txt")
|
77
|
+
service = IBMWatson::PersonalityInsightsV3.new(
|
78
|
+
version: "2017-10-13",
|
79
|
+
username: ENV["PERSONALITY_INSIGHTS_USERNAME"],
|
80
|
+
password: ENV["PERSONALITY_INSIGHTS_PASSWORD"]
|
81
|
+
)
|
82
|
+
service.add_default_headers(
|
83
|
+
headers: {
|
84
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
85
|
+
"X-Watson-Test" => "1"
|
86
|
+
}
|
87
|
+
)
|
88
|
+
service_response = service.profile(
|
89
|
+
content: personality_text,
|
90
|
+
content_type: "text/plain;charset=utf-8",
|
91
|
+
content_language: "es",
|
92
|
+
accept_language: "es"
|
93
|
+
)
|
94
|
+
assert((200..299).cover?(service_response.status))
|
95
|
+
end
|
94
96
|
end
|
95
97
|
end
|