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