valhammer 1.0.0 → 1.1.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: 99b18cba7d288d8e79e530a793fd4e6ee68e73fcce75b11d7c1f75425a0c112d
4
- data.tar.gz: dc7099bf3d0230ea68958c6f5db7b2e740c8de83f7ff0484d3f93bbde2c6dff5
3
+ metadata.gz: 5a5c5adbed9b66cb80eb994a6d9595a56cbf1de28e0f105b5440687a53805c63
4
+ data.tar.gz: b94ce0e81bfe18c2ba9f85967aa29b0facc3433357694304189d8e1c9ce43d2d
5
5
  SHA512:
6
- metadata.gz: 123317e5a6dcbb7e122ededd970645fb74500c2d2f7bfa8d33b811aa762a7aa647e501e65c85630ef1dbd91ab44cbff498b21651873ff57e94b153e2a60272f2
7
- data.tar.gz: 810a0bc83526e3388c83a4e9f9296124b17e9660c55b377b7311a1dcefd4377e0b5119ebb2100e1a761b0fb727e984124336ecd52f7511387bf12abc4d3856eb
6
+ metadata.gz: 38d4db5e578d88ea9ad8f23a411a0a1edfa32366fdbbcc3ced400c6414750dfcb8d929b6ae29a9a46b898d2596217e1784c446eca8f1bf42c1feb818c58d2518
7
+ data.tar.gz: 83898470fcc987c4f81d71b2d302ff0f327dd19241b04bd3afd3bd45003bedcf3b22b898767a6ce28f73ae643c0fe9ad031529d58f334cf3899004405fedc8e4
data/README.md CHANGED
@@ -264,6 +264,14 @@ end
264
264
  In this case, it is not possible for valhammer to determine the behaviour of the
265
265
  `where` clause, so the validation must be manually created.
266
266
 
267
+ ## Logging
268
+
269
+ To make Valhammer tell you exactly what it's doing, turn on verbose mode:
270
+
271
+ ```ruby
272
+ Valhammer.config.verbose = true
273
+ ```
274
+
267
275
  ## Contributing
268
276
 
269
277
  Refer to [GitHub Flow](https://guides.github.com/introduction/flow/) for
@@ -0,0 +1,14 @@
1
+ require 'singleton'
2
+
3
+ module Valhammer
4
+ class Configuration
5
+ include Singleton
6
+
7
+ def initialize
8
+ @verbose = false
9
+ end
10
+
11
+ attr_accessor :verbose
12
+ alias verbose? verbose
13
+ end
14
+ end
@@ -64,8 +64,6 @@ module Valhammer
64
64
  end
65
65
 
66
66
  def valhammer_validations(column, opts)
67
- logger.debug("Valhammer generating options for #{valhammer_info(column)}")
68
-
69
67
  validations = {}
70
68
  valhammer_presence(validations, column, opts)
71
69
  valhammer_inclusion(validations, column, opts)
@@ -73,8 +71,10 @@ module Valhammer
73
71
  valhammer_numeric(validations, column, opts)
74
72
  valhammer_length(validations, column, opts)
75
73
 
76
- logger.debug("Valhammer options for #{valhammer_log_key(column)} " \
77
- "are: #{validations.inspect}")
74
+ if Valhammer.config.verbose?
75
+ logger.debug("Valhammer options for #{valhammer_log_key(column)} " \
76
+ "are: #{validations.inspect}")
77
+ end
78
78
  validations
79
79
  end
80
80
 
@@ -1,3 +1,3 @@
1
1
  module Valhammer
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
data/lib/valhammer.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require 'valhammer/version'
2
+ require 'valhammer/configuration'
3
+ require 'valhammer/validations'
4
+ require 'valhammer/railtie' if defined?(Rails::Railtie)
2
5
 
3
6
  module Valhammer
7
+ def self.config
8
+ Configuration.instance
9
+ end
4
10
  end
5
-
6
- require 'valhammer/validations'
7
- require 'valhammer/railtie' if defined?(Rails::Railtie)
@@ -291,6 +291,58 @@ RSpec.describe Valhammer::Validations do
291
291
  end
292
292
  end
293
293
 
294
+ describe 'logging' do
295
+ before do
296
+ hammerable =
297
+ Class.new(ActiveRecord::Base) do
298
+ self.table_name = :organisations
299
+ end
300
+
301
+ def self.logger
302
+ # Hook for specs to spy on log output
303
+ end
304
+
305
+ stub_const 'Hammerable', hammerable
306
+ end
307
+
308
+ context 'when verbose' do
309
+ around do |example|
310
+ Valhammer.config.verbose = true
311
+ example.run
312
+ ensure
313
+ Valhammer.config.verbose = false
314
+ end
315
+
316
+ it 'logs information about validations' do
317
+ logger = spy(:debug)
318
+ allow(Hammerable).to receive(:logger).and_return(logger)
319
+
320
+ Hammerable.valhammer
321
+
322
+ expect(logger).to have_received(:debug).with(
323
+ 'Valhammer options for `organisations`.`name` are: {:presence=>true}'
324
+ )
325
+ expect(logger).to have_received(:debug).with(
326
+ 'Valhammer options for `organisations`.`country` are: {:presence=>true}'
327
+ )
328
+ expect(logger).to have_received(:debug).with(
329
+ 'Valhammer options for `organisations`.`city` are: {:presence=>true}'
330
+ )
331
+ end
332
+ end
333
+
334
+ context 'when quiet' do
335
+ it 'does not log' do
336
+ logger = spy(:debug)
337
+ allow(Hammerable).to receive(:logger).and_return(logger)
338
+
339
+ Hammerable.valhammer
340
+
341
+ expect(logger).not_to have_received(:debug)
342
+ end
343
+ end
344
+ end
345
+
294
346
  context 'sanity check' do
295
347
  let(:organisation) do
296
348
  Organisation.create!(name: 'Enhanced Collaborative Methodologies Pty Ltd',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valhammer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaun Mangelsdorf
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-12 00:00:00.000000000 Z
11
+ date: 2023-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -192,7 +192,7 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
- description:
195
+ description:
196
196
  email:
197
197
  - s.mangelsdorf@gmail.com
198
198
  executables: []
@@ -209,6 +209,7 @@ files:
209
209
  - README.md
210
210
  - Rakefile
211
211
  - lib/valhammer.rb
212
+ - lib/valhammer/configuration.rb
212
213
  - lib/valhammer/railtie.rb
213
214
  - lib/valhammer/validations.rb
214
215
  - lib/valhammer/version.rb
@@ -229,7 +230,7 @@ homepage: https://github.com/ausaccessfed/valhammer
229
230
  licenses:
230
231
  - Apache-2.0
231
232
  metadata: {}
232
- post_install_message:
233
+ post_install_message:
233
234
  rdoc_options: []
234
235
  require_paths:
235
236
  - lib
@@ -244,8 +245,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
244
245
  - !ruby/object:Gem::Version
245
246
  version: '0'
246
247
  requirements: []
247
- rubygems_version: 3.0.3
248
- signing_key:
248
+ rubygems_version: 3.3.7
249
+ signing_key:
249
250
  specification_version: 4
250
251
  summary: Automatically validate ActiveRecord models based on the database schema.
251
252
  test_files: