twiglet 3.12.0 → 3.13.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: 7f7f408c7f0546be8ef926a307e70a58af7a7ff3427b1744bdbb4cfbc4653189
4
- data.tar.gz: aaf5bce57110c3accb2353250c528a525b0948fbfda377f3b6fc6308e50030ba
3
+ metadata.gz: 286d683bc94e381966b7b0ee5c5ed2aec7e690e34e13136dadcd9f9903bc491c
4
+ data.tar.gz: be8be7205cb345e06da67d6bb4cd1bd6f23fb4f2c3d354ccbda6f6f4086710e4
5
5
  SHA512:
6
- metadata.gz: 830da1bdf6311f12b6a92cab29c8e25453d8ee0bd0007d3b41e211a628983ea20c3956dc6cab9b6d991901ebb7cfb718f0296b11b82e89c20deee187a4f6ae87
7
- data.tar.gz: 140e91a61d0883769aea1e0828022ae0662750a571fc35531f3604d1708a24efbfc2b229624faef3855234d59048134c8f29700505d8ca674f7a9a830e5d1465
6
+ metadata.gz: 4cdfb033d22ad7e0c8f588673c6ccc3dc47e75317c1f11b4e24be0d246f10323d064d18f7a5a7746e7e723365b894dfbdbee36a9d1410fef7321a794e7c3052c
7
+ data.tar.gz: 33872aecd0f6eafb9a117fa4a001ccaa1629ac18fa7c88ea109e4c5001df4f3ce324ece7e795c6e86428612edd6f57fee541b90801bd0ba185a9bd7cfb2c7785
@@ -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.12.0'
4
+ VERSION = '3.13.0'
5
5
  end
data/test/logger_test.rb CHANGED
@@ -681,11 +681,71 @@ describe Twiglet::Logger do
681
681
  end
682
682
  end
683
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
+
684
742
  private
685
743
 
686
744
  def read_json(buffer)
687
745
  buffer.rewind
688
- JSON.parse(buffer.read, symbolize_names: true)
746
+ string = buffer.read
747
+ buffer.rewind
748
+ JSON.parse(string, symbolize_names: true)
689
749
  end
690
750
  end
691
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.12.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-09 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