dependent_restrict 0.2.3 → 0.2.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a13975da1f4b033d23035fbddb74120b616bd9a0
4
- data.tar.gz: 00c61e7a441bdda8223791f3e4b775e4e7c6d467
3
+ metadata.gz: 419625dae9ead42079c955404a75b04bdff01f69
4
+ data.tar.gz: eee3360dd08cd3d2ed0d6723ceb9618e9b36b15f
5
5
  SHA512:
6
- metadata.gz: cb667fb26ec0e0d53fba2921f11be61a7495a44f120bcafbeeb74f3fd6116bbff39ad9b65c8ff87f60add46e1e253150f6cd97042e9e3688184abe962ffcf2ae
7
- data.tar.gz: 7e35405f820b9c6a0a90e58a915680e50a61074581e5eb82f43b61ec7dd3a54dddc67c74bd49587e8e19838fdce960f18ab51daf695388a6bd419896db7cb4fe
6
+ metadata.gz: db2746a76da5913fa2c93c0efa8c9f99c9cd5318a4e991dcb2d1be3f8246723389fbe7f231cc0a06eabe1b85626cc47682799b81e63d10ac8f6ab4548b374276
7
+ data.tar.gz: 7c82199bafdae295cc3015ce60bc437694b1617dc1332149719411664d484ca42b364a54ccf3da28f192611d2bbcfed36278ca2a06071182e1868a92b8a2fac5
@@ -0,0 +1,17 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+ This project adheres to [Semantic Versioning](http://semver.org/).
4
+ This changelog adheres to [Keep a CHANGELOG](http://keepachangelog.com/).
5
+
6
+ ## Unreleased
7
+
8
+ ## 0.2.4
9
+ ### Added
10
+ - Support has and belongs to many in rails 4+
11
+ - Enforce minimum coverage in tests
12
+ - [TT-1392] Changelog file
13
+
14
+ ## 0.2.3
15
+ ### Added
16
+ - Support rails 5
17
+ - Improve testing of ruby/rails versions
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'bundler'
25
25
  spec.add_development_dependency 'rake'
26
26
  spec.add_development_dependency 'rspec'
27
- spec.add_development_dependency 'simplecov'
27
+ spec.add_development_dependency 'coverage-kit'
28
28
  spec.add_development_dependency 'simplecov-rcov'
29
29
  spec.add_development_dependency 'coveralls'
30
30
  spec.add_development_dependency 'sqlite3'
@@ -52,7 +52,6 @@ module DependentRestrict
52
52
  options = args.extract_options! || {}
53
53
  if VALID_DEPENDENTS.include?(options[:dependent].try(:to_sym))
54
54
  reflection = if active_record_4?
55
- 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
56
55
  association_id, scope = *args
57
56
  restrict_create_reflection(:has_and_belongs_to_many, association_id, scope || {}, options, self)
58
57
  else
@@ -101,6 +100,10 @@ module DependentRestrict
101
100
 
102
101
  def restrict_create_reflection(*args)
103
102
  if ActiveRecord::Reflection.respond_to? :create
103
+ if args[0] == :has_and_belongs_to_many
104
+ args[0] = :has_many
105
+ args[3][:through] = [self.table_name, args[1].to_s].sort.join('_')
106
+ end
104
107
  ActiveRecord::Reflection.create *args
105
108
  else
106
109
  create_reflection(*args)
@@ -1,3 +1,3 @@
1
1
  module DependentRestrict
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.4'
3
3
  end
@@ -18,33 +18,35 @@ describe DependentRestrict do
18
18
  end
19
19
 
20
20
  class Category < ActiveRecord::Base
21
+ has_and_belongs_to_many :products
22
+
21
23
  def to_s
22
24
  "Category #{id}"
23
25
  end
24
26
  end
25
27
 
26
- class ProductsCategory < ActiveRecord::Base
28
+ class CategoriesProduct < ActiveRecord::Base
27
29
  belongs_to :product
28
30
  belongs_to :category
29
31
  end
30
32
 
31
33
  class Product < ActiveRecord::Base
32
- if ActiveRecord::Reflection.respond_to? :create
33
- has_many :categories, :through => :products_categories
34
- else
35
- has_and_belongs_to_many :categories
34
+ has_and_belongs_to_many :categories
35
+
36
+ def to_s
37
+ "Product #{id}"
36
38
  end
37
39
  end
38
40
 
39
41
  end
40
42
 
41
43
  after do
42
- [OrderInvoice, Order, Category, ProductsCategory, Product].each(&:delete_all)
44
+ [OrderInvoice, Order, Category, CategoriesProduct, Product].each(&:delete_all)
43
45
  classes_to_remove = %w(
44
46
  OrderInvoice
45
47
  Order
46
48
  Category
47
- ProductsCategory
49
+ CategoriesProduct
48
50
  Product
49
51
  CategoryOrdersAssociationExtension
50
52
  )
@@ -87,6 +89,12 @@ describe DependentRestrict do
87
89
  end
88
90
 
89
91
  has_many :order_invoices, :through => :orders, :dependent => :restrict_with_exception
92
+
93
+ has_and_belongs_to_many :products, dependent: :restrict_with_exception
94
+ end
95
+
96
+ class Product < ActiveRecord::Base
97
+ has_and_belongs_to_many :categories
90
98
  end
91
99
  end
92
100
 
@@ -95,7 +103,26 @@ describe DependentRestrict do
95
103
  end
96
104
 
97
105
  it 'should create the reflections on Category' do
98
- expect(Category.reflect_on_all_associations.map(&:name)).to eq [:orders, :order_invoices]
106
+ expect(Category.reflect_on_all_associations.map(&:name)).to eq [:products, :orders, :order_invoices]
107
+ end
108
+
109
+ it 'should restrict has_and_belongs_to_many relationships' do
110
+ product = Product.create!
111
+ category = Category.create!
112
+ category.products = [product]
113
+
114
+ expect { category.reload.destroy }.to raise_error(
115
+ ActiveRecord::DetailedDeleteRestrictionError,
116
+ 'Cannot delete record because dependent products exists'
117
+ )
118
+ begin
119
+ category.destroy
120
+ rescue ActiveRecord::DetailedDeleteRestrictionError => e
121
+ expect(e.detailed_message).to eq "Cannot delete record because dependent products exists\n\n\nThese include:\n1: Product 1"
122
+ end
123
+
124
+ Product.destroy_all
125
+ expect { category.reload.destroy }.to_not raise_error
99
126
  end
100
127
 
101
128
  it 'should restrict has_many relationships' do
@@ -15,7 +15,7 @@ ActiveRecord::Schema.define(:version => 1) do
15
15
  create_table :products do |t|
16
16
  end
17
17
 
18
- create_table :products_categories do |t|
18
+ create_table :categories_products do |t|
19
19
  t.integer :product_id, :category_id
20
20
  end
21
21
  end
@@ -8,6 +8,7 @@
8
8
  require 'rubygems'
9
9
  require 'bundler/setup'
10
10
 
11
+ require 'active_record'
11
12
  require 'support/coverage_loader'
12
13
 
13
14
  require 'dependent_restrict'
@@ -1,26 +1,5 @@
1
- MINIMUM_COVERAGE = 40
2
-
3
- unless ENV['COVERAGE'] == 'off'
4
- require 'simplecov'
5
- require 'simplecov-rcov'
6
- require 'coveralls'
7
- Coveralls.wear!
8
-
9
- SimpleCov.formatters = [
10
- SimpleCov::Formatter::RcovFormatter,
11
- Coveralls::SimpleCov::Formatter
12
- ]
13
- SimpleCov.start do
14
- add_filter '/vendor/'
15
- add_filter '/spec/'
16
- add_group 'lib', 'lib'
17
- end
18
- SimpleCov.at_exit do
19
- SimpleCov.result.format!
20
- percent = SimpleCov.result.covered_percent
21
- unless percent >= MINIMUM_COVERAGE
22
- puts "Coverage must be above #{MINIMUM_COVERAGE}%. It is #{"%.2f" % percent}%"
23
- Kernel.exit(1)
24
- end
25
- end
26
- end
1
+ require 'simplecov-rcov'
2
+ require 'coveralls'
3
+ require 'coverage/kit'
4
+ minimum_coverage = ActiveRecord::VERSION::MAJOR >= 4 ? 92.2 : 86.6
5
+ Coverage::Kit.setup(minimum_coverage: minimum_coverage)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependent_restrict
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Noack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-05 00:00:00.000000000 Z
11
+ date: 2017-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -73,7 +73,7 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: simplecov
76
+ name: coverage-kit
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
@@ -153,6 +153,7 @@ files:
153
153
  - ".gitignore"
154
154
  - ".rspec"
155
155
  - ".travis.yml"
156
+ - CHANGELOG.md
156
157
  - Gemfile
157
158
  - LICENSE
158
159
  - README.md
@@ -188,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
189
  version: '0'
189
190
  requirements: []
190
191
  rubyforge_project:
191
- rubygems_version: 2.4.8
192
+ rubygems_version: 2.5.2
192
193
  signing_key:
193
194
  specification_version: 4
194
195
  summary: Add dependent restrict and improves functionality to ActiveRecord 2/3/4.x.