salestation 0.1.3 → 0.1.4

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
  SHA1:
3
- metadata.gz: 595820750b3fb4a2ba27235b4252a68a5e0751cf
4
- data.tar.gz: 32cc67ac59be3e7b62c8939af48c45ecf47ea03c
3
+ metadata.gz: 254f6a90c156f86f9c0d1baf08911b2708d1153e
4
+ data.tar.gz: 191cf332f2c64ac8ce105e34c6a0692ffa882c3c
5
5
  SHA512:
6
- metadata.gz: 91bc6a961f75ea4511dad68ab38ffcfe5d713644caac4ffdf47efca63a56b1ae56cbb5b0bbefa21e925523a6742ca61575dce6beb56438c628c34d72ce7f2761
7
- data.tar.gz: 295737982bba16f4d81a36f717a054e8dd4c04bc524a87abbd2cf73acb67f0e344f4a2015028a2a1fe7d5eb16288233cd1861b3b7eecd804eea39bd938769f1e
6
+ metadata.gz: '0387ad871ccd17b348c2295cf180f4c2c14c1d67c0b412a424385e595319b1af79f9b457823374aef8aa2537d3561852b8a9909274b008e5c40bbd6d5b300024'
7
+ data.tar.gz: 756be1203149b5404878e70af30bf6e092a19aa91975ab7157b2f5bad8b5780508bba48c7fa65df46200b2585d13ef6882c3a7652f1d260d9e35203064ef9c07
@@ -47,17 +47,42 @@ module Salestation
47
47
 
48
48
  class UnprocessableEntityFromSchemaErrors
49
49
  def self.create(errors:, hints:)
50
- message = errors
51
- .map { |field, error_messages| "'#{field}' #{error_messages.join(' and ')}" }
52
- .join(". ")
53
-
54
- debug_message = hints
55
- .select {|field, hint_messages| hint_messages.any? }
56
- .map { |field, hint_messages| "'#{field}' #{hint_messages.join(' and ')}" }
57
- .join(". ")
50
+ message = parse_errors(errors)
51
+ debug_message = parse_hints(hints)
58
52
 
59
53
  UnprocessableEntity.new(message: message, debug_message: debug_message)
60
54
  end
55
+
56
+ def self.parse_errors(errors)
57
+ parsed_errors = errors.map do |field, error_messages|
58
+ if error_messages.is_a?(Hash)
59
+ errors_with_nested_keys = error_messages.keys.map do |key|
60
+ { "#{field}.#{key}" => error_messages[key] }
61
+ end
62
+
63
+ parse_errors(errors_with_nested_keys.reduce(Hash.new, :merge))
64
+ else
65
+ "'#{field}' #{error_messages.join(' and ')}"
66
+ end
67
+ end
68
+ parsed_errors.join(". ")
69
+ end
70
+
71
+ def self.parse_hints(hints)
72
+ parsed_hints = hints.select { |field, hint_messages| hint_messages.any? }
73
+ .map do |field, hint_messages|
74
+ if hint_messages.is_a?(Hash)
75
+ hints_with_nested_keys = hint_messages.keys.map do |key|
76
+ { "#{field}.#{key}" => hint_messages[key] }
77
+ end
78
+
79
+ parse_hints(hints_with_nested_keys.reduce(Hash.new, :merge))
80
+ else
81
+ "'#{field}' #{hint_messages.join(' and ')}"
82
+ end
83
+ end
84
+ parsed_hints.join(". ")
85
+ end
61
86
  end
62
87
 
63
88
  OK = Success.with_code(200)
data/salestation.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "salestation"
7
- spec.version = "0.1.3"
7
+ spec.version = "0.1.4"
8
8
  spec.authors = ["SaleMove TechMovers"]
9
9
  spec.email = ["techmovers@salemove.com"]
10
10
 
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "bundler", "~> 1.13"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
24
  spec.add_development_dependency "rspec", "~> 3.0"
25
+ spec.add_development_dependency "pry", "~> 0.10.4"
25
26
 
26
27
  spec.add_dependency 'deterministic'
27
28
  spec.add_dependency 'dry-struct'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: salestation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - SaleMove TechMovers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-27 00:00:00.000000000 Z
11
+ date: 2017-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.10.4
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.10.4
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: deterministic
57
71
  requirement: !ruby/object:Gem::Requirement