weak_parameters 0.4.2 → 0.4.3

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: a52940d7977000d245a95b87b5f22af91aa4b5c3
4
- data.tar.gz: 33eced881c79f06410b1a1d62f2afcafc00a003d
3
+ metadata.gz: '09e8c53c2c8454671bcdc7b74e641d830a4198bc'
4
+ data.tar.gz: a70b4dc7bbdbea50696e8eda91a0101c230b9b49
5
5
  SHA512:
6
- metadata.gz: 66a4a668aad0a88ccfa96cb8a3ed6fa6dfaab0c5fbcf6a3b449d0ad1581385a7621e5e8f76639bfd29a6ae652308b175d4bf9321fd42915862e416a9ba9bd92d
7
- data.tar.gz: 998d553643a47651bac8df5a7fb0ca69e6c18e5ffc4aad8cdc5c17f62b0861565eb1b2f1b8f634ce003da1a1562e6deb637b1625b83c3493cbf7f142fe716aff
6
+ metadata.gz: 89b575f9765feb386807dd60ffdcdaa34d8741a09ab5bb1137f3ccbe20358456dad70f2a7eb2178e64966a05cd7eee4cb453701a01af82c2a1f4dec2428e0de7
7
+ data.tar.gz: 6f3bdc9e43d62048c604155551187e9547531d9e4a5c9529db29993b24085611be8185735fbaaed5adf95a20c318aa6408be68ee88cdfbd415d333ab0712efc7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.4.3
2
+
3
+ - Support date and time validator (Thx @shimomuh)
4
+
1
5
  ## 0.4.2
2
6
 
3
7
  - Fix options on list validator (Thx @laboone)
data/README.md CHANGED
@@ -26,6 +26,8 @@ class RecipesController < ApplicationController
26
26
  string :quantity do |value|
27
27
  value =~ /\A\d+(?:\.\d+)g\z/
28
28
  end
29
+ date :date, only: ["%Y/%m/%d", "%Y.%m.%d"]
30
+ time :time, only: "%Y/%m/%d %H:%M:%S"
29
31
  end
30
32
 
31
33
  def create
@@ -59,6 +61,8 @@ irb(main):005:0> app.post "/recipes", name: "alice", type: "bob"
59
61
  * file
60
62
  * object
61
63
  * list
64
+ * date (= default %Y-%m-%d)
65
+ * time (= default %Y-%m-%d %H:%M:%S)
62
66
 
63
67
  ### Available options
64
68
  * required
@@ -0,0 +1,40 @@
1
+ module WeakParameters
2
+ class DateValidator < WeakParameters::BaseValidator
3
+ private
4
+
5
+ def parser_class
6
+ ::Date
7
+ end
8
+
9
+ def valid_type?
10
+ if options[:only]
11
+ Array(options[:only]).any? do |format|
12
+ begin
13
+ parser_class.strptime(value, format)
14
+ return false unless strictly?(format)
15
+ true
16
+ rescue ::ArgumentError
17
+ false
18
+ end
19
+ end
20
+ else
21
+ begin
22
+ parser_class.parse(value)
23
+ return false unless strictly?
24
+ true
25
+ rescue ::ArgumentError
26
+ false
27
+ end
28
+ end
29
+ end
30
+
31
+ def strictly?(format = nil)
32
+ result = format ? ::Date._strptime(value, format) : ::Date._strptime(value)
33
+ result && !result.key?(:leftover)
34
+ end
35
+
36
+ def error_message
37
+ "params[#{key.inspect}] must be a valid Date"
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,18 @@
1
+ module WeakParameters
2
+ class TimeValidator < WeakParameters::DateValidator
3
+ private
4
+
5
+ def parser_class
6
+ ::Time
7
+ end
8
+
9
+ # Time is always true! (no custom validation)
10
+ def strictly?(format = nil)
11
+ true
12
+ end
13
+
14
+ def error_message
15
+ "params[#{key.inspect}] must be a valid Time"
16
+ end
17
+ end
18
+ end
@@ -65,6 +65,14 @@ module WeakParameters
65
65
  validators << WeakParameters::FloatValidator.new(controller, key, options, &block)
66
66
  end
