Sha256: 8de8c4fd77228196a3db68b97db2c400a61c2df14d766acf9898d19d9f090077

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

require 'spec_helper'

describe Services::Logger::Redis do
  let(:tags)        { %w(foo bar baz) }
  let(:message)     { "One day baby we'll be old" }
  let(:severity)    { 'critical' }
  let(:key)         { 'custom_log_key' }
  let(:redis)       { Redis.new }
  let(:logger)      { described_class.new(redis, key) }

  def log_entries
    redis.lrange(key, 0, -1).map do |json|
      JSON.load json
    end
  end

  describe '#log' do
    it 'logs properly' do
      Timecop.freeze do
        payload = {
          'time'     => Time.now.to_i,
          'message'  => message,
          'severity' => severity,
          'tags'     => tags
        }
        expect do
          logger.log message, tags, severity
        end.to change { log_entries }.from([]).to([payload])
      end
    end
  end

  describe '#clear' do
    before do
      (2.days.ago.to_i..Time.now.to_i).step(1.hour) do |timestamp|
        time = Time.at(timestamp)
        Timecop.freeze time do
          tags = [time.strftime('%a')]
          logger.log tags, time.to_s(:long)
        end
      end
      expect(log_entries.size).to be > 0
    end

    it 'returns all log entries' do
      expect(log_entries).to eq(logger.clear)
    end

    it 'clears all log entries' do
      expect do
        logger.clear
      end.to change { log_entries }.to([])
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
services-1.0.0 spec/services/logger/redis_spec.rb