Sha256: 3baf05376d28019606d7865e8158e1595d4dee1f08f3728f5e0e0b585ecb4498

Contents?: true

Size: 1.82 KB

Versions: 6

Compression:

Stored size: 1.82 KB

Contents

require 'spec_helper'
require 'volt/helpers/time'

describe Volt::EJSON, '.parse' do
  subject { Volt::EJSON }
  let(:epoch) { 135820576553 }
  let(:ruby_epoch) { epoch / 1000.0 }

  context 'parsing EJSON fields' do
    context 'VoltTime' do
      it 'parses proper $date EJSON fields to VoltTime' do
        parsed = subject.parse '{"a" : {"$date": 135820576553}}'

        expect(parsed['a']).to eq VoltTime.at(ruby_epoch)
        expect(parsed['a']).to be_a VoltTime
        
      end

      it 'parses nested EJSON date fields to VoltTime' do
        parsed = subject.parse '{"a" : {"b" : {"$date": 135820576553}}}'

        expect(parsed['a']['b']).to eq VoltTime.at(ruby_epoch)
        expect(parsed['a']['b']).to be_a VoltTime
      end

      it 'parses nested $dates within $escapes' do
        parsed = subject.parse(
          '{"a" : {"$escape": {"$date" : {"date" : {"$date": 135820576553}}}}}'
        )

        expect(parsed['a']['$date']['date']).to eq VoltTime.at(ruby_epoch)
        expect(parsed['a']['$date']['date']).to be_a VoltTime
      end

    end
  end
end

describe Volt::EJSON, '.stringify' do
  subject { Volt::EJSON }
  context 'marshaling dates' do
    let(:now) { VoltTime.now }
    let(:now_js_epoch) { now.to_i * 1_000 }

    it 'marshals when given a VoltTime' do
      stringified = subject.stringify when: now

      expect(stringified).to eq %({"when":{"$date":#{now_js_epoch}}})
    end

    it 'marshals nested VoltTimes' do
      stringified = subject.stringify how: { when: now }

      expect(stringified).to eq %({"how":{"when":{"$date":#{now_js_epoch}}}})
    end

    it 'marshals multiple VoltTimes' do
      stringified = subject.stringify when: now, then: now

      expect(stringified.gsub(' ', '')).to eq(
        %({"when":{"$date":#{now_js_epoch}},"then":{"$date":#{now_js_epoch}}})
      )
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
volt-0.9.7.pre8 spec/utils/ejson_volt_time_spec.rb
volt-0.9.7.pre7 spec/utils/ejson_volt_time_spec.rb
volt-0.9.7.pre6 spec/utils/ejson_volt_time_spec.rb
volt-0.9.7.pre5 spec/utils/ejson_volt_time_spec.rb
volt-0.9.7.pre3 spec/utils/ejson_volt_time_spec.rb
volt-0.9.7.pre2 spec/utils/ejson_volt_time_spec.rb