VerdigrisTech/green-button-data

View on GitHub
spec/lib/green-button-data/parser/local_time_parameter_spec.rb

Summary

Maintainability
B
6 hrs
Test Coverage
require "spec_helper"

describe GreenButtonData::Parser::LocalTimeParameters do
  context "espi namespace" do
    let(:feed) { GreenButtonData::Feed }
    let :local_time_parameters do
      feed.parse(espi_local_time_parameters)
          .entries
          .first
          .content
          .local_time_parameters
    end

    subject { local_time_parameters }

    it "should parse DST start rule" do
      expect(subject.dst_start_rule).to eq 0x360e2000
    end

    it "should parse DST end rule" do
      expect(subject.dst_end_rule).to eq 0xb40e2000
    end

    it "should parse DST offset" do
      expect(subject.dst_offset).to eq 3600
    end

    it "should parse timezone offset" do
      expect(subject.tz_offset).to eq -18000
    end

    describe "#dst_starts_at" do
      it "should return DateTime object representation of DST rule" do
        expect(subject.dst_starts_at(2015)).to eq DateTime.new 2015, 3, 8, 2
      end
    end

    describe "#dst_ends_at" do
      it "should return DateTime object representation of DST rule" do
        expect(subject.dst_ends_at(2015)).to eq DateTime.new 2015, 11, 1, 2
      end
    end

    describe "#total_offset" do
      it "should return total offset from DST and timezone offsets in seconds" do
        expect(subject.total_offset).to eq -14400
      end
    end

    describe "#total_offset_hours" do
      it "should return total offset in hours" do
        expect(subject.total_offset_hours).to eq -4
      end
    end
  end

  context "espi namespace" do
    let(:feed) { GreenButtonData::Feed }
    let :local_time_parameters do
      feed.parse(pge_local_time_parameters)
          .entries
          .first
          .content
          .local_time_parameters
    end

    subject { local_time_parameters }

    it "should parse DST start rule" do
      expect(subject.dst_start_rule).to eq 0x360e2000
    end

    it "should parse DST end rule" do
      expect(subject.dst_end_rule).to eq 0xb40e2000
    end

    it "should parse DST offset" do
      expect(subject.dst_offset).to eq 3600
    end

    it "should parse timezone offset" do
      expect(subject.tz_offset).to eq -28800
    end

    describe "#dst_starts_at" do
      it "should return DateTime object representation of DST rule" do
        expect(subject.dst_starts_at(2015)).to eq DateTime.new 2015, 3, 8, 2
      end
    end

    describe "#dst_ends_at" do
      it "should return DateTime object representation of DST rule" do
        expect(subject.dst_ends_at(2015)).to eq DateTime.new 2015, 11, 1, 2
      end
    end

    describe "#total_offset" do
      it "should return total offset from DST and timezone offsets in seconds" do
        expect(subject.total_offset).to eq -25200
      end
    end

    describe "#total_offset_hours" do
      it "should return total offset in hours" do
        expect(subject.total_offset_hours).to eq -7
      end
    end
  end
end