salestation 0.1.3 → 0.1.4

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
  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