twiglet 3.11.0 → 3.13.0

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
  SHA256:
3
- metadata.gz: 99e8d740d7d9a800eef5d22fe68252f41bd6d75042d2a8f69596b9361a6daf4d
4
- data.tar.gz: fe9ac8d41fed72423a4ee2e9b209f0c10f742546fbd36704a1c391dba6004e64
3
+ metadata.gz: 286d683bc94e381966b7b0ee5c5ed2aec7e690e34e13136dadcd9f9903bc491c
4
+ data.tar.gz: be8be7205cb345e06da67d6bb4cd1bd6f23fb4f2c3d354ccbda6f6f4086710e4
5
5
  SHA512:
6
- metadata.gz: d14b3282ec480b9d628902261ac467f89bf5f635723d420a1b05607b7c6c4f549f6aaa70d0eba8513c23100e1f8142ed2099b07295c0ce288b85108478861daa
7
- data.tar.gz: 9d8119f8ce88a5fed9a0cc1e159180d623a194ee2eacfa0ac898a3d289b6318343c3583764223d132bc0cc1550b7c37bac2bcd2f6b39e530747f9f1d1a201f6f
6
+ metadata.gz: 4cdfb033d22ad7e0c8f588673c6ccc3dc47e75317c1f11b4e24be0d246f10323d064d18f7a5a7746e7e723365b894dfbdbee36a9d1410fef7321a794e7c3052c
7
+ data.tar.gz: 33872aecd0f6eafb9a117fa4a001ccaa1629ac18fa7c88ea109e4c5001df4f3ce324ece7e795c6e86428612edd6f57fee541b90801bd0ba185a9bd7cfb2c7785
@@ -22,7 +22,7 @@ module Twiglet
22
22
 
23
23
  now = args.fetch(:now, -> { Time.now.utc })
24
24
  output = args.fetch(:output, $stdout)
25
- level = args.fetch(:level, DEBUG)
25
+ level = args.fetch(:level, INFO)
26
26
  validation_schema = args.fetch(:validation_schema, DEFAULT_VALIDATION_SCHEMA)
27
27
 
28
28
  raise 'Service name is mandatory' \
@@ -81,6 +81,13 @@ module Twiglet
81
81
  )
82
82
  end
83
83
 
84
+ def validation_schema(validation_schema)
85
+ self.class.new(
86
+ @service_name,
87
+ **@args.merge(validation_schema: validation_schema)
88
+ )
89
+ end
90
+
84
91
  def context_provider(&blk)
85
92
  new_context_providers = Array(@args[:context_providers])
86
93
  new_context_providers << blk
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Twiglet
4
- VERSION = '3.11.0'
4
+ VERSION = '3.13.0'
5
5
  end
data/test/logger_test.rb CHANGED
@@ -23,7 +23,8 @@ describe Twiglet::Logger do
23
23
  @logger = Twiglet::Logger.new(
24
24
  'petshop',
25
25
  now: @now,
26
- output: @buffer
26
+ output: @buffer,
27
+ level: Logger::DEBUG
27
28
  )
28
29
  end
29
30
 
@@ -652,7 +653,8 @@ describe Twiglet::Logger do
652
653
  'petshop',
653
654
  now: @now,
654
655
  output: @buffer,
655
- validation_schema: validation_schema
656
+ validation_schema: validation_schema,
657
+ level: Logger::DEBUG
656
658
  )
657
659
  end
658
660
 
@@ -679,11 +681,71 @@ describe Twiglet::Logger do
679
681
  end
680
682
  end
681
683
 
684
+ describe '#validation_schema' do
685
+ it 'allows for reconfiguring the validation_schema on new logger instances' do
686
+ validation_schema = <<-JSON
687
+ {
688
+ "type": "object",
689
+ "required": ["pet"],
690
+ "properties": {
691
+ "pet": {
692
+ "type": "object",
693
+ "required": ["name", "best_boy_or_girl?"],
694
+ "properties": {
695
+ "name": {
696
+ "type": "string",
697
+ "minLength": 1
698
+ },
699
+ "best_boy_or_girl?": {
700
+ "type": "boolean"
701
+ }
702
+ }
703
+ }
704
+ }
705
+ }
706
+ JSON
707
+
708
+ logger = Twiglet::Logger.new(
709
+ 'petshop',
710
+ now: @now,
711
+ output: @buffer
712
+ )
713
+
714
+ message = { message: 'hi' }
715
+
716
+ pet_message = {
717
+ pet: { name: 'Davis', best_boy_or_girl?: true, species: 'dog' }
718
+ }
719
+
720
+ logger.info(message)
721
+ log = read_json(@buffer)
722
+ assert_equal 'hi', log[:message]
723
+
724
+ error = assert_raises JSON::Schema::ValidationError do
725
+ logger.info(pet_message)
726
+ end
727
+ assert_equal "The property '#/' did not contain a required property of 'message'", error.message
728
+
729
+ logger = logger.validation_schema(validation_schema)
730
+
731
+ error = assert_raises JSON::Schema::ValidationError do
732
+ logger.info(message)
733
+ end
734
+ assert_equal "The property '#/' did not contain a required property of 'pet'", error.message
735
+
736
+ logger.info(pet_message)
737
+ log = read_json(@buffer)
738
+ assert_equal 'Davis', log[:pet][:name]
739
+ end
740
+ end
741
+
682
742
  private
683
743
 
684
744
  def read_json(buffer)
685
745
  buffer.rewind
686
- JSON.parse(buffer.read, symbolize_names: true)
746
+ string = buffer.read
747
+ buffer.rewind
748
+ JSON.parse(string, symbolize_names: true)
687
749
  end
688
750
  end
689
751
  # rubocop:enable Metrics/BlockLength
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twiglet
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.0
4
+ version: 3.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simply Business
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-08 00:00:00.000000000 Z
11
+ date: 2024-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-schema