67
67
 
68
+ def date(key, options = {}, &block)
69
+ validators << WeakParameters::DateValidator.new(controller, key, options, &block)
70
+ end
71
+
72
+ def time(key, options = {}, &block)
73
+ validators << WeakParameters::TimeValidator.new(controller, key, options, &block)
74
+ end
75
+
68
76
  def file(key, options = {}, &block)
69
77
  validators << WeakParameters::FileValidator.new(controller, key, options, &block)
70
78
  end
@@ -1,3 +1,3 @@
1
1
  module WeakParameters
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
@@ -6,6 +6,8 @@ require "weak_parameters/any_validator"
6
6
  require "weak_parameters/array_validator"
7
7
  require "weak_parameters/boolean_validator"
8
8
  require "weak_parameters/file_validator"
9
+ require "weak_parameters/date_validator"
10
+ require "weak_parameters/time_validator"
9
11
  require "weak_parameters/float_validator"
10
12
  require "weak_parameters/hash_validator"
11
13
  require "weak_parameters/integer_validator"
@@ -11,6 +11,10 @@ module WithRecipe
11
11
  hash :config
12
12
  array :tags
13
13
  float :rate
14
+ date :date
15
+ date :custom_date, only: %w[%Y/%m/%d %Y.%m.%d]
16
+ time :time
17
+ time :custom_time, only: '%Y/%m/%d %H:%M:%S'
14
18
  file :attachment
15
19
  integer :custom, only: 0..1, handler: :render_error
16
20
  string :zip_code do |value|
@@ -19,6 +19,10 @@ module WithStrong
19
19
  array :strong_tags, strong: true
20
20
  float :rate
21
21
  float :strong_rate, strong: true
22
+ date :date
23
+ date :strong_date, strong: true
24
+ time :time
25
+ time :strong_time, strong: true
22
26
  file :attachment
23
27
  file :strong_attachment, strong: true
24
28
  integer :custom, only: 0..1, handler: :render_error
@@ -106,6 +106,34 @@ describe "Recipes with rails-api", type: :request do
106
106
  include_examples "400"
107
107
  end
108
108
 
109
+ context "with wrong date param" do
110
+ before do
111
+ params[:date] = '2017-01-32'
112
+ end
113
+ include_examples "400"
114
+ end
115
+
116
+ context "with wrong custom_date param" do
117
+ before do
118
+ params[:custom_date] = Date.current.strftime('%Y-%m-%d')
119
+ end
120
+ include_examples "400"
121
+ end
122
+
123
+ context "with wrong time param" do
124
+ before do
125
+ params[:time] = '2017-01-31 24:00:01'
126
+ end
127
+ include_examples "400"
128
+ end
129
+
130
+ context "with wrong custom_time param" do
131
+ before do
132
+ params[:custom_time] = Time.current.strftime('%Y-%m-%d %H:%M:%S')
133
+ end
134
+ include_examples "400"
135
+ end
136
+
109
137
  context "with wrong file param" do
110
138
  before do
111
139
  params[:attachment] = "x"
@@ -17,6 +17,10 @@ describe "Strong with rails-api", type: :request do
17
17
  strong_config: { a: 1, b: { c: 2 } },
18
18
  tags: [1],
19
19
  strong_tags: [1],
20
+ date: Date.current.strftime('%Y-%m-%d'),
21
+ strong_date: Date.current.strftime('%Y-%m-%d'),
22
+ time: Time.current.strftime('%Y-%m-%d %H:%M:%S'),
23
+ strong_time: Time.current.strftime('%Y-%m-%d %H:%M:%S'),
20
24
  attachment: Rack::Test::UploadedFile.new(__FILE__),
21
25
  strong_attachment: Rack::Test::UploadedFile.new(__FILE__),
22
26
  zip_code: "123-4567",
@@ -73,6 +77,12 @@ describe "Strong with rails-api", type: :request do
73
77
  expect(controller.permitted_params).not_to have_key "strong_rate"
74
78
  expect(controller.permitted_params).not_to have_key "rate"
75
79
 
