|
@@ -2,31 +2,82 @@
|
|
|
require 'test_helper'
|
|
|
|
|
|
class ApiVersionTest < Test::Unit::TestCase
|
|
|
+ def teardown
|
|
|
+ super
|
|
|
+ ShopifyAPI::ApiVersion.clear_defined_versions
|
|
|
+ ShopifyAPI::ApiVersion.define_known_versions
|
|
|
+ end
|
|
|
+
|
|
|
test "no version creates url that start with /admin/" do
|
|
|
assert_equal(
|
|
|
"/admin/resource_path/id.json",
|
|
|
- ShopifyAPI::ApiVersion.no_version.construct_api_path("resource_path/id.json")
|
|
|
+ ShopifyAPI::ApiVersion::NoVersion.new.construct_api_path("resource_path/id.json")
|
|
|
)
|
|
|
end
|
|
|
|
|
|
test "no version creates graphql url that start with /admin/api" do
|
|
|
assert_equal(
|
|
|
"/admin/api/graphql.json",
|
|
|
- ShopifyAPI::ApiVersion.no_version.construct_graphql_path
|
|
|
+ ShopifyAPI::ApiVersion::NoVersion.new.construct_graphql_path
|
|
|
)
|
|
|
end
|
|
|
|
|
|
test "unstable version creates url that start with /admin/api/unstable/" do
|
|
|
assert_equal(
|
|
|
"/admin/api/unstable/resource_path/id.json",
|
|
|
- ShopifyAPI::ApiVersion.unstable.construct_api_path("resource_path/id.json")
|
|
|
+ ShopifyAPI::ApiVersion::Unstable.new.construct_api_path("resource_path/id.json")
|
|
|
)
|
|
|
end
|
|
|
|
|
|
test "unstable version creates graphql url that start with /admin/api/unstable/" do
|
|
|
assert_equal(
|
|
|
"/admin/api/unstable/graphql.json",
|
|
|
- ShopifyAPI::ApiVersion.unstable.construct_graphql_path
|
|
|
+ ShopifyAPI::ApiVersion::Unstable.new.construct_graphql_path
|
|
|
)
|
|
|
end
|
|
|
+
|
|
|
+ test "coerce_to_version returns any version object given" do
|
|
|
+ version = ShopifyAPI::ApiVersion::Unstable.new
|
|
|
+ assert_same(version, ShopifyAPI::ApiVersion.coerce_to_version(version))
|
|
|
+ end
|
|
|
+
|
|
|
+ test "coerce_to_version converts a known version into a version object" do
|
|
|
+ versions = [
|
|
|
+ ShopifyAPI::ApiVersion::Unstable.new,
|
|
|
+ ShopifyAPI::ApiVersion::NoVersion.new,
|
|
|
+ ]
|
|
|
+
|
|
|
+ assert_equal(versions, [
|
|
|
+ ShopifyAPI::ApiVersion.coerce_to_version('unstable'),
|
|
|
+ ShopifyAPI::ApiVersion.coerce_to_version(:no_version),
|
|
|
+ ])
|
|
|
+ end
|
|
|
+
|
|
|
+ test "coerce_to_version raises when coercing a string that doesn't match a known version" do
|
|
|
+ assert_raises ShopifyAPI::ApiVersion::UnknownVersion do
|
|
|
+ ShopifyAPI::ApiVersion.coerce_to_version('made up version')
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ test "additional defined versions will also be coerced" do
|
|
|
+ versions = [
|
|
|
+ TestApiVersion.new('my_name'),
|
|
|
+ TestApiVersion.new('other_name'),
|
|
|
+ ]
|
|
|
+
|
|
|
+ versions.each do |version|
|
|
|
+ ShopifyAPI::ApiVersion.define_version(version)
|
|
|
+ end
|
|
|
+
|
|
|
+ assert_equal(versions, [
|
|
|
+ ShopifyAPI::ApiVersion.coerce_to_version('my_name'),
|
|
|
+ ShopifyAPI::ApiVersion.coerce_to_version('other_name'),
|
|
|
+ ])
|
|
|
+ end
|
|
|
+
|
|
|
+ class TestApiVersion < ShopifyAPI::ApiVersion
|
|
|
+ def initialize(name)
|
|
|
+ @version_name = name
|
|
|
+ end
|
|
|
+ end
|
|
|
end
|