sbf-dm-constraints 1.3.0.beta

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.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +39 -0
  3. data/.rspec +5 -0
  4. data/.rubocop.yml +468 -0
  5. data/Gemfile +70 -0
  6. data/LICENSE +20 -0
  7. data/README.rdoc +58 -0
  8. data/Rakefile +4 -0
  9. data/dm-constraints.gemspec +21 -0
  10. data/lib/data_mapper/constraints/adapters/abstract_adapter.rb +33 -0
  11. data/lib/data_mapper/constraints/adapters/do_adapter.rb +192 -0
  12. data/lib/data_mapper/constraints/adapters/extension.rb +45 -0
  13. data/lib/data_mapper/constraints/adapters/mysql_adapter.rb +26 -0
  14. data/lib/data_mapper/constraints/adapters/oracle_adapter.rb +53 -0
  15. data/lib/data_mapper/constraints/adapters/postgres_adapter.rb +13 -0
  16. data/lib/data_mapper/constraints/adapters/sqlite_adapter.rb +22 -0
  17. data/lib/data_mapper/constraints/adapters/sqlserver_adapter.rb +11 -0
  18. data/lib/data_mapper/constraints/migrations/model.rb +34 -0
  19. data/lib/data_mapper/constraints/migrations/relationship.rb +41 -0
  20. data/lib/data_mapper/constraints/migrations/singleton_methods.rb +44 -0
  21. data/lib/data_mapper/constraints/relationship/many_to_many.rb +48 -0
  22. data/lib/data_mapper/constraints/relationship/one_to_many.rb +79 -0
  23. data/lib/data_mapper/constraints/resource.rb +30 -0
  24. data/lib/data_mapper/constraints/version.rb +5 -0
  25. data/lib/dm-constraints.rb +19 -0
  26. data/spec/integration/constraints_spec.rb +630 -0
  27. data/spec/isolated/require_after_setup_spec.rb +36 -0
  28. data/spec/isolated/require_before_setup_spec.rb +35 -0
  29. data/spec/isolated/require_spec.rb +15 -0
  30. data/spec/rcov.opts +6 -0
  31. data/spec/spec_helper.rb +26 -0
  32. data/tasks/spec.rake +21 -0
  33. data/tasks/yard.rake +9 -0
  34. data/tasks/yardstick.rake +19 -0
  35. metadata +94 -0