80
+ expect(controller.permitted_params).to have_key "strong_date"
81
+ expect(controller.permitted_params).not_to have_key "date"
82
+
83
+ expect(controller.permitted_params).to have_key "strong_time"
84
+ expect(controller.permitted_params).not_to have_key "time"
85
+
76
86
  expect(controller.permitted_params).to have_key "strong_attachment"
77
87
  expect(controller.permitted_params).not_to have_key "attachment"
78
88
 
@@ -106,6 +106,34 @@ describe "Recipes", type: :request do
106
106
  include_examples "400"
107
107
  end
108
108
 
109
+ context "with wrong date param" do
110
+ before do
111
+ params[:date] = '2017-01-32'
112
+ end
113
+ include_examples "400"
114
+ end
115
+
116
+ context "with wrong custom_date param" do
117
+ before do
118
+ params[:custom_date] = Date.current.strftime('%Y-%m-%d')
119
+ end
120
+ include_examples "400"
121
+ end
122
+
123
+ context "with wrong time param" do
124
+ before do
125
+ params[:time] = '2017-01-31 24:00:01'
126
+ end
127
+ include_examples "400"
128
+ end
129
+
130
+ context "with wrong custom_time param" do
131
+ before do
132
+ params[:custom_time] = Time.current.strftime('%Y-%m-%d %H:%M:%S')
133
+ end
134
+ include_examples "400"
135
+ end
136
+
109
137
  context "with wrong file param" do
110
138
  before do
111
139
  params[:attachment] = "x"
@@ -17,6 +17,10 @@ describe "Strong", type: :request do
17
17
  strong_config: { a: 1, b: { c: 2 } },
18
18
  tags: [1],
19
19
  strong_tags: [1],
20
+ date: Date.current.strftime('%Y-%m-%d'),
21
+ strong_date: Date.current.strftime('%Y-%m-%d'),
22
+ time: Time.current.strftime('%Y-%m-%d %H:%M:%S'),
23
+ strong_time: Time.current.strftime('%Y-%m-%d %H:%M:%S'),
20
24
  attachment: Rack::Test::UploadedFile.new(__FILE__),
21
25
  strong_attachment: Rack::Test::UploadedFile.new(__FILE__),
22
26
  zip_code: "123-4567",
@@ -73,6 +77,12 @@ describe "Strong", type: :request do
73
77
  expect(controller.permitted_params).not_to have_key "strong_rate"
74
78
  expect(controller.permitted_params).not_to have_key "rate"
75
79
 
80
+ expect(controller.permitted_params).to have_key "strong_date"
81
+ expect(controller.permitted_params).not_to have_key "date"
82
+
83
+ expect(controller.permitted_params).to have_key "strong_time"
84
+ expect(controller.permitted_params).not_to have_key "time"
85
+
76
86
  expect(controller.permitted_params).to have_key "strong_attachment"
77
87
  expect(controller.permitted_params).not_to have_key "attachment"
78
88
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weak_parameters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-14 00:00:00.000000000 Z
11
+ date: 2017-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -142,6 +142,7 @@ files:
142
142
  - lib/weak_parameters/base_validator.rb
143
143
  - lib/weak_parameters/boolean_validator.rb
144
144
  - lib/weak_parameters/controller.rb
145
+ - lib/weak_parameters/date_validator.rb
145
146
  - lib/weak_parameters/file_validator.rb
146
147
  - lib/weak_parameters/float_validator.rb
147
148
  - lib/weak_parameters/hash_validator.rb
@@ -149,6 +150,7 @@ files:
149
150
  - lib/weak_parameters/list_validator.rb
150
151
  - lib/weak_parameters/object_validator.rb
151
152
  - lib/weak_parameters/string_validator.rb
153
+ - lib/weak_parameters/time_validator.rb
152
154
  - lib/weak_parameters/validation_error.rb
153
155
  - lib/weak_parameters/validator.rb
154
156
  - lib/weak_parameters/version.rb
@@ -219,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
221
  version: '0'
220
222
  requirements: []
221
223
  rubyforge_project:
222
- rubygems_version: 2.5.2
224
+ rubygems_version: 2.6.11
223
225
  signing_key:
224
226
  specification_version: 4
225
227
  summary: Add a validation filter to your controller.