datamapper 0.3.2 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +0 -0
- data/Manifest.txt +5 -0
- data/README.txt +11 -0
- data/Rakefile +70 -0
- data/lib/datamapper.rb +8 -0
- metadata +152 -319
- data/CHANGELOG +0 -145
- data/FAQ +0 -96
- data/MIT-LICENSE +0 -22
- data/QUICKLINKS +0 -12
- data/README +0 -105
- data/environment.rb +0 -62
- data/example.rb +0 -156
- data/lib/data_mapper.rb +0 -88
- data/lib/data_mapper/adapters/abstract_adapter.rb +0 -43
- data/lib/data_mapper/adapters/data_object_adapter.rb +0 -480
- data/lib/data_mapper/adapters/mysql_adapter.rb +0 -72
- data/lib/data_mapper/adapters/postgresql_adapter.rb +0 -258
- data/lib/data_mapper/adapters/sql/coersion.rb +0 -134
- data/lib/data_mapper/adapters/sql/commands/load_command.rb +0 -545
- data/lib/data_mapper/adapters/sql/mappings/associations_set.rb +0 -34
- data/lib/data_mapper/adapters/sql/mappings/column.rb +0 -279
- data/lib/data_mapper/adapters/sql/mappings/conditions.rb +0 -172
- data/lib/data_mapper/adapters/sql/mappings/schema.rb +0 -60
- data/lib/data_mapper/adapters/sql/mappings/table.rb +0 -459
- data/lib/data_mapper/adapters/sql/quoting.rb +0 -24
- data/lib/data_mapper/adapters/sqlite3_adapter.rb +0 -159
- data/lib/data_mapper/associations.rb +0 -106
- data/lib/data_mapper/associations/belongs_to_association.rb +0 -160
- data/lib/data_mapper/associations/has_and_belongs_to_many_association.rb +0 -437
- data/lib/data_mapper/associations/has_many_association.rb +0 -283
- data/lib/data_mapper/associations/has_n_association.rb +0 -143
- data/lib/data_mapper/associations/reference.rb +0 -47
- data/lib/data_mapper/attributes.rb +0 -73
- data/lib/data_mapper/auto_migrations.rb +0 -36
- data/lib/data_mapper/base.rb +0 -17
- data/lib/data_mapper/callbacks.rb +0 -107
- data/lib/data_mapper/context.rb +0 -112
- data/lib/data_mapper/database.rb +0 -234
- data/lib/data_mapper/dependency_queue.rb +0 -28
- data/lib/data_mapper/embedded_value.rb +0 -145
- data/lib/data_mapper/identity_map.rb +0 -47
- data/lib/data_mapper/is/tree.rb +0 -121
- data/lib/data_mapper/migration.rb +0 -155
- data/lib/data_mapper/persistence.rb +0 -852
- data/lib/data_mapper/property.rb +0 -310
- data/lib/data_mapper/query.rb +0 -164
- data/lib/data_mapper/support/blank.rb +0 -35
- data/lib/data_mapper/support/connection_pool.rb +0 -117
- data/lib/data_mapper/support/enumerable.rb +0 -35
- data/lib/data_mapper/support/errors.rb +0 -16
- data/lib/data_mapper/support/inflector.rb +0 -265
- data/lib/data_mapper/support/object.rb +0 -54
- data/lib/data_mapper/support/serialization.rb +0 -96
- data/lib/data_mapper/support/silence.rb +0 -10
- data/lib/data_mapper/support/string.rb +0 -72
- data/lib/data_mapper/support/struct.rb +0 -7
- data/lib/data_mapper/support/symbol.rb +0 -82
- data/lib/data_mapper/support/typed_set.rb +0 -65
- data/lib/data_mapper/types/base.rb +0 -44
- data/lib/data_mapper/types/string.rb +0 -34
- data/lib/data_mapper/validatable_extensions/errors.rb +0 -12
- data/lib/data_mapper/validatable_extensions/macros.rb +0 -7
- data/lib/data_mapper/validatable_extensions/validatable_instance_methods.rb +0 -62
- data/lib/data_mapper/validatable_extensions/validation_base.rb +0 -18
- data/lib/data_mapper/validatable_extensions/validations/formats/email.rb +0 -43
- data/lib/data_mapper/validatable_extensions/validations/validates_acceptance_of.rb +0 -7
- data/lib/data_mapper/validatable_extensions/validations/validates_confirmation_of.rb +0 -7
- data/lib/data_mapper/validatable_extensions/validations/validates_each.rb +0 -7
- data/lib/data_mapper/validatable_extensions/validations/validates_format_of.rb +0 -28
- data/lib/data_mapper/validatable_extensions/validations/validates_length_of.rb +0 -15
- data/lib/data_mapper/validatable_extensions/validations/validates_numericality_of.rb +0 -7
- data/lib/data_mapper/validatable_extensions/validations/validates_presence_of.rb +0 -7
- data/lib/data_mapper/validatable_extensions/validations/validates_true_for.rb +0 -7
- data/lib/data_mapper/validatable_extensions/validations/validates_uniqueness_of.rb +0 -40
- data/lib/data_mapper/validations.rb +0 -20
- data/lib/data_mapper/validations/number_validator.rb +0 -40
- data/lib/data_mapper/validations/string_validator.rb +0 -20
- data/lib/data_mapper/validations/validator.rb +0 -13
- data/performance.rb +0 -307
- data/plugins/can_has_sphinx/LICENSE +0 -23
- data/plugins/can_has_sphinx/README +0 -4
- data/plugins/can_has_sphinx/REVISION +0 -1
- data/plugins/can_has_sphinx/Rakefile +0 -22
- data/plugins/can_has_sphinx/init.rb +0 -1
- data/plugins/can_has_sphinx/install.rb +0 -1
- data/plugins/can_has_sphinx/lib/acts_as_sphinx.rb +0 -123
- data/plugins/can_has_sphinx/lib/sphinx.rb +0 -460
- data/plugins/can_has_sphinx/scripts/sphinx.sh +0 -47
- data/plugins/can_has_sphinx/tasks/acts_as_sphinx_tasks.rake +0 -41
- data/profile_data_mapper.rb +0 -40
- data/rakefile.rb +0 -159
- data/spec/acts_as_tree_spec.rb +0 -67
- data/spec/adapters/data_object_adapter_spec.rb +0 -31
- data/spec/associations/belongs_to_association_spec.rb +0 -98
- data/spec/associations/has_and_belongs_to_many_association_spec.rb +0 -377
- data/spec/associations/has_many_association_spec.rb +0 -337
- data/spec/attributes_spec.rb +0 -52
- data/spec/auto_migrations_spec.rb +0 -101
- data/spec/callbacks_spec.rb +0 -186
- data/spec/can_has_sphinx.rb +0 -5
- data/spec/coersion_spec.rb +0 -41
- data/spec/column_spec.rb +0 -114
- data/spec/count_command_spec.rb +0 -45
- data/spec/database_spec.rb +0 -18
- data/spec/dataobjects_spec.rb +0 -27
- data/spec/delete_command_spec.rb +0 -11
- data/spec/dependency_spec.rb +0 -29
- data/spec/embedded_value_spec.rb +0 -161
- data/spec/fixtures/animals.yaml +0 -33
- data/spec/fixtures/animals_exhibits.yaml +0 -2
- data/spec/fixtures/careers.yaml +0 -5
- data/spec/fixtures/comments.yaml +0 -1
- data/spec/fixtures/exhibits.yaml +0 -90
- data/spec/fixtures/fruit.yaml +0 -6
- data/spec/fixtures/people.yaml +0 -37
- data/spec/fixtures/posts.yaml +0 -3
- data/spec/fixtures/projects.yaml +0 -13
- data/spec/fixtures/sections.yaml +0 -5
- data/spec/fixtures/serializers.yaml +0 -6
- data/spec/fixtures/tasks.yaml +0 -6
- data/spec/fixtures/tasks_tasks.yaml +0 -2
- data/spec/fixtures/tomatoes.yaml +0 -1
- data/spec/fixtures/users.yaml +0 -1
- data/spec/fixtures/zoos.yaml +0 -24
- data/spec/is_a_tree_spec.rb +0 -149
- data/spec/legacy_spec.rb +0 -16
- data/spec/load_command_spec.rb +0 -322
- data/spec/magic_columns_spec.rb +0 -26
- data/spec/migration_spec.rb +0 -267
- data/spec/mock_adapter.rb +0 -20
- data/spec/models/animal.rb +0 -12
- data/spec/models/candidate.rb +0 -8
- data/spec/models/career.rb +0 -7
- data/spec/models/chain.rb +0 -8
- data/spec/models/comment.rb +0 -6
- data/spec/models/exhibit.rb +0 -14
- data/spec/models/fence.rb +0 -7
- data/spec/models/fruit.rb +0 -8
- data/spec/models/job.rb +0 -8
- data/spec/models/person.rb +0 -30
- data/spec/models/post.rb +0 -14
- data/spec/models/project.rb +0 -41
- data/spec/models/sales_person.rb +0 -5
- data/spec/models/section.rb +0 -8
- data/spec/models/serializer.rb +0 -5
- data/spec/models/task.rb +0 -9
- data/spec/models/tomato.rb +0 -27
- data/spec/models/user.rb +0 -12
- data/spec/models/zoo.rb +0 -13
- data/spec/natural_key_spec.rb +0 -36
- data/spec/paranoia_spec.rb +0 -38
- data/spec/persistence_spec.rb +0 -479
- data/spec/postgres_spec.rb +0 -96
- data/spec/property_spec.rb +0 -151
- data/spec/query_spec.rb +0 -77
- data/spec/save_command_spec.rb +0 -94
- data/spec/schema_spec.rb +0 -8
- data/spec/serialize_spec.rb +0 -19
- data/spec/single_table_inheritance_spec.rb +0 -43
- data/spec/spec_helper.rb +0 -45
- data/spec/support/blank_spec.rb +0 -8
- data/spec/support/inflector_spec.rb +0 -41
- data/spec/support/object_spec.rb +0 -9
- data/spec/support/serialization_spec.rb +0 -61
- data/spec/support/silence_spec.rb +0 -15
- data/spec/support/string_spec.rb +0 -7
- data/spec/support/struct_spec.rb +0 -12
- data/spec/support/typed_set_spec.rb +0 -66
- data/spec/symbolic_operators_spec.rb +0 -27
- data/spec/table_spec.rb +0 -79
- data/spec/types/string.rb +0 -81
- data/spec/validates_confirmation_of_spec.rb +0 -55
- data/spec/validates_format_of_spec.rb +0 -78
- data/spec/validates_length_of_spec.rb +0 -117
- data/spec/validates_uniqueness_of_spec.rb +0 -92
- data/spec/validations/number_validator.rb +0 -59
- data/spec/validations/string_validator.rb +0 -14
- data/spec/validations_spec.rb +0 -141
- data/tasks/fixtures.rb +0 -53
data/spec/attributes_spec.rb
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "DataMapper::Attributes" do
|
|
4
|
-
|
|
5
|
-
it 'should allow mass-assignment of attributes' do
|
|
6
|
-
zoo = Zoo.new(:name => 'MassAssignment', :notes => 'This is a test.')
|
|
7
|
-
|
|
8
|
-
zoo.name.should eql('MassAssignment')
|
|
9
|
-
zoo.notes.should eql('This is a test.')
|
|
10
|
-
|
|
11
|
-
zoo.attributes = { :name => 'ThroughAttributesEqual', :notes => 'This is another test.' }
|
|
12
|
-
|
|
13
|
-
zoo.name.should eql('ThroughAttributesEqual')
|
|
14
|
-
zoo.notes.should eql('This is another test.')
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it "should allow custom setters" do
|
|
18
|
-
zoo = Zoo.new
|
|
19
|
-
|
|
20
|
-
zoo.name = 'Colorado Springs'
|
|
21
|
-
zoo.name.should eql("Cheyenne Mountain")
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
it "should call custom setters on mass-assignment" do
|
|
25
|
-
zoo = Zoo.new(:name => 'Colorado Springs')
|
|
26
|
-
|
|
27
|
-
zoo.name.should eql("Cheyenne Mountain")
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "should provide an ATTRIBUTES constant" do
|
|
31
|
-
Tomato::ATTRIBUTES.should == Set.new([:id, :name, :bruised])
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "should get attributes declared in ATTRIBUTES constant" do
|
|
35
|
-
Tomato.new.attributes.should == { :id => nil, :name => 'Ugly', :bruised => true }
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "should get proper values for mass-created attributes with array" do
|
|
39
|
-
person = Person.new(:name => 'Steve Jobs', :occupation => 'Apple CEO')
|
|
40
|
-
|
|
41
|
-
person.name.should eql('Steve Jobs')
|
|
42
|
-
person.occupation.should eql('Apple CEO')
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "should get proper values for mass-created attributes without array" do
|
|
46
|
-
job = Job.new(:name => 'Banker')
|
|
47
|
-
job.save! and job.reload
|
|
48
|
-
|
|
49
|
-
job.hours.should eql(0)
|
|
50
|
-
job.days.should eql(0)
|
|
51
|
-
end
|
|
52
|
-
end
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
-
|
|
3
|
-
describe DataMapper::AutoMigrations do
|
|
4
|
-
before(:all) do
|
|
5
|
-
DataMapper::Persistence.drop_all_tables!
|
|
6
|
-
DataMapper::Persistence.subclasses.clear
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
# before(:each) do
|
|
10
|
-
# DataMapper::Persistence.drop_all_tables!
|
|
11
|
-
# end
|
|
12
|
-
#
|
|
13
|
-
# after(:all) do
|
|
14
|
-
# DataMapper::Persistence.drop_all_tables!
|
|
15
|
-
# DataMapper::Persistence.auto_migrate!
|
|
16
|
-
# end
|
|
17
|
-
|
|
18
|
-
# describe DataMapper::Base do
|
|
19
|
-
# it "should auto migrate all" do
|
|
20
|
-
# DataMapper::Base.auto_migrate!
|
|
21
|
-
#
|
|
22
|
-
# database.adapter.schema.database_tables.size.should == Dir[File.dirname(__FILE__) + '/fixtures/*'].size
|
|
23
|
-
# end
|
|
24
|
-
#
|
|
25
|
-
# describe "when migrating a descendant" do
|
|
26
|
-
# before do
|
|
27
|
-
# class Descendant < DataMapper::Base
|
|
28
|
-
# property :one, :string
|
|
29
|
-
# property :two, :string
|
|
30
|
-
# property :three, :string
|
|
31
|
-
# end
|
|
32
|
-
# end
|
|
33
|
-
#
|
|
34
|
-
# it "should work" do
|
|
35
|
-
# Descendant.auto_migrate!
|
|
36
|
-
#
|
|
37
|
-
# database.table_exists?(Descendant).should be_true
|
|
38
|
-
# database.column_exists_for_table?(Descendant, :one).should be_true
|
|
39
|
-
# database.column_exists_for_table?(Descendant, :two).should be_true
|
|
40
|
-
# database.column_exists_for_table?(Descendant, :three).should be_true
|
|
41
|
-
# database.adapter.schema.database_tables.size.should == 1
|
|
42
|
-
# end
|
|
43
|
-
#
|
|
44
|
-
# after do
|
|
45
|
-
# database.schema[Descendant].drop!
|
|
46
|
-
# end
|
|
47
|
-
# end
|
|
48
|
-
# end
|
|
49
|
-
|
|
50
|
-
it "should find all new models" do
|
|
51
|
-
Zoo.auto_migrate!
|
|
52
|
-
|
|
53
|
-
database.table_exists?(Zoo).should be_true
|
|
54
|
-
database.column_exists_for_table?(Zoo, :id).should be_true
|
|
55
|
-
database.column_exists_for_table?(Zoo, :name).should be_true
|
|
56
|
-
database.column_exists_for_table?(Zoo, :notes).should be_true
|
|
57
|
-
database.column_exists_for_table?(Zoo, :updated_at).should be_true
|
|
58
|
-
database.adapter.schema.database_tables.size.should == 1
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "should find all changed models"
|
|
62
|
-
it "should find all unmapped tables"
|
|
63
|
-
|
|
64
|
-
describe Zoo, "with auto-migrations" do
|
|
65
|
-
it "should allow auto migration" do
|
|
66
|
-
Zoo.should respond_to("auto_migrate!")
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
describe "when migrating a new model" do
|
|
71
|
-
it "should allow creation of new tables for new models"
|
|
72
|
-
it "should allow renaming of unmapped tables for new models"
|
|
73
|
-
it "should create columns for the model's properties"
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
describe "when migrating a changed model" do
|
|
77
|
-
it "should find all new properties"
|
|
78
|
-
it "should allow creation of new columns for new properties"
|
|
79
|
-
it "should allow an unmapped column to be renamed for a new property"
|
|
80
|
-
it "should find all unmapped columns"
|
|
81
|
-
it "should allow removal of any or all unmapped columns"
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
describe "when migrating an unmapped table" do
|
|
85
|
-
it "should allow the table to be dropped"
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
describe "after migrating" do
|
|
89
|
-
it "should store migration decisions to allow the migration to be replicated"
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
after(:all) do
|
|
93
|
-
DataMapper::Persistence.subclasses.clear
|
|
94
|
-
DataMapper::Persistence.subclasses.concat INITIAL_CLASSES
|
|
95
|
-
|
|
96
|
-
# Use DataMapper::Base to boost spec coverage since it delegates to Persistence anyways.
|
|
97
|
-
DataMapper::Base.auto_migrate!
|
|
98
|
-
|
|
99
|
-
load_database
|
|
100
|
-
end
|
|
101
|
-
end
|
data/spec/callbacks_spec.rb
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
-
|
|
3
|
-
describe DataMapper::Callbacks do
|
|
4
|
-
|
|
5
|
-
it "should allow for a callback to be set, then called" do
|
|
6
|
-
|
|
7
|
-
example = Class.new do
|
|
8
|
-
include DataMapper::CallbacksHelper
|
|
9
|
-
|
|
10
|
-
attr_accessor :name
|
|
11
|
-
|
|
12
|
-
def initialize(name)
|
|
13
|
-
@name = name
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
before_save 'name = "bob"'
|
|
17
|
-
before_validation { |instance| instance.name = 'Barry White Returns!' }
|
|
18
|
-
|
|
19
|
-
end.new('Barry White')
|
|
20
|
-
|
|
21
|
-
example.class::callbacks.execute(:before_save, example)
|
|
22
|
-
example.name.should == 'Barry White'
|
|
23
|
-
|
|
24
|
-
example.class::callbacks.execute(:before_validation, example)
|
|
25
|
-
example.name.should == 'Barry White Returns!'
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it "should allow method delegation by passing symbols to the callback definitions" do
|
|
29
|
-
|
|
30
|
-
example = Class.new do
|
|
31
|
-
include DataMapper::CallbacksHelper
|
|
32
|
-
|
|
33
|
-
attr_accessor :name
|
|
34
|
-
|
|
35
|
-
before_save :test
|
|
36
|
-
|
|
37
|
-
def test
|
|
38
|
-
@name = 'Walter'
|
|
39
|
-
end
|
|
40
|
-
end.new
|
|
41
|
-
|
|
42
|
-
example.class::callbacks.execute(:before_save, example)
|
|
43
|
-
example.name.should == 'Walter'
|
|
44
|
-
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it "should execute before_save regardless of dirty state" do
|
|
48
|
-
|
|
49
|
-
Post.before_save do |post|
|
|
50
|
-
post.instance_variable_set("@one", 'moo')
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
Post.before_save do |post|
|
|
54
|
-
post.instance_variable_set("@two", 'cow')
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
Post.before_save :red_cow
|
|
58
|
-
|
|
59
|
-
class Post
|
|
60
|
-
def red_cow
|
|
61
|
-
@three = "blue_cow"
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
post = Post.new(:title => 'bob')
|
|
66
|
-
post.save
|
|
67
|
-
|
|
68
|
-
post = Post.first(:title => 'bob')
|
|
69
|
-
post.instance_variable_get("@one").should be_nil
|
|
70
|
-
post.instance_variable_get("@two").should be_nil
|
|
71
|
-
post.instance_variable_get("@three").should be_nil
|
|
72
|
-
|
|
73
|
-
post.save
|
|
74
|
-
post.instance_variable_get("@one").should eql('moo')
|
|
75
|
-
post.instance_variable_get("@two").should eql('cow')
|
|
76
|
-
post.instance_variable_get("@three").should eql('blue_cow')
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "should execute materialization callbacks" do
|
|
80
|
-
|
|
81
|
-
$before_materialize = 0
|
|
82
|
-
$after_materialize = 0
|
|
83
|
-
|
|
84
|
-
Zoo.before_materialize do
|
|
85
|
-
$before_materialize += 1
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
Zoo.after_materialize do
|
|
89
|
-
$after_materialize += 1
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
class Zoo
|
|
93
|
-
|
|
94
|
-
# This syntax doesn't work in DM.
|
|
95
|
-
# Which I don't think is necessarily a bad thing...
|
|
96
|
-
# Just FYI -Sam
|
|
97
|
-
def before_materialize
|
|
98
|
-
$before_materialize += 1
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def call_before_materialize
|
|
102
|
-
$before_materialize += 1
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
# Example of invalid syntax
|
|
106
|
-
def after_materialize
|
|
107
|
-
$after_materialize += 1
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def call_after_materialize
|
|
111
|
-
$after_materialize += 1
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
Zoo.before_materialize :call_before_materialize
|
|
117
|
-
Zoo.after_materialize :call_after_materialize
|
|
118
|
-
|
|
119
|
-
Zoo.before_materialize "$before_materialize += 1"
|
|
120
|
-
Zoo.after_materialize "$after_materialize += 1"
|
|
121
|
-
|
|
122
|
-
Zoo.first
|
|
123
|
-
|
|
124
|
-
$before_materialize.should == 3
|
|
125
|
-
$after_materialize.should == 3
|
|
126
|
-
|
|
127
|
-
Zoo[1]
|
|
128
|
-
|
|
129
|
-
$before_materialize.should == 6
|
|
130
|
-
$after_materialize.should == 6
|
|
131
|
-
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
it "should execute creation callbacks" do
|
|
135
|
-
|
|
136
|
-
$before_create = 0
|
|
137
|
-
$after_create = 0
|
|
138
|
-
|
|
139
|
-
Zoo.before_create do
|
|
140
|
-
$before_create += 1
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
Zoo.after_create do
|
|
144
|
-
$after_create += 1
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
class Zoo
|
|
148
|
-
|
|
149
|
-
# Example of invalid syntax
|
|
150
|
-
def before_create
|
|
151
|
-
$before_create += 1
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
def call_before_create
|
|
155
|
-
$before_create += 1
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
# Example of invalid syntax
|
|
159
|
-
def after_create
|
|
160
|
-
$after_create += 1
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
def call_after_create
|
|
164
|
-
$after_create += 1
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
Zoo.before_create :call_before_create
|
|
170
|
-
Zoo.after_create :call_after_create
|
|
171
|
-
|
|
172
|
-
Zoo.before_create "$before_create += 1"
|
|
173
|
-
Zoo.after_create "$after_create += 1"
|
|
174
|
-
|
|
175
|
-
Zoo.create(:name => 'bob')
|
|
176
|
-
|
|
177
|
-
$before_create.should == 3
|
|
178
|
-
$after_create.should == 3
|
|
179
|
-
|
|
180
|
-
Zoo.new(:name => 'bob2').save
|
|
181
|
-
|
|
182
|
-
$before_create.should == 6
|
|
183
|
-
$after_create.should == 6
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
end
|
data/spec/can_has_sphinx.rb
DELETED
data/spec/coersion_spec.rb
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
-
|
|
3
|
-
describe DataMapper::Adapters::Sql::Coersion do
|
|
4
|
-
|
|
5
|
-
before(:all) do
|
|
6
|
-
@coersive = Class.new do
|
|
7
|
-
include DataMapper::Adapters::Sql::Coersion
|
|
8
|
-
end.new
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
it 'should cast to a BigDecimal' do
|
|
12
|
-
target = BigDecimal.new('7.2')
|
|
13
|
-
@coersive.type_cast_decimal('7.2').should == target
|
|
14
|
-
@coersive.type_cast_decimal(7.2).should == target
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it 'should store and load a date' do
|
|
18
|
-
dob = Date::today
|
|
19
|
-
bob = Person.create(:name => 'DateCoersionTest', :date_of_birth => dob)
|
|
20
|
-
|
|
21
|
-
bob2 = Person.first(:name => 'DateCoersionTest')
|
|
22
|
-
|
|
23
|
-
bob.date_of_birth.should eql(dob)
|
|
24
|
-
bob2.date_of_birth.should eql(dob)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it 'should cast to a Date' do
|
|
28
|
-
target = Date.civil(2001, 1, 1)
|
|
29
|
-
|
|
30
|
-
@coersive.type_cast_date('2001-1-1').should eql(target)
|
|
31
|
-
@coersive.type_cast_date(target.dup).should eql(target)
|
|
32
|
-
@coersive.type_cast_date(DateTime::parse('2001-1-1')).should eql(target)
|
|
33
|
-
@coersive.type_cast_date(Time::parse('2001-1-1')).should eql(target)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'should cast to a String' do
|
|
37
|
-
target = "\n\ttest\n\n\ntest\n\n"
|
|
38
|
-
|
|
39
|
-
@coersive.type_cast_text(target).should == target
|
|
40
|
-
end
|
|
41
|
-
end
|
data/spec/column_spec.rb
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + "/spec_helper"
|
|
2
|
-
|
|
3
|
-
describe DataMapper::Adapters::Sql::Mappings::Column do
|
|
4
|
-
|
|
5
|
-
before(:all) do
|
|
6
|
-
@mappings = DataMapper::Adapters::Sql::Mappings
|
|
7
|
-
fixtures(:zoos)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def table
|
|
11
|
-
@table ||= @mappings::Table.new(database(:mock).adapter, "Cow")
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it "should only lazy loading text columns by default" do
|
|
15
|
-
table = database.table(Zoo)
|
|
16
|
-
table.columns.each do |column|
|
|
17
|
-
if column.type == :text
|
|
18
|
-
column.should be_lazy
|
|
19
|
-
else
|
|
20
|
-
column.should_not be_lazy
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "should be unique within a set" do
|
|
26
|
-
columns = SortedSet.new
|
|
27
|
-
|
|
28
|
-
columns << @mappings::Column.new(database(:mock).adapter, table, :one, :string, 1)
|
|
29
|
-
columns << @mappings::Column.new(database(:mock).adapter, table, :two, :string, 2)
|
|
30
|
-
columns << @mappings::Column.new(database(:mock).adapter, table, :three, :string, 3)
|
|
31
|
-
columns.should have(3).entries
|
|
32
|
-
|
|
33
|
-
columns << @mappings::Column.new(database(:mock).adapter, table, :two, :integer, 3)
|
|
34
|
-
columns.should have(3).entries
|
|
35
|
-
|
|
36
|
-
columns << @mappings::Column.new(database(:mock).adapter, table, :id, :integer, -1)
|
|
37
|
-
columns.should have(4).entries
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "should get its meta data from the database"
|
|
41
|
-
|
|
42
|
-
it "should be able to rename" do
|
|
43
|
-
table = database.table(Zoo)
|
|
44
|
-
name_column = table[:name]
|
|
45
|
-
|
|
46
|
-
lambda { database.query("SELECT name FROM zoos") }.should_not raise_error
|
|
47
|
-
lambda { database.query("SELECT moo FROM zoos") }.should raise_error
|
|
48
|
-
|
|
49
|
-
name_column = name_column.rename!(:moo)
|
|
50
|
-
name_column.name.should eql(:moo)
|
|
51
|
-
|
|
52
|
-
lambda { database.query("SELECT name FROM zoos") }.should raise_error
|
|
53
|
-
lambda { database.query("SELECT moo FROM zoos") }.should_not raise_error
|
|
54
|
-
|
|
55
|
-
name_column = name_column.rename!(:name)
|
|
56
|
-
name_column.name.should eql(:name)
|
|
57
|
-
|
|
58
|
-
lambda { database.query("SELECT name FROM zoos") }.should_not raise_error
|
|
59
|
-
lambda { database.query("SELECT moo FROM zoos") }.should raise_error
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it "should create, alter and drop a column" do
|
|
63
|
-
lambda { database.query("SELECT moo FROM zoos") }.should raise_error
|
|
64
|
-
|
|
65
|
-
database.logger.debug { 'MOO' * 10 }
|
|
66
|
-
|
|
67
|
-
table = database.table(Zoo)
|
|
68
|
-
Zoo.property(:moo, :string)
|
|
69
|
-
moo = table[:moo]
|
|
70
|
-
moo.create!
|
|
71
|
-
|
|
72
|
-
lambda { database.query("SELECT moo FROM zoos") }.should_not raise_error
|
|
73
|
-
|
|
74
|
-
zoo = Zoo.create(:name => 'columns', :moo => 'AAA')
|
|
75
|
-
zoo.moo.should eql('AAA')
|
|
76
|
-
|
|
77
|
-
zoo.moo = 4
|
|
78
|
-
zoo.save
|
|
79
|
-
zoo.reload!
|
|
80
|
-
zoo.moo.should eql('4')
|
|
81
|
-
|
|
82
|
-
moo.type = :integer
|
|
83
|
-
moo.alter!
|
|
84
|
-
zoo.reload!
|
|
85
|
-
zoo.moo.should eql(4)
|
|
86
|
-
|
|
87
|
-
moo.drop!
|
|
88
|
-
|
|
89
|
-
Zoo.send(:undef_method, :moo)
|
|
90
|
-
Zoo.send(:undef_method, :moo=)
|
|
91
|
-
Zoo.properties.delete_if { |x| x.name == :moo }
|
|
92
|
-
|
|
93
|
-
lambda { database.query("SELECT moo FROM zoos") }.should raise_error
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it "should default the size of an integer column to 11" do
|
|
97
|
-
integer = @mappings::Column.new(database(:mock).adapter, table, :age, :integer, 1)
|
|
98
|
-
integer.size.should == 11
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
it "should be able to create a column with unique index" do
|
|
102
|
-
column = table.add_column("name", :string, :index => :unique)
|
|
103
|
-
column.unique?.should be_true
|
|
104
|
-
column.index?.should be_nil
|
|
105
|
-
table.to_create_index_sql.should == []
|
|
106
|
-
table.to_create_sql.should match(/UNIQUE/)
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
it "should be able to create an indexed column" do
|
|
110
|
-
column = table.add_column("age", :integer, :index => true)
|
|
111
|
-
column.index?.should be_true
|
|
112
|
-
table.to_create_index_sql[0].should match(/CREATE INDEX cow_age_index/)
|
|
113
|
-
end
|
|
114
|
-
end
|