@@ -0,0 +1,35 @@
1
+ require 'rspec'
2
+
3
+ require_relative 'require_spec'
4
+ require 'dm-core/spec/setup'
5
+ require 'dm-core/spec/lib/adapter_helpers'
6
+
7
+ # To really test this behavior, this spec needs to be run in isolation and not
8
+ # as part of the typical rake spec run, which requires dm-transactions upfront
9
+
10
+ RSpec.configure do |config|
11
+ config.extend(DataMapper::Spec::Adapters::Helpers)
12
+ end
13
+
14
+ describe "require 'dm-constraints' before calling DataMapper.setup" do
15
+
16
+ before(:all) do
17
+ require 'dm-constraints'
18
+ @adapter = DataMapper::Spec.adapter
19
+
20
+ class ::Person
21
+ include DataMapper::Resource
22
+ property :id, Serial
23
+ has n, :tasks
24
+ end
25
+
26
+ class ::Task
27
+ include DataMapper::Resource
28
+ property :id, Serial
29
+ belongs_to :person
30
+ end
31
+
32
+ end
33
+
34
+ it_behaves_like "require 'dm-constraints'"
35
+ end
@@ -0,0 +1,15 @@
1
+ shared_examples "require 'dm-constraints'" do
2
+ it 'extends Model descendants with the constraint API' do
3
+ expect(DataMapper::Model.descendants).not_to be_empty
4
+ DataMapper::Model.descendants.all? do |model|
5
+ expect(model.respond_to?(:auto_migrate_constraints_down, true)).to be(true)
6
+ expect(model.respond_to?(:auto_migrate_constraints_up, true)).to be(true)
7
+ end
8
+ end
9
+
10
+ it 'includes the constraint API into the adapter' do
11
+ expect(@adapter.respond_to?(:constraint_exists? )).to be(true)
12
+ expect(@adapter.respond_to?(:create_relationship_constraint )).to be(true)
13
+ expect(@adapter.respond_to?(:destroy_relationship_constraint)).to be(true)
14
+ end
15
+ end
data/spec/rcov.opts ADDED
@@ -0,0 +1,6 @@
1
+ --exclude "spec,^/"
2
+ --sort coverage
3
+ --callsites
4
+ --xrefs
5
+ --profile
6
+ --text-summary
@@ -0,0 +1,26 @@
1
+
2
+ require 'dm-core/spec/setup'
3
+ require 'dm-core/spec/lib/spec_helper'
4
+ require 'dm-core/spec/lib/adapter_helpers'
5
+ require 'dm-core/spec/lib/pending_helpers'
6
+
7
+ require 'dm-constraints'
8
+
9
+ RSpec.configure do |config|
10
+ config.extend(DataMapper::Spec::Adapters::Helpers)
11
+ config.extend(DataMapper::Spec::Helpers)
12
+ config.include(DataMapper::Spec::PendingHelpers)
13
+
14
+ config.before(:each) do
15
+ DataMapper.finalize
16
+ DataMapper.auto_migrate!
17
+ end
18
+
19
+ config.after :each do
20
+ DataMapper.send(:auto_migrate_down!, DataMapper::Spec.adapter.name)
21
+ end
22
+
23
+ config.after :all do
24
+ DataMapper::Spec.cleanup_models
25
+ end
26
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,21 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ begin
4
+ task(:default).clear
5
+ task(:spec).clear
6
+
7
+ RSpec::Core::RakeTask.new(:spec) do |spec|
8
+ spec.pattern = 'spec/**/*_spec.rb'
9
+
10
+ require 'simplecov'
11
+ SimpleCov.start do
12
+ minimum_coverage 100
13
+ end
14
+ end
15
+ rescue LoadError
16
+ task :spec do
17
+ abort 'rspec is not available. In order to run spec, you must: gem install rspec'
18
+ end
19
+ end
20
+
21
+ task default: :spec
data/tasks/yard.rake ADDED
@@ -0,0 +1,9 @@
1
+ begin
2
+ require 'yard'
3
+
4
+ YARD::Rake::YardocTask.new
5
+ rescue LoadError
6
+ task :yard do
7
+ abort 'YARD is not available. In order to run yard, you must: gem install yard'
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ begin
2
+ require 'pathname'
3
+ require 'yardstick/rake/measurement'
4
+ require 'yardstick/rake/verify'
5
+
6
+ # yardstick_measure task
7
+ Yardstick::Rake::Measurement.new
8
+
9
+ # verify_measurements task
10
+ Yardstick::Rake::Verify.new do |verify|
11
+ verify.threshold = 100
12
+ end
13
+ rescue LoadError
14
+ %w[ yardstick_measure verify_measurements ].each do |name|
15
+ task name.to_s do
16
+ abort "Yardstick is not available. In order to run #{name}, you must: gem install yardstick"
17
+ end
18
+ end
19
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sbf-dm-constraints
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.0.beta
5
+ platform: ruby
6
+ authors:
7
+ - Dirkjan Bussink
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-10-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sbf-dm-core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.0.beta
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.3.0.beta
27
+ description: Plugin that adds foreign key constraints to associations. Currently supports
28
+ only PostgreSQL and MySQL All constraints are added to the underlying database,
29
+ but constraining is implemented in pure ruby.
30
+ email:
31
+ - d.bussink [a] gmail [d] com
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files:
35
+ - LICENSE
36
+ - README.rdoc
37
+ files:
38
+ - ".gitignore"
39
+ - ".rspec"
40
+ - ".rubocop.yml"
41
+ - Gemfile
42
+ - LICENSE
43
+ - README.rdoc
44
+ - Rakefile
45
+ - dm-constraints.gemspec
46
+ - lib/data_mapper/constraints/adapters/abstract_adapter.rb
47
+ - lib/data_mapper/constraints/adapters/do_adapter.rb
48
+ - lib/data_mapper/constraints/adapters/extension.rb
49
+ - lib/data_mapper/constraints/adapters/mysql_adapter.rb
50
+ - lib/data_mapper/constraints/adapters/oracle_adapter.rb
51
+ - lib/data_mapper/constraints/adapters/postgres_adapter.rb
52
+ - lib/data_mapper/constraints/adapters/sqlite_adapter.rb
53
+ - lib/data_mapper/constraints/adapters/sqlserver_adapter.rb
54
+ - lib/data_mapper/constraints/migrations/model.rb
55
+ - lib/data_mapper/constraints/migrations/relationship.rb
56
+ - lib/data_mapper/constraints/migrations/singleton_methods.rb
57
+ - lib/data_mapper/constraints/relationship/many_to_many.rb
58
+ - lib/data_mapper/constraints/relationship/one_to_many.rb
59
+ - lib/data_mapper/constraints/resource.rb
60
+ - lib/data_mapper/constraints/version.rb
61
+ - lib/dm-constraints.rb
62
+ - spec/integration/constraints_spec.rb
63
+ - spec/isolated/require_after_setup_spec.rb
64
+ - spec/isolated/require_before_setup_spec.rb
65
+ - spec/isolated/require_spec.rb
66
+ - spec/rcov.opts
67
+ - spec/spec_helper.rb
68
+ - tasks/spec.rake
69
+ - tasks/yard.rake
70
+ - tasks/yardstick.rake
71
+ homepage: https://datamapper.org
72
+ licenses:
73
+ - Nonstandard
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 2.7.8
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">"
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.1
89
+ requirements: []
90
+ rubygems_version: 3.4.10
91
+ signing_key:
92
+ specification_version: 4
93
+ summary: DataMapper plugin constraining relationships
94
+ test_files: []