pseudo_cleaner 0.0.34 → 0.0.35

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module PseudoCleaner
2
- VERSION = "0.0.34"
2
+ VERSION = "0.0.35"
3
3
  end
@@ -4,6 +4,7 @@ require "database_cleaner"
4
4
  require "pseudo_cleaner/version"
5
5
  require "pseudo_cleaner/configuration"
6
6
  require "pseudo_cleaner/table_cleaner"
7
+ require "pseudo_cleaner/redis_cleaner"
7
8
  require "pseudo_cleaner/master_cleaner"
8
9
  require "pseudo_cleaner/logger"
9
10
 
@@ -22,6 +22,10 @@ Gem::Specification.new do |spec|
22
22
  spec.add_runtime_dependency "sorted_seeder"
23
23
  spec.add_runtime_dependency "database_cleaner"
24
24
 
25
+ spec.add_development_dependency "redis"
26
+ spec.add_development_dependency "redis-namespace"
25
27
  spec.add_development_dependency "bundler", "~> 1.3"
26
28
  spec.add_development_dependency "rake"
29
+ spec.add_development_dependency "rspec"
30
+ spec.add_development_dependency "cornucopia"
27
31
  end
@@ -0,0 +1,4 @@
1
+ test:
2
+ host: 127.0.0.1
3
+ port: 6379
4
+ db: 0
@@ -0,0 +1,10 @@
1
+ require "spec_helper"
2
+
3
+ require "faker"
4
+ require "cornucopia"
5
+ require "cornucopia/rspec_hooks"
6
+
7
+ Cornucopia::Util::Configuration.auto_open_report_after_generation(ENV['RM_INFO'])
8
+
9
+ # Cornucopia::Util::Configuration.seed = 1
10
+ # Cornucopia::Util::Configuration.context_seed = 1
@@ -0,0 +1,162 @@
1
+ require "rails_helper"
2
+ require "pseudo_cleaner/redis_cleaner"
3
+
4
+ RSpec.describe PseudoCleaner::RedisCleaner, type: :helper do
5
+ let(:connection_information) { YAML.load(File.read(File.join(File.dirname(__FILE__), "fixtures/resque.yml")))["test"] }
6
+ let(:redis) { Redis.new(connection_information) }
7
+ let(:db2_redis) { Redis.new(connection_information.merge({ "db" => 1 })) }
8
+ let(:ns_redis) { Redis::Namespace.new :name_space_test, redis: redis }
9
+ let(:set_key) { "\\\"#{Faker::Lorem.sentence}\"\\" }
10
+ let(:set_value) { "\"#{Faker::Lorem.sentence}\"" }
11
+ let(:set_key_1) { "\\\"#{Faker::Lorem.sentence}\"\\" }
12
+ let(:set_value_1) { "\"#{Faker::Lorem.sentence}\"" }
13
+
14
+ before(:each) do
15
+ @before_keys = redis.keys.select { |key| (key =~ /redis_cleaner::synchronization_(?:end_)?key_[0-9]+_[0-9]+/).nil? }
16
+ end
17
+
18
+ after(:each) do
19
+ redis.del(set_key)
20
+ db2_redis.del(set_key)
21
+ redis.del(set_key_1)
22
+ db2_redis.del(set_key_1)
23
+
24
+ end_keys = redis.keys.select { |key| (key =~ /redis_cleaner::synchronization_(?:end_)?key_[0-9]+_[0-9]+/).nil? }
25
+ expect(end_keys).to eq(@before_keys)
26
+
27
+ Redis.current = nil
28
+ end
29
+
30
+ it "cleans up new values at test_end" do
31
+ cleaner = PseudoCleaner::RedisCleaner.new(:suite_start, :suite_end, redis, {})
32
+ cleaner.suite_start :pseudo_delete
33
+
34
+ cleaner.test_start :pseudo_delete
35
+
36
+ redis.set(set_key, set_value)
37
+ db2_redis.set(set_key_1, set_value_1)
38
+
39
+ cleaner.test_end :pseudo_delete
40
+
41
+ expect(redis.get(set_key)).not_to be
42
+ expect(db2_redis.get(set_key_1)).to eq set_value_1
43
+
44
+ cleaner.suite_end :pseudo_delete
45
+ end
46
+
47
+ it "warns of values changed between tests" do
48
+ cleaner = PseudoCleaner::RedisCleaner.new(:suite_start, :suite_end, redis, {})
49
+ cleaner.suite_start :pseudo_delete
50
+
51
+ redis.set(set_key, set_value)
52
+ db2_redis.set(set_key_1, set_value_1)
53
+
54
+ expect(PseudoCleaner::Logger).to receive(:write).exactly(2).times.and_call_original
55
+
56
+ cleaner.test_start :pseudo_delete
57
+
58
+ expect(redis.get(set_key)).not_to be
59
+ expect(db2_redis.get(set_key_1)).to eq set_value_1
60
+
61
+ cleaner.test_end :pseudo_delete
62
+ cleaner.suite_end :pseudo_delete
63
+ end
64
+
65
+ it "does not warn of existing values not changed during test" do
66
+ cleaner = PseudoCleaner::RedisCleaner.new(:suite_start, :suite_end, redis, {})
67
+
68
+ redis.set(set_key_1, set_value)
69
+
70
+ cleaner.suite_start :pseudo_delete
71
+ cleaner.test_start :pseudo_delete
72
+
73
+ redis.get(set_key_1)
74
+ redis.set(set_key, set_value)
75
+ db2_redis.set(set_key_1, set_value_1)
76
+
77
+ expect(Object).not_to receive(:const_defined?).with("Cornucopia", false)
78
+ expect(PseudoCleaner::Logger).not_to receive(:write)
79
+
80
+ cleaner.test_end :pseudo_delete
81
+
82
+ expect(redis.get(set_key)).not_to be
83
+ expect(redis.get(set_key_1)).to eq set_value
84
+ expect(db2_redis.get(set_key_1)).to eq set_value_1
85
+
86
+ cleaner.suite_end :pseudo_delete
87
+ end
88
+
89
+ it "warns of existing values changed during test" do
90
+ cleaner = PseudoCleaner::RedisCleaner.new(:suite_start, :suite_end, redis, {})
91
+
92
+ redis.set(set_key_1, set_value)
93
+
94
+ cleaner.suite_start :pseudo_delete
95
+ cleaner.test_start :pseudo_delete
96
+
97
+ redis.set(set_key_1, set_value_1)
98
+ redis.set(set_key, set_value)
99
+ db2_redis.set(set_key_1, set_value_1)
100
+
101
+ expect(PseudoCleaner::Logger).to receive(:write).exactly(4).times.and_call_original
102
+
103
+ cleaner.test_end :pseudo_delete
104
+
105
+ expect(redis.get(set_key)).not_to be
106
+ expect(redis.get(set_key_1)).to eq set_value_1
107
+ expect(db2_redis.get(set_key_1)).to eq set_value_1
108
+
109
+ cleaner.suite_end :pseudo_delete
110
+ end
111
+
112
+ it "warns of deleted values at suite_end" do
113
+ cleaner = PseudoCleaner::RedisCleaner.new(:suite_start, :suite_end, redis, {})
114
+
115
+ redis.set(set_key_1, set_value)
116
+
117
+ cleaner.suite_start :pseudo_delete
118
+ cleaner.test_start :pseudo_delete
119
+
120
+ redis.del(set_key_1)
121
+ redis.set(set_key, set_value)
122
+ db2_redis.set(set_key_1, set_value_1)
123
+
124
+ expect(PseudoCleaner::Logger).to receive(:write).exactly(2).times.and_call_original
125
+
126
+ cleaner.test_end :pseudo_delete
127
+
128
+ expect(redis.get(set_key)).not_to be
129
+ expect(redis.get(set_key_1)).not_to be
130
+ expect(db2_redis.get(set_key_1)).to eq set_value_1
131
+
132
+ expect(PseudoCleaner::Logger).to receive(:write).exactly(4).times.and_call_original
133
+
134
+ cleaner.suite_end :pseudo_delete
135
+ end
136
+
137
+ it "warns of extra values at suite_end" do
138
+ cleaner = PseudoCleaner::RedisCleaner.new(:suite_start, :suite_end, redis, {})
139
+
140
+ redis.set(set_key_1, set_value)
141
+
142
+ cleaner.suite_start :pseudo_delete
143
+ cleaner.test_start :pseudo_delete
144
+
145
+ redis.set(set_key, set_value)
146
+ db2_redis.set(set_key_1, set_value_1)
147
+
148
+ cleaner.test_end :pseudo_delete
149
+
150
+ expect(redis.get(set_key)).not_to be
151
+ expect(redis.get(set_key_1)).to eq set_value
152
+ expect(db2_redis.get(set_key_1)).to eq set_value_1
153
+
154
+ redis.set(set_key, set_value)
155
+
156
+ expect(PseudoCleaner::Logger).to receive(:write).exactly(2).times.and_call_original
157
+
158
+ cleaner.suite_end :pseudo_delete
159
+
160
+ expect(redis.get(set_key)).not_to be
161
+ end
162
+ end
@@ -0,0 +1,87 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
4
+ # this file to always be loaded, without a need to explicitly require it in any
5
+ # files.
6
+ #
7
+ # Given that it is always loaded, you are encouraged to keep this file as
8
+ # light-weight as possible. Requiring heavyweight dependencies from this file
9
+ # will add to the boot time of your test suite on EVERY test run, even for an
10
+ # individual file that may not need all of that loaded. Instead, consider making
11
+ # a separate helper file that requires the additional dependencies and performs
12
+ # the additional setup, and require it from the spec files that actually need
13
+ # it.
14
+ #
15
+ # The `.rspec` file also contains a few flags that are not defaults but that
16
+ # users commonly want.
17
+ #
18
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
+ RSpec.configure do |config|
20
+ # rspec-expectations config goes here. You can use an alternate
21
+ # assertion/expectation library such as wrong or the stdlib/minitest
22
+ # assertions if you prefer.
23
+ config.expect_with :rspec do |expectations|
24
+ # This option will default to `true` in RSpec 4. It makes the `description`
25
+ # and `failure_message` of custom matchers include text for helper methods
26
+ # defined using `chain`, e.g.:
27
+ # be_bigger_than(2).and_smaller_than(4).description
28
+ # # => "be bigger than 2 and smaller than 4"
29
+ # ...rather than:
30
+ # # => "be bigger than 2"
31
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
32
+ end
33
+
34
+ # rspec-mocks config goes here. You can use an alternate test double
35
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
36
+ config.mock_with :rspec do |mocks|
37
+ # Prevents you from mocking or stubbing a method that does not exist on
38
+ # a real object. This is generally recommended, and will default to
39
+ # `true` in RSpec 4.
40
+ mocks.verify_partial_doubles = true
41
+ end
42
+
43
+ # These two settings work together to allow you to limit a spec run
44
+ # to individual examples or groups you care about by tagging them with
45
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
46
+ # get run.
47
+ config.filter_run :focus
48
+ config.run_all_when_everything_filtered = true
49
+
50
+ # Limits the available syntax to the non-monkey patched syntax that is
51
+ # recommended. For more details, see:
52
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
53
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
54
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
55
+ config.disable_monkey_patching!
56
+
57
+ # This setting enables warnings. It's recommended, but in some cases may
58
+ # be too noisy due to issues in dependencies.
59
+ config.warnings = true
60
+
61
+ # Many RSpec users commonly either run the entire suite or an individual
62
+ # file, and it's useful to allow more verbose output when running an
63
+ # individual spec file.
64
+ if config.files_to_run.one?
65
+ # Use the documentation formatter for detailed output,
66
+ # unless a formatter has already been configured
67
+ # (e.g. via a command-line flag).
68
+ config.default_formatter = 'doc'
69
+ end
70
+
71
+ # Print the 10 slowest examples and example groups at the
72
+ # end of the spec run, to help surface which specs are running
73
+ # particularly slow.
74
+ config.profile_examples = 10
75
+
76
+ # Run specs in random order to surface order dependencies. If you find an
77
+ # order dependency and want to debug it, you can fix the order by providing
78
+ # the seed, which is printed after each run.
79
+ # --seed 1234
80
+ config.order = :random
81
+
82
+ # Seed global randomization in this process using the `--seed` CLI option.
83
+ # Setting this allows you to use `--seed` to deterministically reproduce
84
+ # test failures related to randomization by passing the same `--seed` value
85
+ # as the one that triggered the failure.
86
+ Kernel.srand config.seed
87
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pseudo_cleaner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.34
4
+ version: 0.0.35
5
5
  platform: ruby
