spec/parse_file_spec.rb in dm-parse-0.3.2 vs spec/parse_file_spec.rb in dm-parse-0.3.3
- old
+ new
@@ -1,11 +1,13 @@
require "spec_helper"
describe DataMapper::Property::ParseFile do
subject { property }
- let(:property) { Article.properties[:attachment] }
+ let(:property) { Article.properties[:attachment] }
+ let(:url) { "http://files.parse.com/3f10b6f9-bec4-4583-b907-8f2ece6e965a/003ce5ad-06c4-4be6-9475-b074b6bd4dc8-test.png" }
+ let(:name) { File.basename URI(url).path }
describe "#typecast" do
subject { property.typecast value }
context "when value is nil" do
@@ -15,25 +17,31 @@
end
context "when value is io" do
let(:value) { StringIO.new "xx" }
- before { value.stub(original_filename: "xx.txt", content_type: "plain/text") }
- before { DataMapper::Adapters::ParseAdapter.any_instance.stub(upload_file: {"name" => "x", "url" => "y"}) }
+ before { value.stub(original_filename: "test.png", content_type: "image/png") }
+ before { DataMapper::Adapters::ParseAdapter.any_instance.stub(upload_file: { "name" => name, "url" => url }) }
- it { should be_has_key("__type") }
- it { should be_has_key("name") }
- it { should be_has_key("url") }
+ it { should eq(URI(url)) }
end
end
+ describe "#dump" do
+ subject { property.dump value }
+
+ let(:value) { URI(url) }
+
+ it { should eq("__type" => "File", "name" => name) }
+ end
+
describe "#load" do
subject { property.load value }
- let(:value) { { "__type" => "File", "name" => "a.png", "url" => "http://a.cn/a.png" } }
+ let(:value) { { "__type" => "File", "name" => name, "url" => url } }
- it { should eq(value) }
+ it { should eq(URI(url)) }
context "when value is nil" do
let(:value) { nil }
it { should be_nil }
@@ -41,10 +49,10 @@
end
describe "#valid?" do
subject { property.valid? value }
- let(:value) { { "__type" => "File", "name" => "a.png", "url" => "http://a.cn/a.png" } }
+ let(:value) { URI(url) }
it { should be_true }
end
end