spec/ddtelemetry/counter_spec.rb in ddtelemetry-1.0.0a1 vs spec/ddtelemetry/counter_spec.rb in ddtelemetry-1.0.0a2

- old
+ new

@@ -1,20 +1,101 @@ # frozen_string_literal: true describe DDTelemetry::Counter do subject(:counter) { described_class.new } - it 'starts at 0' do - expect(counter.value).to eq(0) + describe 'new counter' do + it 'starts at 0' do + expect(subject.get(:erb)).to eq(0) + expect(subject.get(:haml)).to eq(0) + end end describe '#increment' do - subject { counter.increment } + subject { counter.increment(:erb) } - it 'increments' do + it 'increments the matching value' do expect { subject } - .to change { counter.value } + .to change { counter.get(:erb) } .from(0) .to(1) + end + + it 'does not increment any other value' do + expect(counter.get(:haml)).to eq(0) + expect { subject } + .not_to change { counter.get(:haml) } + end + end + + describe '#get' do + subject { counter.get(:erb) } + + context 'not incremented' do + it { is_expected.to eq(0) } + end + + context 'incremented' do + before { counter.increment(:erb) } + it { is_expected.to eq(1) } + end + + context 'other incremented' do + before { counter.increment(:haml) } + it { is_expected.to eq(0) } + end + end + + describe '#labels' do + subject { counter.labels } + + before do + counter.increment(:erb) + counter.increment(:erb) + counter.increment(:haml) + end + + it { is_expected.to contain_exactly(:haml, :erb) } + end + + describe '#each' do + subject do + {}.tap do |res| + counter.each { |label, count| res[label] = count } + end + end + + before do + counter.increment(:erb) + counter.increment(:erb) + counter.increment(:haml) + end + + it { is_expected.to eq(haml: 1, erb: 2) } + + it 'is enumerable' do + expect(counter.map { |_label, count| count }.sort) + .to eq([1, 2]) + end + end + + describe '#to_s' do + subject { counter.to_s } + + before do + counter.increment(:erb) + counter.increment(:erb) + counter.increment(:haml) + end + + it 'returns table' do + expected = <<~TABLE + │ count + ─────┼────── + erb │ 2 + haml │ 1 + TABLE + + expect(subject.strip).to eq(expected.strip) end end end