6
6
  authors:
7
7
  - RealNobody
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-16 00:00:00.000000000 Z
11
+ date: 2015-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: redis
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: redis-namespace
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: bundler
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +108,34 @@ dependencies:
80
108
  - - ! '>='
81
109
  - !ruby/object:Gem::Version
82
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
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
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: cornucopia
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
83
139
  description: A compromise db cleaning strategy between truncate and transactions.
84
140
  email:
85
141
  - RealNobody1@cox.net
@@ -88,6 +144,9 @@ extensions: []
88
144
  extra_rdoc_files: []
89
145
  files:
90
146
  - .gitignore
147
+ - .rspec
148
+ - .ruby-gemset
149
+ - .ruby-version
91
150
  - Gemfile
92
151
  - LICENSE.txt
93
152
  - README.md
@@ -97,11 +156,16 @@ files:
97
156
  - lib/pseudo_cleaner/cucumber.rb
98
157
  - lib/pseudo_cleaner/logger.rb
99
158
  - lib/pseudo_cleaner/master_cleaner.rb
159
+ - lib/pseudo_cleaner/redis_cleaner.rb
100
160
  - lib/pseudo_cleaner/rspec.rb
101
161
  - lib/pseudo_cleaner/spinach.rb
102
162
  - lib/pseudo_cleaner/table_cleaner.rb
103
163
  - lib/pseudo_cleaner/version.rb
104
164
  - pseudo_cleaner.gemspec
165
+ - spec/fixtures/resque.yml
166
+ - spec/rails_helper.rb
167
+ - spec/redis_cleaner_spec.rb
168
+ - spec/spec_helper.rb
105
169
  homepage: https://github.com/RealNobody/pseudo_cleaner
106
170
  licenses:
107
171
  - MIT
@@ -122,9 +186,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
186
  version: '0'
123
187
  requirements: []
124
188
  rubyforge_project:
125
- rubygems_version: 2.4.5
189
+ rubygems_version: 2.1.11
126
190
  signing_key:
127
191
  specification_version: 4
128
192
  summary: A compromise db cleaning strategy between truncate and transactions.
129
- test_files: []
130
- has_rdoc:
193
+ test_files:
194
+ - spec/fixtures/resque.yml
195
+ - spec/rails_helper.rb
196
+ - spec/redis_cleaner_spec.rb
197
+ - spec/spec_helper.rb