Sha256: 60d78a525af5e2850707c3cc999eb8685e09674a0ef79780866c813fe5491043

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

require 'helper'
require 'faraday_middleware/response/parse_dates'
require 'json'

describe FaradayMiddleware::ParseDates, :type => :response do
  let(:parsed){
    if RUBY_VERSION > "1.9"
      "2012-02-01 13:14:15 UTC"
    else
      "Wed Feb 01 13:14:15 UTC 2012"
    end
  }

  it "parses dates" do
    expect(process({"x" => "2012-02-01T13:14:15Z"}).body["x"].to_s).to eq(parsed)
  end

  it "parses dates with milliseconds" do
    date_str = "2012-02-01T13:14:15.123Z"
    expect(process({"x" => date_str}).body["x"]).to eq(Time.parse(date_str))
  end

  it "parses nested dates in hash" do
    expect(process({"x" => {"y" => "2012-02-01T13:14:15Z"}}).body["x"]["y"].to_s).to eq(parsed)
  end

  it "parses nested dates in arrays" do
    expect(process({"x" => [{"y" =>"2012-02-01T13:14:15Z"}]}).body["x"][0]["y"].to_s).to eq(parsed)
  end

  it "returns nil when body is empty" do
    expect(process(nil).body).to eq(nil)
  end

  it "leaves arrays with ids alone" do
    expect(process({"x" => [1,2,3]}).body).to eq({"x" => [1,2,3]})
  end

  it "does not parse date-like things" do
    expect(process({"x" => "2012-02-01T13:14:15Z bla"}).body["x"].to_s).to eq "2012-02-01T13:14:15Z bla"
    expect(process({"x" => "12012-02-01T13:14:15Z"}).body["x"].to_s).to eq "12012-02-01T13:14:15Z"
    expect(process({"x" => "2012-02-01T13:14:15Z\nfoo"}).body["x"].to_s).to eq "2012-02-01T13:14:15Z\nfoo"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
faraday_middleware-0.9.1 spec/parse_dates_spec.rb