class WithDefaultValues < CouchRest::Model::Base use_database DB property :preset, Object, :default => {:right => 10, :top_align => false} property :set_by_proc, Time, :default => Proc.new{Time.now} property :tags, [String], :default => [] property :read_only_with_default, :default => 'generic', :read_only => true property :default_false, TrueClass, :default => false property :name timestamps! end class WithSimplePropertyType < CouchRest::Model::Base use_database DB property :name, String property :preset, String, :default => 'none' property :tags, [String] timestamps! end class WithCallBacks < CouchRest::Model::Base use_database DB property :name property :run_before_validation property :run_after_validation property :run_before_save property :run_after_save property :run_before_create property :run_after_create property :run_before_update property :run_after_update validates_presence_of :run_before_validation before_validation do |object| object.run_before_validation = true end after_validation do |object| object.run_after_validation = true end before_save do |object| object.run_before_save = true end after_save do |object| object.run_after_save = true end before_create do |object| object.run_before_create = true end after_create do |object| object.run_after_create = true end before_update do |object| object.run_before_update = true end after_update do |object| object.run_after_update = true end property :run_one property :run_two property :run_three before_save :run_one_method, :run_two_method do |object| object.run_three = true end def run_one_method self.run_one = true end def run_two_method self.run_two = true end attr_accessor :run_it property :conditional_one property :conditional_two before_save :conditional_one_method, :conditional_two_method, :if => proc { self.run_it } def conditional_one_method self.conditional_one = true end def conditional_two_method self.conditional_two = true end end # Following two fixture classes have __intentionally__ diffent syntax for setting the validation context class WithContextualValidationOnCreate < CouchRest::Model::Base use_database DB property(:name, String) validates(:name, :presence => {:on => :create}) end class WithContextualValidationOnUpdate < CouchRest::Model::Base use_database DB property(:name, String) validates(:name, :presence => true, :on => :update) end class WithTemplateAndUniqueID < CouchRest::Model::Base use_database DB unique_id do |model| model.slug end property :slug property :preset, :default => 'value' property :has_no_default design end class WithGetterAndSetterMethods < CouchRest::Model::Base use_database DB property :other_arg def arg other_arg end def arg=(value) self.other_arg = "foo-#{value}" end end class WithAfterInitializeMethod < CouchRest::Model::Base use_database DB property :some_value def after_initialize self.some_value ||= "value" end end class WithUniqueValidation < CouchRest::Model::Base use_database DB property :title validates_uniqueness_of :title end class WithUniqueValidationProxy < CouchRest::Model::Base use_database DB property :title validates_uniqueness_of :title, :proxy => 'proxy' end class WithUniqueValidationView < CouchRest::Model::Base use_database DB attr_accessor :code unique_id :code def code @code end property :title design validates_uniqueness_of :code, :view => 'all' end class WithScopedUniqueValidation < CouchRest::Model::Base use_database DB property :parent_id property :title validates_uniqueness_of :title, :scope => :parent_id end class WithDateAndTime < CouchRest::Model::Base use_database DB property :exec_date, Date property :exec_time, Time end