Fixed minor issue, added test cases to check language negotiation.
This commit is contained in:
@@ -147,7 +147,7 @@ feature -- Language Negotiation
|
|||||||
if header.is_empty then
|
if header.is_empty then
|
||||||
-- the request has no Accept header, ie the header is empty, in this case we use the default format
|
-- the request has no Accept header, ie the header is empty, in this case we use the default format
|
||||||
Result.set_acceptable (TRUE)
|
Result.set_acceptable (TRUE)
|
||||||
Result.set_language_type (mime_default)
|
Result.set_language_type (language_default)
|
||||||
else
|
else
|
||||||
-- select the best match, server support, client preferences
|
-- select the best match, server support, client preferences
|
||||||
language_match := language.best_match (server_language_supported, header)
|
language_match := language.best_match (server_language_supported, header)
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ feature -- Test routines
|
|||||||
assert ("Variant header is void",media_variants.variant_header = Void)
|
assert ("Variant header is void",media_variants.variant_header = Void)
|
||||||
assert ("Media type is void",media_variants.media_type = Void)
|
assert ("Media type is void",media_variants.media_type = Void)
|
||||||
|
|
||||||
-- Scenario 2, the client doesnt send values in the header, Accpet:
|
-- Scenario 2, the client doesnt send values in the header, Accept:
|
||||||
media_variants := conneg.media_type_preference (mime_types_supported, "")
|
media_variants := conneg.media_type_preference (mime_types_supported, "")
|
||||||
assert ("Expected Acceptable", media_variants.is_acceptable)
|
assert ("Expected Acceptable", media_variants.is_acceptable)
|
||||||
assert ("Variants is dettached",media_variants.supported_variants = Void)
|
assert ("Variants is dettached",media_variants.supported_variants = Void)
|
||||||
@@ -56,6 +56,40 @@ feature -- Test routines
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
test_language_negotiation
|
||||||
|
local
|
||||||
|
language_variants : LANGUAGE_VARIANT_RESULTS
|
||||||
|
languages_supported : LIST [STRING]
|
||||||
|
l_languages : STRING
|
||||||
|
do
|
||||||
|
-- Scenario 1, the server side does not support client preferences
|
||||||
|
l_languages := "es,en,en-US,fr;q=0.6"
|
||||||
|
languages_supported := l_languages.split(',')
|
||||||
|
language_variants := conneg.language_preference (languages_supported, "de")
|
||||||
|
assert ("Expected Not Acceptable", not language_variants.is_acceptable)
|
||||||
|
assert ("Same Value at 1",languages_supported.at (1).is_equal (language_variants.supported_variants.at (1)))
|
||||||
|
assert ("Same count",languages_supported.count = language_variants.supported_variants.count)
|
||||||
|
assert ("Variant header is void",language_variants.variant_header = Void)
|
||||||
|
assert ("Language type is void",language_variants.language_type = Void)
|
||||||
|
|
||||||
|
|
||||||
|
-- Scenario 2, the client doesnt send values in the header, Accept-Language:
|
||||||
|
language_variants := conneg.language_preference (languages_supported, "")
|
||||||
|
assert ("Expected Acceptable", language_variants.is_acceptable)
|
||||||
|
assert ("Variants is dettached",language_variants.supported_variants = Void)
|
||||||
|
assert ("Language is defaul", conneg.language_default.is_equal (language_variants.language_type))
|
||||||
|
assert ("Variant header", language_variants.variant_header = Void)
|
||||||
|
|
||||||
|
|
||||||
|
--Scenario 3, the server select the best match, and set the vary header
|
||||||
|
language_variants := conneg.language_preference (languages_supported, "fr,es;q=0.4")
|
||||||
|
assert ("Expected Acceptable", language_variants.is_acceptable)
|
||||||
|
assert ("Variants is dettached",language_variants.supported_variants = Void)
|
||||||
|
assert ("Variant Header", language_variants.variant_header.is_equal ("Accept-Language"))
|
||||||
|
assert ("Language Type is fr", language_variants.language_type.is_equal ("fr"))
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
feature -- Implementation
|
feature -- Implementation
|
||||||
conneg : CONNEG_SERVER_SIDE
|
conneg : CONNEG_SERVER_SIDE
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user