acts_as_scrubbable 1.4.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d5dd99dfeaccd8c11b9eb2125c5dc9e16aba2f8f5d02eb5fc9fba59d7c36f02
4
- data.tar.gz: 3551737a717372941339f0a81e95f6142a87a1ebb006437465d458c0fee0ea07
3
+ metadata.gz: 21f5d280a1785c5fa8107fa5d7a0f53939c00cb4426ac0bf1fdf22dc91e09c2c
4
+ data.tar.gz: d4d78fba1d4274380b77f090fe6673c0f07ccd97ed785ab7eefcb26f4a96bf29
5
5
  SHA512:
6
- metadata.gz: eca9d4ca0de33ea806a4e8c28e7eb97d832c9859ee00f984342d6b041aa31393742942ebee345123459f484fd1a7f157164115afbf5e67070df2c990e9bc5d2d
7
- data.tar.gz: be3873e9f173fbf7058aa0c5328397465264117f627afbfdd92f527a5f8a7f1e637722b13e2be9d4dce9adf3133182c93c988f324cf3e046c8a0382a015dd891
6
+ metadata.gz: ff835f166087c1bdf1e950a3fbec2e7c618773af25e271714faba04ccd5860626228fdc6fc4c18521d9ac58f0b960d8a142edb8cab0adca42a6878e1d22ef7cc
7
+ data.tar.gz: 34862f07b833fbe839b8838b628e6eb6ba4305fe06f1c5bb8d4ba2b41de193c9248a2dc8800fd6abe887351e7df64583134dd7f7a12c719d06e7ee9121822ab9
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .bundle
1
2
  Gemfile.lock
2
3
 
