8000 Validator unit specs by ifellinaholeonce · Pull Request #5 · ifellinaholeonce/rails_param · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Validator unit specs #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Apr 17, 2021
Merged
6 changes: 5 additions & 1 deletion lib/rails_param/param.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@ def param!(name, type, options = {}, &block)

# validate presence
if params[name].nil? && options[:required]
raise InvalidParameterError, "Parameter #{name} is required"
raise InvalidParameterError.new(
"Parameter #{name} is required",
param: name,
options: options
)
end

# apply transformation
Expand Down
39 changes: 14 additions & 25 deletions spec/rails_param/validator/blank_spec.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
require 'spec_helper'

describe RailsParam::Param::Validator::Required do
let(:name) { "foo" }
let(:options) { { blank: false } }
let(:type) { String }
let(:name) { "foo" }
let(:options) { { blank: false } }
let(:type) { String }
let(:error_message) { "Parameter foo cannot be blank" }
let(:parameter) do
RailsParam::Param::Parameter.new(
name: name,
Expand All @@ -15,58 +16,46 @@

subject { described_class.new(parameter) }

shared_examples "has a present value" do
it "succeeds" do
expect { subject.validate! }.to_not raise_error
end
end

shared_examples "does not have present value" do
it "raises" do
expect { subject.validate! }.to raise_error(RailsParam::Param::InvalidParameterError)
end
end

describe "#validate!" do
context "String" do
context "is not empty" do
let(:value) { "bar" }

it_behaves_like "has a present value"
it_behaves_like "does not raise error"
end

context "is empty" do
let(:value) { "" }

it_behaves_like "does not have present value"
it_behaves_like "raises InvalidParameterError"
end
end

context "Hash" do
context "is not empty" do
let(:value) { { foo: :bar } }

it_behaves_like "has a present value"
it_behaves_like "does not raise error"
end

context "is empty" do
let(:value) { {} }

it_behaves_like "does not have present value"
it_behaves_like "raises InvalidParameterError"
end
end

context "Array" do
context "is not empty" do
let(:value) { [50] }

it_behaves_like "has a present value"
it_behaves_like "does not raise error"
end

context "is empty" do
let(:value) { [] }

it_behaves_like "does not have present value"
it_behaves_like "raises InvalidParameterError"
end
end

Expand All @@ -76,27 +65,27 @@
ActionController::Parameters.new({ "price" => "50" })
end

it_behaves_like "has a present value"
it_behaves_like "does not raise error"
end

context "is empty" do
let(:value) { ActionController::Parameters.new() }

it_behaves_like "does not have present value"
it_behaves_like "raises InvalidParameterError"
end
end

context "Integer" do
context "is not empty" do
let(:value) { 50 }

it_behaves_like "has a present value"
it_behaves_like "does not raise error"
end

context "is empty" do
let(:value) { nil }

it_behaves_like "does not have present value"
it_behaves_like "raises InvalidParameterError"
end
end
end
Expand Down
11 changes: 4 additions & 7 deletions spec/rails_param/validator/custom_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,14 @@
context "value given is valid" do
let(:value) { 50 }

it "does not raise error" do
expect { subject.validate! }.to_not raise_error
end
it_behaves_like "does not raise error"
8000 end

context "value given is invalid" do
let(:value) { 51 }
let(:value) { 51 }
let(:error_message) { "Number is not even" }

it "raises" do
expect { subject.validate! }.to raise_error(RailsParam::Param::InvalidParameterError, 'Number is not even')
end
it_behaves_like "raises InvalidParameterError"
end
end
end
33 changes: 33 additions & 0 deletions spec/rails_param/validator/format_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require 'spec_helper'

describe RailsParam::Param::Validator::Format do
let(:format_validation) { /[0-9]+\$/ }
let(:name) { "foo" }
let(:options) { { format: format_validation } }
let(:type) { String }
let(:parameter) do
RailsParam::Param::Parameter.new(
name: name,
value: value,
options: options,
type: type
)
end

subject { described_class.new(parameter) }

describe "#validate!" do
context "value given is valid" do
let(:value) { "50$" }

it_behaves_like "does not raise error"
end

context "value given is invalid" do
let(:value) { "50" }
let(:error_message) { "Parameter foo must match format #{format_validation}" }

it_behaves_like "raises InvalidParameterError"
end
end
end
33 changes: 33 additions & 0 deletions spec/rails_param/validator/in_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require 'spec_helper'

describe RailsParam::Param::Validator::In do
let(:value) { 50 }
let(:name) { "foo" }
let(:options) { { in: in_validation } }
let(:type) { Integer }
let(:parameter) do
RailsParam::Param::Parameter.new(
name: name,
value: value,
options: options,
type: type
)
end

subject { described_class.new(parameter) }

describe "#validate!" do
context "value given is valid" do
let(:in_validation) { 1..100 }

it_behaves_like "does not raise error"
end

context "value given is invalid" do
let(:in_validation) { 51..100 }
let(:error_message) { "Parameter foo must be within 51..100" }

it_behaves_like "raises InvalidParameterError"
end
end
end
32 changes: 32 additions & 0 deletions spec/rails_param/validator/is_spec.rb
9927
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
require 'spec_helper'

describe RailsParam::Param::Validator::Is do
let(:name) { "foo" }
let(:options) { { is: "50" } }
let(:type) { String }
let(:parameter) do
RailsParam::Param::Parameter.new(
name: name,
value: value,
options: options,
type: type
)
end

subject { described_class.new(parameter) }

describe "#validate!" do
context "value given is valid" do
let(:value) { "50" }

it_behaves_like "does not raise error"
end

context "value given is invalid" do
let(:value) { "51" }
let(:error_message) { "Parameter foo must be 50" }

it_behaves_like "raises InvalidParameterError"
end
end
end
33 changes: 33 additions & 0 deletions spec/rails_param/validator/max_length_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require 'spec_helper'

describe RailsParam::Param::Validator::MaxLength do
let(:name) { "foo" }
let(:value) { "bar" }
let(:options) { { max_length: max_length } }
let(:type) { String }
let(:parameter) do
RailsParam::Param::Parameter.new(
name: name,
value: value,
options: options,
type: type
)
end

subject { described_class.new(parameter) }

describe "#validate!" do
context "value given is valid" do
let(:max_length) { 3 }

it_behaves_like "does not raise error"
end

context "value given is invalid" do
let(:max_length) { 2 }
let(:error_message) { "Parameter foo cannot have length greater than #{max_length}" }

it_behaves_like "raises InvalidParameterError"
end
end
end
33 changes: 33 additions & 0 deletions spec/rails_param/validator/max_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require 'spec_helper'

describe RailsParam::Param::Validator::Max do
let(:name) { "foo" }
let(:value) { 50 }
let(:options) { { max: max } }
let(:type) { Integer }
let(:parameter) do
RailsParam::Param::Parameter.new(
name: name,
value: value,
options: options,
type: type
)
end

subject { described_class.new(parameter) }

describe "#validate!" do
context "value given is valid" do
let(:max) { 50 }

it_behaves_like "does not raise error"
end

context "value given is invalid" do
let(:max) { 49 }
let(:error_message) { "Parameter foo cannot be greater than #{max}" }

it_behaves_like "raises InvalidParameterError"
end
end
end
33 changes: 33 additions & 0 deletions spec/rails_param/validator/min_length_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require 'spec_helper'

describe RailsParam::Param::Validator::MinLength do
let(:name) { "foo" }
let(:value) { "bar" }
let(:options) { { min_length: min_length } }
let(:type) { String }
let(:parameter) do
RailsParam::Param::Parameter.new(
name: name,
value: value,
options: options,
type: type
)
end

subject { described_class.new(parameter) }

describe "#validate!" do
context "value given is valid" do
let(:min_length) { 3 }

it_behaves_like "does not raise error"
end

context "value given is invalid" do
let(:min_length) { 44 }
let(:error_message) { "Parameter foo cannot have length less than #{min_length}" }

it_behaves_like "raises InvalidParameterError"
end
end
end
33 changes: 33 additions & 0 deletions spec/rails_param/validator/min_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require 'spec_helper'

describe RailsParam::Param::Validator::Min do
let(:name) { "foo" }
let(:value) { 50 }
let(:options) { { min: min } }
let(:type) { Integer }
let(:parameter) do
RailsParam::Param::Parameter.new(
name: name,
value: value,
options: options,
type: type
)
end

subject { described_class.new(parameter) }

describe "#validate!" do
context "value given is valid" do
let(:min) { 50 }

it_behaves_like "does not raise error"
end

context "value given is invalid" do
let(:min) { 51 }
let(:error_message) { "Parameter foo cannot be less than #{min}" }

it_behaves_like "raises InvalidParameterError"
end
end
end
Loading
0