From 2aaf83a9da7ef673e86b76284a1e457d2e53dba0 Mon Sep 17 00:00:00 2001 From: Taylor Finnell Date: Sun, 11 Nov 2018 15:51:53 -0500 Subject: [PATCH] =?UTF-8?q?Int=20coerce=20doesn=E2=80=99t=20fail=20if=20al?= =?UTF-8?q?ready=20int?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shard.yml | 2 +- spec/hqtrivia/model/int_coerce_spec.cr | 17 +++++++++++++++++ src/hqtrivia/model/int_coerce.cr | 6 +++++- src/hqtrivia/version.cr | 2 +- 4 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 spec/hqtrivia/model/int_coerce_spec.cr diff --git a/shard.yml b/shard.yml index 22dcf91..cb64ce1 100644 --- a/shard.yml +++ b/shard.yml @@ -1,5 +1,5 @@ name: hqtrivia -version: 0.2.4 +version: 0.2.5 authors: - Taylor Finnell diff --git a/spec/hqtrivia/model/int_coerce_spec.cr b/spec/hqtrivia/model/int_coerce_spec.cr new file mode 100644 index 0000000..e61942e --- /dev/null +++ b/spec/hqtrivia/model/int_coerce_spec.cr @@ -0,0 +1,17 @@ +require "../../spec_helper" + +module HqTrivia::Model + describe IntCoerce do + describe "from_json" do + it "works with strings" do + pull = JSON::PullParser.new("\"1\"") + IntCoerce.from_json(pull).should eq(1) + end + + it "works with ints" do + pull = JSON::PullParser.new("1") + IntCoerce.from_json(pull).should eq(1) + end + end + end +end diff --git a/src/hqtrivia/model/int_coerce.cr b/src/hqtrivia/model/int_coerce.cr index 47dadc6..5cebec4 100644 --- a/src/hqtrivia/model/int_coerce.cr +++ b/src/hqtrivia/model/int_coerce.cr @@ -2,7 +2,11 @@ module HqTrivia module Model class IntCoerce def self.from_json(json : JSON::PullParser) - json.read_string.to_i + if val = json.read?(Int32) + val + else + json.read_string.to_i + end end def self.to_json(value, builder) diff --git a/src/hqtrivia/version.cr b/src/hqtrivia/version.cr index 90a0bd8..84110c0 100644 --- a/src/hqtrivia/version.cr +++ b/src/hqtrivia/version.cr @@ -1,4 +1,4 @@ module HqTrivia # Current HqTrivia version - VERSION = "0.2.4" + VERSION = "0.2.5" end