3
- .idea/*
4
+ .idea/*
@@ -13,9 +13,9 @@ Gem::Specification.new do |s|
13
13
  s.license = "MIT"
14
14
  s.required_ruby_version = '~> 2.0'
15
15
 
16
- s.add_runtime_dependency 'activesupport' , '>= 4.1', '< 8'
17
- s.add_runtime_dependency 'activerecord' , '>= 4.1', '< 8'
18
- s.add_runtime_dependency 'railties' , '>= 4.1', '< 8'
16
+ s.add_runtime_dependency 'activesupport' , '>= 6.1', '< 8'
17
+ s.add_runtime_dependency 'activerecord' , '>= 6.1', '< 8'
18
+ s.add_runtime_dependency 'railties' , '>= 6.1', '< 8'
19
19
  s.add_runtime_dependency 'faker' , '>= 1.4'
20
20
  s.add_runtime_dependency 'highline' , '>= 1.7'
21
21
  s.add_runtime_dependency 'term-ansicolor' , '>= 1.3'
@@ -13,8 +13,8 @@ module ActsAsScrubbable
13
13
  end
14
14
 
15
15
  def prompt_db_configuration
16
- db_host = ActiveRecord::Base.connection_config[:host]
17
- db_name = ActiveRecord::Base.connection_config[:database]
16
+ db_host = ActiveRecord::Base.connection_db_config.host
17
+ db_name = ActiveRecord::Base.connection_db_config.database
18
18
 
19
19
  ActsAsScrubbable.logger.warn Term::ANSIColor.red("Please verify the information below to continue")
20
20
  ActsAsScrubbable.logger.warn Term::ANSIColor.red("Host: ") + Term::ANSIColor.white(" #{db_host}")
@@ -22,10 +22,10 @@ module ActsAsScrubbable
22
22
  end
23
23
 
24
24
  def confirmed_configuration?
25
- db_host = ActiveRecord::Base.connection_config[:host]
25
+ db_host = ActiveRecord::Base.connection_db_config.host
26
26
 
27
27
  unless ENV["SKIP_CONFIRM"] == "true"
28
- answer = ask("Type '#{db_host}' to continue. \n".red + '-> '.white)
28
+ answer = ask(Term::ANSIColor.red("Type '#{db_host}' to continue. \n") + Term::ANSIColor.white("-> "))
29
29
  unless answer == db_host
30
30
  ActsAsScrubbable.logger.error Term::ANSIColor.red("exiting ...")
31
31
  return false
@@ -1,3 +1,3 @@
1
1
  module ActsAsScrubbable
2
- VERSION = '1.4.0'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -0,0 +1,143 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe ActsAsScrubbable::TaskRunner do
4
+ subject(:runner) { described_class.new }
5
+
6
+ let(:logger) { instance_double("Logger", error: nil, info: nil, warn: nil) }
7
+ before do
8
+ allow(ActsAsScrubbable).to receive(:logger).and_return(logger)
9
+ end
10
+
11
+ describe "#prompt_db_configuration" do
12
+ it "reports database host and name" do
13
+ runner.prompt_db_configuration
14
+ expect(logger).to have_received(:warn).with(/Host:/)
15
+ expect(logger).to have_received(:warn).with(/Database:/)
16
+ end
17
+ end
18
+
19
+ describe "#confirmed_configuration?" do
20
+ before do
21
+ allow(runner).to receive(:ask).and_return(answer)
22
+ end
23
+
24
+ context "when answer matches database host" do
25
+ let(:answer) { ActiveRecord::Base.connection_db_config.host }
26
+
27
+ it "is true" do
28
+ expect(runner).to be_confirmed_configuration
29
+ end
30
+ end
31
+
32
+ context "when answer does not match database host" do
33
+ let(:answer) { "anything else" }
34
+
35
+ it "is false" do
36
+ expect(runner).not_to be_confirmed_configuration
37
+ end
38
+ end
39
+ end
40
+
41
+ describe "#scrub" do
42
+ let(:application) { instance_double("Rails::Application", eager_load!: nil) }
43
+ let(:processor) { instance_double("ActsAsScrubbable::ArClassProcessor", process: nil) }
44
+ before do
45
+ allow(Rails).to receive(:application).and_return(application)
46
+ allow(ActsAsScrubbable::ArClassProcessor).to receive(:new).and_return(processor)
47
+ # RSpec mocks are not tracking calls across the forks that Parallel creates, so stub it out
48
+ allow(Parallel).to receive(:each) do |array, &block|
49
+ array.each(&block)
50
+ end
51
+ end
52
+
53
+ it "scrubs all scrubbable classes", :aggregate_failures do
54
+ runner.extract_ar_classes
55
+ runner.scrub(num_of_batches: 1)
56
+ expect(processor).to have_received(:process).with(1).exactly(3).times
57
+ expect(ActsAsScrubbable::ArClassProcessor).to have_received(:new).with(ScrubbableModel)
58
+ expect(ActsAsScrubbable::ArClassProcessor).to have_received(:new).with(AnotherScrubbableModel)
59
+ expect(ActsAsScrubbable::ArClassProcessor).to have_received(:new).with(AThirdScrubbableModel)
60
+ expect(ActsAsScrubbable::ArClassProcessor).not_to have_received(:new).with(NonScrubbableModel)
61
+ end
62
+
63
+ context "if SCRUB_CLASSES is set" do
64
+ before do
65
+ allow(ENV).to receive(:[]).and_call_original
66
+ allow(ENV).to receive(:[]).with("SCRUB_CLASSES").and_return(
67
+ "NonScrubbableModel,ScrubbableModel,AThirdScrubbableModel",
68
+ )
69
+ runner.extract_ar_classes
70
+ end
71
+
72
+ it "only scrubs specified scrubbable classes" do
73
+ runner.scrub
74
+ expect(processor).to have_received(:process).twice
75
+ expect(ActsAsScrubbable::ArClassProcessor).to have_received(:new).with(ScrubbableModel)
76
+ expect(ActsAsScrubbable::ArClassProcessor).to have_received(:new).with(AThirdScrubbableModel)
77
+ expect(ActsAsScrubbable::ArClassProcessor).not_to have_received(:new).with(AnotherScrubbableModel)
78
+ expect(ActsAsScrubbable::ArClassProcessor).not_to have_received(:new).with(NonScrubbableModel)
79
+ end
80
+ end
81
+
82
+ context "if a specific class is set" do
83
+ before do
84
+ runner.set_ar_class(AnotherScrubbableModel)
85
+ end
86
+
87
+ it "only scrubs the specified class" do
88
+ runner.scrub
89
+ expect(processor).to have_received(:process).once
90
+ expect(ActsAsScrubbable::ArClassProcessor).to have_received(:new).with(AnotherScrubbableModel)
91
+ expect(ActsAsScrubbable::ArClassProcessor).not_to have_received(:new).with(ScrubbableModel)
92
+ expect(ActsAsScrubbable::ArClassProcessor).not_to have_received(:new).with(AThirdScrubbableModel)
93
+ expect(ActsAsScrubbable::ArClassProcessor).not_to have_received(:new).with(NonScrubbableModel)
94
+ end
95
+ end
96
+ end
97
+
98
+ describe "#before_hooks" do
99
+ before do
100
+ allow(ActsAsScrubbable).to receive(:execute_before_hook)
101
+ end
102
+
103
+ it "executes before hook" do
104
+ runner.before_hooks
105
+ expect(ActsAsScrubbable).to have_received(:execute_before_hook)
106
+ end
107
+
108
+ context "if SKIP_BEFOREHOOK is set" do
109
+ before do
110
+ allow(ENV).to receive(:[]).and_call_original
111
+ allow(ENV).to receive(:[]).with("SKIP_BEFOREHOOK").and_return("true")
112
+ end
113
+
114
+ it "does nothing" do
115
+ runner.before_hooks
116
+ expect(ActsAsScrubbable).not_to have_received(:execute_before_hook)
117
+ end
118
+ end
119
+ end
120
+
121
+ describe "#after_hooks" do
122
+ before do
123
+ allow(ActsAsScrubbable).to receive(:execute_after_hook)
124
+ end
125
+
126
+ it "executes after hook" do
127
+ runner.after_hooks
128
+ expect(ActsAsScrubbable).to have_received(:execute_after_hook)
129
+ end
130
+
131
+ context "if SKIP_AFTERHOOK is set" do
132
+ before do
133
+ allow(ENV).to receive(:[]).and_call_original
134
+ allow(ENV).to receive(:[]).with("SKIP_AFTERHOOK").and_return("true")
135
+ end
136
+
137
+ it "does nothing" do
138
+ runner.after_hooks
139
+ expect(ActsAsScrubbable).not_to have_received(:execute_after_hook)
140
+ end
141
+ end
142
+ end
143
+ end
@@ -1,14 +1,10 @@
1
- require 'nulldb/rails'
2
- require 'nulldb_rspec'
1
+ require "nulldb/rails"
2
+ require "nulldb_rspec"
3
3
 
4
- if ActiveRecord::Base.configurations.respond_to?(:merge!)
5
- ActiveRecord::Base.configurations.merge!("test" => {adapter: 'nulldb'})
6
- else
7
- ActiveRecord::Base.configurations = ActiveRecord::DatabaseConfigurations.new(test: {adapter: 'nulldb'})
8
- end
4
+ ActiveRecord::Base.configurations = ActiveRecord::DatabaseConfigurations.new(test: {adapter: "nulldb"})
9
5
 
10
6
  NullDB.configure do |c|
11
- c.project_root = './spec'
7
+ c.project_root = "./spec"
12
8
  end
13
9
 
14
10
  RSpec.configure do |config|
@@ -49,3 +45,11 @@ class ScrubbableModel < ActiveRecord::Base
49
45
  self.scrubbing_finished = true
50
46
  end
51
47
  end
48
+
49
+ class AnotherScrubbableModel < ActiveRecord::Base
50
+ acts_as_scrubbable :active => :boolean
51
+ end
52
+
53
+ class AThirdScrubbableModel < ActiveRecord::Base
54
+ acts_as_scrubbable :active => :boolean
55
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_scrubbable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samer Masry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-19 00:00:00.000000000 Z
11
+ date: 2022-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.1'
19
+ version: '6.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '8'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '4.1'
29
+ version: '6.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '8'
@@ -36,7 +36,7 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '4.1'
39
+ version: '6.1'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '8'
@@ -46,7 +46,7 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '4.1'
49
+ version: '6.1'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '8'
@@ -56,7 +56,7 @@ dependencies:
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: '4.1'
59
+ version: '6.1'
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '8'
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: '4.1'
69
+ version: '6.1'
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
72
  version: '8'
@@ -236,12 +236,12 @@ files:
236
236
  - lib/acts_as_scrubbable/tasks.rb
237
237
  - lib/acts_as_scrubbable/update_processor.rb
238
238
  - lib/acts_as_scrubbable/version.rb
239
- - spec/db/database.yml
240
239
  - spec/db/schema.rb
241
240
  - spec/lib/acts_as_scrubbable/ar_class_processor_spec.rb
242
241
  - spec/lib/acts_as_scrubbable/import_processor_spec.rb
243
242
  - spec/lib/acts_as_scrubbable/scrub_spec.rb
244
243
  - spec/lib/acts_as_scrubbable/scrubbable_spec.rb
244
+ - spec/lib/acts_as_scrubbable/task_runner_spec.rb
245
245
  - spec/lib/acts_as_scrubbable/update_processor_spec.rb
246
246
  - spec/spec_helper.rb
247
247
  - spec/support/database.rb
@@ -269,12 +269,12 @@ signing_key:
269
269
  specification_version: 4
270
270
  summary: Scrubbing data made easy
271
271
  test_files:
272
- - spec/db/database.yml
273
272
  - spec/db/schema.rb
274
273
  - spec/lib/acts_as_scrubbable/ar_class_processor_spec.rb
275
274
  - spec/lib/acts_as_scrubbable/import_processor_spec.rb
276
275
  - spec/lib/acts_as_scrubbable/scrub_spec.rb
277
276
  - spec/lib/acts_as_scrubbable/scrubbable_spec.rb
277
+ - spec/lib/acts_as_scrubbable/task_runner_spec.rb
278
278
  - spec/lib/acts_as_scrubbable/update_processor_spec.rb
279
279
  - spec/spec_helper.rb
280
280
  - spec/support/database.rb
data/spec/db/database.yml DELETED
@@ -1,2 +0,0 @@
1
- test:
2
- adapter: nulldb