dependent_restrict 0.2.1 → 0.2.2

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.
@@ -0,0 +1,4 @@
1
+ pkg
2
+ coverage
3
+ Gemfile.lock
4
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ script: "bundle exec rake coverage"
6
+ gemfile:
7
+ - gemfiles/rails3.gemfile
8
+ - gemfiles/rails4_0.gemfile
9
+ - gemfiles/rails4_1.gemfile
10
+ notifications:
11
+ email:
12
+ - support@travellink.com.au
13
+ flowdock: e69dcafad1fea15c6b8c76e9ced965af
data/Gemfile CHANGED
@@ -2,12 +2,6 @@ source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
4
  group :development, :test do
5
- gem 'pry-debugger'
6
- gem 'rake', '~> 0.9.2'
7
- gem 'rdoc', '~> 3.12'
8
- gem 'rspec'
9
- gem 'simplecov'
10
- gem 'simplecov-rcov'
11
- gem 'sqlite3'
12
5
  gem 'activerecord', '~> 4.0.0'
6
+ gem 'mime-types', '< 2.0', :platforms => :ruby_18 # coveralls
13
7
  end
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Dependent Restrict
2
2
  ==================
3
3
 
4
+ [![Build Status](https://travis-ci.org/sealink/dependent_restrict.png?branch=master)](https://travis-ci.org/sealink/dependent_restrict)
5
+ [![Coverage Status](https://coveralls.io/repos/sealink/dependent_restrict/badge.png)](https://coveralls.io/r/sealink/dependent_restrict)
6
+ [![Dependency Status](https://gemnasium.com/sealink/dependent_restrict.png?travis)](https://gemnasium.com/sealink/dependent_restrict)
7
+ [![Code Climate](https://codeclimate.com/github/sealink/dependent_restrict.png)](https://codeclimate.com/github/sealink/dependent_restrict)
8
+
4
9
  A gem for rails 2, 3 and 4 that retrofits and improves rails 4 functionality
5
10
 
6
11
  Rails 4 offers 2 very useful dependent restrictions:
data/Rakefile CHANGED
@@ -1,47 +1,4 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'date'
4
-
5
- #############################################################################
6
- #
7
- # Helper functions
8
- #
9
- #############################################################################
10
-
11
- def name
12
- @name ||= Dir['*.gemspec'].first.split('.').first
13
- end
14
-
15
- def version
16
- line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
17
- line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
18
- end
19
-
20
- def date
21
- Date.today.to_s
22
- end
23
-
24
- def rubyforge_project
25
- name
26
- end
27
-
28
- def gemspec_file
29
- "#{name}.gemspec"
30
- end
31
-
32
- def gem_file
33
- "#{name}-#{version}.gem"
34
- end
35
-
36
- def replace_header(head, header_name)
37
- head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
38
- end
39
-
40
- #############################################################################
41
- #
42
- # Standard tasks
43
- #
44
- #############################################################################
1
+ require "bundler/gem_tasks"
45
2
 
46
3
  desc 'Default: run specs.'
47
4
  task :default => :spec
@@ -59,92 +16,3 @@ task :coverage do
59
16
  ENV['COVERAGE'] = 'true'
60
17
  Rake::Task['spec'].invoke
61
18
  end
62
-
63
- require 'rdoc/task'
64
- RDoc::Task.new do |rdoc|
65
- rdoc.rdoc_dir = 'rdoc'
66
- rdoc.title = "#{name} #{version}"
67
- rdoc.rdoc_files.include('README*')
68
- rdoc.rdoc_files.include('lib/**/*.rb')
69
- end
70
-
71
- desc "Open an irb session preloaded with this library"
72
- task :console do
73
- sh "irb -rubygems -r ./lib/#{name}.rb"
74
- end
75
-
76
- #############################################################################
77
- #
78
- # Custom tasks (add your own tasks here)
79
- #
80
- #############################################################################
81
-
82
-
83
-
84
- #############################################################################
85
- #
86
- # Packaging tasks
87
- #
88
- #############################################################################
89
-
90
- desc "Create tag v#{version} and build and push #{gem_file} to Rubygems"
91
- task :release => :build do
92
- unless `git branch` =~ /^\* master$/
93
- puts "You must be on the master branch to release!"
94
- exit!
95
- end
96
- sh "git commit --allow-empty -a -m 'Release #{version}'"
97
- sh "git tag v#{version}"
98
- sh "git push origin master"
99
- sh "git push origin v#{version}"
100
- sh "gem push pkg/#{name}-#{version}.gem"
101
- end
102
-
103
- desc "Build #{gem_file} into the pkg directory"
104
- task :build => :gemspec do
105
- sh "mkdir -p pkg"
106
- sh "gem build #{gemspec_file}"
107
- sh "mv #{gem_file} pkg"
108
- end
109
-
110
- desc "Generate #{gemspec_file}"
111
- task :gemspec => :validate do
112
- # read spec file and split out manifest section
113
- spec = File.read(gemspec_file)
114
- head, manifest, tail = spec.split(" # = MANIFEST =\n")
115
-
116
- # replace name version and date
117
- replace_header(head, :name)
118
- replace_header(head, :version)
119
- replace_header(head, :date)
120
- #comment this out if your rubyforge_project has a different name
121
- replace_header(head, :rubyforge_project)
122
-
123
- # determine file list from git ls-files
124
- files = `git ls-files`.
125
- split("\n").
126
- sort.
127
- reject { |file| file =~ /^\./ }.
128
- reject { |file| file =~ /^(rdoc|pkg)/ }.
129
- map { |file| " #{file}" }.
130
- join("\n")
131
-
132
- # piece file back together and write
133
- manifest = " s.files = %w[\n#{files}\n ]\n"
134
- spec = [head, manifest, tail].join(" # = MANIFEST =\n")
135
- File.open(gemspec_file, 'w') { |io| io.write(spec) }
136
- puts "Updated #{gemspec_file}"
137
- end
138
-
139
- desc "Validate #{gemspec_file}"
140
- task :validate do
141
- libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
142
- unless libfiles.empty?
143
- puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
144
- exit!
145
- end
146
- unless Dir['VERSION*'].empty?
147
- puts "A `VERSION` file at root level violates Gem best practices."
148
- exit!
149
- end
150
- end
@@ -1,82 +1,27 @@
1
- ## This is the rakegem gemspec template. Make sure you read and understand
2
- ## all of the comments. Some sections require modification, and others can
3
- ## be deleted if you don't need them. Once you understand the contents of
4
- ## this file, feel free to delete any comments that begin with two hash marks.
5
- ## You can find comprehensive Gem::Specification documentation, at
6
- ## http://docs.rubygems.org/read/chapter/20
7
- Gem::Specification.new do |s|
8
- s.specification_version = 2 if s.respond_to? :specification_version=
9
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
- s.rubygems_version = '1.3.5'
11
-
12
- ## Leave these as is they will be modified for you by the rake gemspec task.
13
- ## If your rubyforge_project name is different, then edit it and comment out
14
- ## the sub! line in the Rakefile
15
- s.name = 'dependent_restrict'
16
- s.version = '0.2.1'
17
- s.date = '2014-05-09'
18
- s.rubyforge_project = 'dependent_restrict'
19
-
20
- ## Make sure your summary is short. The description may be as long
21
- ## as you like.
22
- s.summary = "Add dependent restrict and improves functionality to ActiveRecord 2/3/4.x."
23
- s.description = "This gem is not needed in Rails 3 as dependent => :raise is included in 3.0."
24
-
25
- ## List the primary authors. If there are a bunch of authors, it's probably
26
- ## better to set the email to an email list or something. If you don't have
27
- ## a custom homepage, consider using your GitHub URL or the like.
28
- s.authors = ["Michael Noack"]
29
- s.email = 'development@travellink.com.au'
30
- s.homepage = 'http://github.com/sealink/dependent_restrict'
31
- s.license = 'MIT'
32
-
33
- ## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
34
- ## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
35
- s.require_paths = %w[lib]
36
-
37
- ## This sections is only necessary if you have C extensions.
38
- # s.require_paths << 'ext'
39
- # s.extensions = %w[ext/extconf.rb]
40
-
41
- ## If your gem includes any executables, list them here.
42
- # s.executables = ["name"]
43
-
44
- ## Specify any RDoc options here. You'll want to add your README and
45
- ## LICENSE files to the extra_rdoc_files list.
46
- s.rdoc_options = ["--charset=UTF-8"]
47
- s.extra_rdoc_files = %w[README.md LICENSE]
48
-
49
- ## List your runtime dependencies here. Runtime dependencies are those
50
- ## that are needed for an end user to actually USE your code.
51
- s.add_dependency('activerecord', [">= 3.0", "< 5.0.0"])
52
-
53
- ## List your development dependencies here. Development dependencies are
54
- ## those that are only needed during development
55
- # s.add_development_dependency('DEVDEPNAME', [">= 1.1.0", "< 2.0.0"])
56
-
57
- ## Leave this section as-is. It will be automatically generated from the
58
- ## contents of your Git repository via the gemspec task. DO NOT REMOVE
59
- ## THE MANIFEST COMMENTS, they are used as delimiters by the task.
60
- # = MANIFEST =
61
- s.files = %w[
62
- Gemfile
63
- LICENSE
64
- README.md
65
- Rakefile
66
- dependent_restrict.gemspec
67
- gemfiles/rails2.gemfile
68
- gemfiles/rails3.gemfile
69
- gemfiles/rails4_0.gemfile
70
- gemfiles/rails4_1.gemfile
71
- lib/dependent_restrict.rb
72
- lib/dependent_restrict/delete_restriction_error.rb
73
- spec/dependent_restrict_spec.rb
74
- spec/schema.rb
75
- spec/spec_helper.rb
76
- ]
77
- # = MANIFEST =
78
-
79
- ## Test files will be grabbed from the file list. Make sure the path glob
80
- ## matches what you actually use.
81
- s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "dependent_restrict"
5
+ spec.version = "0.2.2"
6
+ spec.authors = ["Michael Noack"]
7
+ spec.email = ["support@travellink.com.au"]
8
+ spec.description = %q{This gem is not needed in Rails 3 as dependent => :raise is included in 3.0.}
9
+ spec.summary = %q{Add dependent restrict and improves functionality to ActiveRecord 2/3/4.x.}
10
+ spec.homepage = 'http://github.com/sealink/dependent_restrict'
11
+
12
+ spec.license = "MIT"
13
+
14
+ spec.files = `git ls-files`.split($/)
15
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.require_paths = ["lib"]
18
+
19
+ spec.add_runtime_dependency "activerecord", ">= 3.0"
20
+ spec.add_development_dependency "bundler", "~> 1.3"
21
+ spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "rspec"
23
+ spec.add_development_dependency "simplecov"
24
+ spec.add_development_dependency "simplecov-rcov"
25
+ spec.add_development_dependency "coveralls"
26
+ spec.add_development_dependency 'sqlite3'
82
27
  end
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
  gemspec :path => '../'
3
3
 
4
4
  group :development, :test do
@@ -9,4 +9,5 @@ group :development, :test do
9
9
  gem 'simplecov-rcov'
10
10
  gem 'sqlite3'
11
11
  gem 'activerecord', '~> 3.2.0'
12
+ gem 'mime-types', '< 2.0', :platforms => :ruby_18 # coveralls
12
13
  end
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
  gemspec :path => '../'
3
3
 
4
4
  group :development, :test do
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
  gemspec :path => '../'
3
3
 
4
4
  group :development, :test do
@@ -2,7 +2,7 @@ require 'active_record'
2
2
  require 'dependent_restrict/delete_restriction_error'
3
3
 
4
4
  module DependentRestrict
5
- VERSION = '0.2.1'
5
+ VERSION = '0.2.2'
6
6
 
7
7
  def self.included(base)
8
8
  super
@@ -18,54 +18,74 @@ module DependentRestrict
18
18
  end
19
19
 
20
20
  module ClassMethods
21
+ VALID_DEPENDENTS = [:rollback, :restrict_with_error, :restrict, :restrict_with_exception]
22
+
21
23
  # We should be aliasing configure_dependency_for_has_many but that method
22
24
  # is private so we can't. We alias has_many instead trying to be as fair
23
25
  # as we can to the original behaviour.
24
- def has_one_with_restrict(*args) #:nodoc:
25
- reflection = if active_record_4?
26
- association_id, options, scope, extension = *args
27
- restrict_create_reflection(:has_one, association_id, options || {}, scope || {}, self)
28
- else
29
- association_id, options, extension = *args
30
- create_reflection(:has_one, association_id, options || {}, self)
26
+ def has_one_with_restrict(*args, &extension)
27
+ options = args.extract_options! || {}
28
+ if VALID_DEPENDENTS.include?(options[:dependent].try(:to_sym))
29
+ reflection = if active_record_4?
30
+ association_id, scope = *args
31
+ restrict_create_reflection(:has_one, association_id, scope || {}, options, self)
32
+ else
33
+ association_id = args[0]
34
+ create_reflection(:has_one, association_id, options, self)
35
+ end
36
+ add_dependency_callback!(reflection, options)
31
37
  end
32
- add_dependency_callback!(reflection, options || {})
33
- has_one_without_restrict(*args) #association_id, options, &extension)
38
+ args << options
39
+ has_one_without_restrict(*args, &extension)
34
40
  end
35
41
 
36
- def has_many_with_restrict(association_id, options = {}, &extension) #:nodoc:
37
- reflection = if active_record_4?
38
- restrict_create_reflection(:has_many, association_id, options, scope ||= {}, self)
39
- else
40
- create_reflection(:has_many, association_id, options, self)
42
+ def has_many_with_restrict(*args, &extension)
43
+ options = args.extract_options! || {}
44
+ if VALID_DEPENDENTS.include?(options[:dependent].try(:to_sym))
45
+ reflection = if active_record_4?
46
+ association_id, scope = *args
47
+ restrict_create_reflection(:has_many, association_id, scope || {}, options, self)
48
+ else
49
+ association_id = args.first
50
+ create_reflection(:has_many, association_id, options, self)
51
+ end
52
+ add_dependency_callback!(reflection, options)
41
53
  end
42
- add_dependency_callback!(reflection, options)
43
- has_many_without_restrict(association_id, options, &extension)
54
+ args << options
55
+ has_many_without_restrict(*args, &extension)
44
56
  end
45
57
 
46
- def has_and_belongs_to_many_with_restrict(association_id, options = {}, &extension)
47
- reflection = if active_record_4?
48
- raise ArgumentError, "dependent_restrict doesn't work with has_and_belongs_to_many. Use equivalent rails 4.1 has_many :through" if ActiveRecord::Reflection.respond_to? :create
49
- restrict_create_reflection(:has_and_belongs_to_many, association_id, options, scope ||= {}, self)
50
- else
51
- create_reflection(:has_and_belongs_to_many, association_id, options, self)
58
+ def has_and_belongs_to_many_with_restrict(*args, &extension)
59
+ options = args.extract_options! || {}
60
+ if VALID_DEPENDENTS.include?(options[:dependent].try(:to_sym))
61
+ reflection = if active_record_4?
62
+ raise ArgumentError, "dependent_restrict doesn't work with has_and_belongs_to_many. Use equivalent rails 4.1 has_many :through" if ActiveRecord::Reflection.respond_to? :create
63
+ association_id, scope = *args
64
+ restrict_create_reflection(:has_and_belongs_to_many, association_id, scope || {}, options, self)
65
+ else
66
+ association_id = args.first
67
+ create_reflection(:has_and_belongs_to_many, association_id, options, self)
68
+ end
69
+ add_dependency_callback!(reflection, options)
70
+ options.delete(:dependent)
52
71
  end
53
- add_dependency_callback!(reflection, options)
54
- options.delete(:dependent)
55
- has_and_belongs_to_many_without_restrict(association_id, options, &extension)
72
+ args << options
73
+ has_and_belongs_to_many_without_restrict(*args, &extension)
56
74
  end
57
75
 
58
76
  private
59
77
 
60
78
  def add_dependency_callback!(reflection, options)
61
79
  dependent_type = active_record_4? ? options[:dependent] : reflection.options[:dependent]
62
- method_name = "dependent_#{dependent_type}_for_#{reflection.name}"
80
+ name = reflection.name
81
+ name = name.first if name.is_a?(Array) # rails 3
82
+ method_name = "dependent_#{dependent_type}_for_#{name}"
63
83
  case dependent_type
64
84
  when :rollback, :restrict_with_error
65
85
  options.delete(:dependent)
66
86
  define_method(method_name) do
67
87
  method = reflection.collection? ? :empty? : :nil?
68
- unless send(reflection.name).send(method)
88
+ unless send(name).send(method)
69
89
  raise ActiveRecord::Rollback
70
90
  end
71
91
  end
@@ -74,8 +94,8 @@ module DependentRestrict
74
94
  options.delete(:dependent)
75
95
  define_method(method_name) do
76
96
  method = reflection.collection? ? :empty? : :nil?
77
- unless send(reflection.name).send(method)
78
- raise ActiveRecord::DetailedDeleteRestrictionError.new(reflection.name, self)
97
+ unless send(name).send(method)
98
+ raise ActiveRecord::DetailedDeleteRestrictionError.new(name, self)
79
99
  end
80
100
  end
81
101
  before_destroy method_name
@@ -1,15 +1,6 @@
1
1
  #encoding: utf-8
2
2
  require 'spec_helper'
3
3
 
4
- DB_FILE = 'tmp/test_db'
5
- FileUtils.mkdir_p File.dirname(DB_FILE)
6
- FileUtils.rm_f DB_FILE
7
-
8
- ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => DB_FILE
9
-
10
- load 'spec/schema.rb'
11
-
12
-
13
4
  describe DependentRestrict do
14
5
 
15
6
  context 'when associations are defined' do
@@ -44,10 +35,12 @@ describe DependentRestrict do
44
35
  has_and_belongs_to_many :categories
45
36
  end
46
37
  end
38
+
47
39
  end
48
40
 
49
41
  after do
50
- %w(OrderInvoice Order Category).each { |klass| Object.send(:remove_const, klass) }
42
+ [OrderInvoice, Order, Category, ProductsCategory, Product].each(&:delete_all)
43
+ %w(OrderInvoice Order Category ProductsCategory Product).each { |klass| Object.send(:remove_const, klass) }
51
44
  end
52
45
 
53
46
 
@@ -64,6 +57,8 @@ describe DependentRestrict do
64
57
  self.select(&:active?)
65
58
  end
66
59
  end
60
+
61
+ has_many :order_invoices, :through => :orders
67
62
  end
68
63
  }.to_not raise_error
69
64
  end
@@ -82,9 +77,19 @@ describe DependentRestrict do
82
77
  self.select(&:active?)
83
78
  end
84
79
  end
80
+
81
+ has_many :order_invoices, :through => :orders, :dependent => :restrict_with_exception
85
82
  end
86
83
  end
87
84
 
85
+ it 'should create the reflections on Order' do
86
+ expect(Order.reflect_on_all_associations.map(&:name)).to eq [:category, :order_invoice]
87
+ end
88
+
89
+ it 'should create the reflections on Category' do
90
+ expect(Category.reflect_on_all_associations.map(&:name)).to eq [:orders, :order_invoices]
91
+ end
92
+
88
93
  it 'should restrict has_many relationships' do
89
94
  category = Category.create!
90
95
  5.times { Order.create!(:category => category) }
@@ -95,13 +100,13 @@ describe DependentRestrict do
95
100
  begin
96
101
  category.destroy
97
102
  rescue ActiveRecord::DetailedDeleteRestrictionError => e
98
- e.detailed_message.should == "Cannot delete record because 5 dependent orders exist\n\n\nThese include:\n1: Order 1\n2: Order 2\n3: Order 3\n4: Order 4\n5: Order 5"
103
+ expect(e.detailed_message).to eq "Cannot delete record because 5 dependent orders exist\n\n\nThese include:\n1: Order 1\n2: Order 2\n3: Order 3\n4: Order 4\n5: Order 5"
99
104
  end
100
105
  1.times { Order.create!(:category => category) }
101
106
  begin
102
107
  category.destroy
103
108
  rescue ActiveRecord::DetailedDeleteRestrictionError => e
104
- e.detailed_message.should == "Cannot delete record because 6 dependent orders exist\n\n\nThese include:\n1: Order 1\n2: Order 2\n3: Order 3\n4: Order 4\n...and 2 more"
109
+ expect(e.detailed_message).to eq "Cannot delete record because 6 dependent orders exist\n\n\nThese include:\n1: Order 1\n2: Order 2\n3: Order 3\n4: Order 4\n...and 2 more"
105
110
  end
106
111
 
107
112
  Order.destroy_all
@@ -124,7 +129,7 @@ describe DependentRestrict do
124
129
  category = Category.create!
125
130
  3.times { Order.create!(:category => category, :active => true) }
126
131
  2.times { Order.create!(:category => category, :active => false) }
127
- category.orders.active.count.should == 3
132
+ expect(category.orders.active.count).to eq 3
128
133
 
129
134
  Category.delete_all
130
135
  Order.delete_all
@@ -174,13 +179,13 @@ describe DependentRestrict do
174
179
  begin
175
180
  category.destroy
176
181
  rescue ActiveRecord::DetailedDeleteRestrictionError => e
177
- e.detailed_message.should == "Não pode ser excluído pois 5 pedidos relacionados(as) foram encontrados(as)\n\n\nIncluindo:\n13: Order 13\n14: Order 14\n15: Order 15\n16: Order 16\n17: Order 17"
182
+ expect(e.detailed_message).to eq "Não pode ser excluído pois 5 pedidos relacionados(as) foram encontrados(as)\n\n\nIncluindo:\n13: Order 13\n14: Order 14\n15: Order 15\n16: Order 16\n17: Order 17"
178
183
  end
179
184
  1.times { Order.create!(:category => category) }
180
185
  begin
181
186
  category.destroy
182
187
  rescue ActiveRecord::DetailedDeleteRestrictionError => e
183
- e.detailed_message.should == "Não pode ser excluído pois 6 pedidos relacionados(as) foram encontrados(as)\n\n\nIncluindo:\n13: Order 13\n14: Order 14\n15: Order 15\n16: Order 16\n...e mais 2"
188
+ expect(e.detailed_message).to eq "Não pode ser excluído pois 6 pedidos relacionados(as) foram encontrados(as)\n\n\nIncluindo:\n13: Order 13\n14: Order 14\n15: Order 15\n16: Order 16\n...e mais 2"
184
189
  end
185
190
 
186
191
  Order.destroy_all
@@ -219,25 +224,25 @@ describe DependentRestrict do
219
224
 
220
225
  it 'should restrict has_many relationships' do
221
226
  category = Category.create!
222
- Category.count.should == 1
227
+ expect(Category.count).to eq 1
223
228
  5.times { Order.create!(:category => category) }
224
229
  category.destroy
225
- Category.count.should == 1
230
+ expect(Category.count).to eq 1
226
231
  Order.destroy_all
227
232
  category.reload.destroy
228
- Category.count.should == 0
233
+ expect(Category.count).to eq 0
229
234
  end
230
235
 
231
236
  it 'should restrict has_one relationships' do
232
237
  order = Order.create!
233
- Order.count.should == 1
238
+ expect(Order.count).to eq 1
234
239
  order_invoice = OrderInvoice.create!(:order => order)
235
240
  order.reload.destroy
236
- Order.count.should == 1
241
+ expect(Order.count).to eq 1
237
242
 
238
243
  order_invoice.destroy
239
244
  order.reload.destroy
240
- Order.count.should == 0
245
+ expect(Order.count).to eq 0
241
246
  end
242
247
  end
243
248
  end
@@ -12,7 +12,7 @@ ActiveRecord::Schema.define(:version => 1) do
12
12
  t.boolean :active
13
13
  end
14
14
 
15
- create_table :product do |t|
15
+ create_table :products do |t|
16
16
  end
17
17
 
18
18
  create_table :products_categories do |t|
@@ -8,21 +8,35 @@
8
8
  require 'rubygems'
9
9
  require 'bundler/setup'
10
10
 
11
+ MINIMUM_COVERAGE = 81
12
+
11
13
  if ENV['COVERAGE']
12
14
  require 'simplecov'
13
- require 'simplecov-rcov'
14
- SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
15
+ require 'coveralls'
16
+ Coveralls.wear!
17
+
18
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
15
19
  SimpleCov.start do
16
20
  add_filter '/vendor/'
17
21
  add_filter '/spec/'
18
22
  add_group 'lib', 'lib'
19
23
  end
24
+ SimpleCov.at_exit do
25
+ SimpleCov.result.format!
26
+ percent = SimpleCov.result.covered_percent
27
+ unless percent >= MINIMUM_COVERAGE
28
+ puts "Coverage must be above #{MINIMUM_COVERAGE}%. It is #{"%.2f" % percent}%"
29
+ Kernel.exit(1)
30
+ end
31
+ end
20
32
  end
21
33
 
22
34
  require 'dependent_restrict'
23
35
 
24
- RSpec.configure do |config|
25
- config.treat_symbols_as_metadata_keys_with_true_values = true
26
- config.run_all_when_everything_filtered = true
27
- config.filter_run :focus
28
- end
36
+ DB_FILE = 'tmp/test_db'
37
+ FileUtils.mkdir_p File.dirname(DB_FILE)
38
+ FileUtils.rm_f DB_FILE
39
+
40
+ ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => DB_FILE
41
+
42
+ load 'spec/schema.rb'
metadata CHANGED
@@ -1,50 +1,160 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependent_restrict
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Michael Noack
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-05-09 00:00:00.000000000 Z
12
+ date: 2014-07-23 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activerecord
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - ">="
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '3.0'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: 5.0.0
23
22
  type: :runtime
24
23
  prerelease: false
25
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
26
  requirements:
27
- - - ">="
27
+ - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3.0'
30
- - - "<"
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.3'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.3'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
31
60
  - !ruby/object:Gem::Version
32
- version: 5.0.0
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: simplecov
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: simplecov-rcov
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: coveralls
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: sqlite3
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
33
142
  description: This gem is not needed in Rails 3 as dependent => :raise is included
34
143
  in 3.0.
35
- email: development@travellink.com.au
144
+ email:
145
+ - support@travellink.com.au
36
146
  executables: []
37
147
  extensions: []
38
- extra_rdoc_files:
39
- - README.md
40
- - LICENSE
148
+ extra_rdoc_files: []
41
149
  files:
150
+ - .gitignore
151
+ - .rspec
152
+ - .travis.yml
42
153
  - Gemfile
43
154
  - LICENSE
44
155
  - README.md
45
156
  - Rakefile
46
157
  - dependent_restrict.gemspec
47
- - gemfiles/rails2.gemfile
48
158
  - gemfiles/rails3.gemfile
49
159
  - gemfiles/rails4_0.gemfile
50
160
  - gemfiles/rails4_1.gemfile
@@ -56,26 +166,35 @@ files:
56
166
  homepage: http://github.com/sealink/dependent_restrict
57
167
  licenses:
58
168
  - MIT
59
- metadata: {}
60
169
  post_install_message:
61
- rdoc_options:
62
- - "--charset=UTF-8"
170
+ rdoc_options: []
63
171
  require_paths:
64
172
  - lib
65
173
  required_ruby_version: !ruby/object:Gem::Requirement
174
+ none: false
66
175
  requirements:
67
- - - ">="
176
+ - - ! '>='
68
177
  - !ruby/object:Gem::Version
69
178
  version: '0'
179
+ segments:
180
+ - 0
181
+ hash: 551629118570124682
70
182
  required_rubygems_version: !ruby/object:Gem::Requirement
183
+ none: false
71
184
  requirements:
72
- - - ">="
185
+ - - ! '>='
73
186
  - !ruby/object:Gem::Version
74
187
  version: '0'
188
+ segments:
189
+ - 0
190
+ hash: 551629118570124682
75
191
  requirements: []
76
- rubyforge_project: dependent_restrict
77
- rubygems_version: 2.2.0
192
+ rubyforge_project:
193
+ rubygems_version: 1.8.25
78
194
  signing_key:
79
- specification_version: 2
195
+ specification_version: 3
80
196
  summary: Add dependent restrict and improves functionality to ActiveRecord 2/3/4.x.
81
- test_files: []
197
+ test_files:
198
+ - spec/dependent_restrict_spec.rb
199
+ - spec/schema.rb
200
+ - spec/spec_helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 98d742af335bdd2b42c95160496b044c555c2fc1
4
- data.tar.gz: 7e2b5342a2c9ce2e2d3a8f842b1221109a3317f0
5
- SHA512:
6
- metadata.gz: b7e03ba470c1621de281bfebcc90f085502bc11c5f848e36065bf04e8b47049c516334fb08ed24fe4e61e36dba901ca97bc1ae40fb3570052a20e110b0ac3960
7
- data.tar.gz: a06010a30a0ff6f5edff714928ac009ee42bb857a616e8ca03ddb92239a1773360db3d34c2c9e6c8860e71c85a2cfcc554f3256b4c50112ba37288903516ef05
@@ -1,12 +0,0 @@
1
- source :rubygems
2
- gemspec :path => '../'
3
-
4
- group :development, :test do
5
- gem 'rake', '~> 0.9.2'
6
- gem 'rdoc', '~> 3.12'
7
- gem 'rspec'
8
- gem 'simplecov'
9
- gem 'simplecov-rcov'
10
- gem 'sqlite3'
11
- gem 'activerecord', '~> 2.3.0'
12
- end