Sha256: 69ec00d8044a74e57438705cb673819a5d348da267cd427503a94a8881269d5c
Contents?: true
Size: 1.91 KB
Versions: 4
Compression:
Stored size: 1.91 KB
Contents
# frozen_string_literal: true require 'spec_helper' class ValidatedAsset < AssetCloud::Asset validate :no_cats private def no_cats add_error('no cats allowed!') if value =~ /cat/i add_warning('bad dog!', 'wet dog smell!') if value =~ /dog/i end end class BasicCloud < AssetCloud::Base bucket :dog_pound, AssetCloud::MemoryBucket, asset_class: ValidatedAsset end describe ValidatedAsset do before(:each) do @cloud = BasicCloud.new(File.dirname(__FILE__) + '/files', 'http://assets/') @cat = @cloud.build('dog_pound/fido', 'cat') @dog = @cloud.build('dog_pound/fido', 'dog') end describe "#store" do it "should not store the asset unless validations pass" do expect(@cloud).to(receive(:write).with('dog_pound/fido', 'dog').and_return(true)) @cat.store expect(@cat.store).to(eq(false)) expect(@cat.errors).to(eq(['no cats allowed!'])) expect(@dog.store).to(eq(true)) end it "should store asset with warnings and save them in the warnings array" do expect(@dog.store).to(eq(true)) expect(@dog.warnings).to(eq(['bad dog!', 'wet dog smell!'])) expect(@cat.store).to(eq(false)) expect(@cat.warnings).to(eq([])) end end describe "#store!" do it "should raise AssetNotFound with error message when validation fails" do expect { @cat.store! }.to(raise_error(AssetCloud::AssetNotSaved, "Validation failed: no cats allowed!")) end it "should return true when validations pass" do expect(@dog.store!).to(eq(true)) end end describe "#valid?" do it "should clear errors, run validations, and return validity" do @cat.store expect(@cat.errors).to(eq(['no cats allowed!'])) expect(@cat.valid?).to(eq(false)) expect(@cat.errors).to(eq(['no cats allowed!'])) @cat.value = 'disguised feline' expect(@cat.valid?).to(eq(true)) expect(@cat.errors).to(be_empty) end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
asset_cloud-2.7.1 | spec/validations_spec.rb |
asset_cloud-2.7.0 | spec/validations_spec.rb |
asset_cloud-2.6.1 | spec/validations_spec.rb |
asset_cloud-2.6.0 | spec/validations_spec.rb |