require 'spec_helper'

describe 'Instace of TestClass' do
  before do
    @test = TestClass.new
  end

  it 'should have a throttler for defined throttle' do
    expect(@test.logins_throttler.class).to eq(RedisThrottler::Base)
  end

  it 'should display limits as hash' do
    expect(@test.limits).to be_a(Hash)
  end

  it 'should respond to limits? correctly' do
    expect(@test.limits?).to eq(true)
  end

  it 'should be able to increment throttler by subject' do
    @test.logins_increment
    @test.logins_increment
    expect(@test.logins_count).to eq(2)
  end

  it 'should responsd to exceeded? correctly' do
    10.times do
      @test.logins_increment
    end
    expect(@test.logins_exceeded?).to eq(true)
  end

  it 'should not be rate-limited after interval' do
    Timecop.travel(60) do
      expect(@test.logins_exceeded?).to eq(false)
    end
  end

  it 'should return counter value for subject within defined limits' do
    expect(@test.logins_count).to eq(TestClass.logins_count(@test.id))
  end
end