You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.0 KiB
67 lines
2.0 KiB
require 'rails_helper' |
|
|
|
RSpec.describe Subscription, type: :model do |
|
let(:alice) { Fabricate(:account, username: 'alice') } |
|
|
|
subject { Fabricate(:subscription, account: alice) } |
|
|
|
describe '#expired?' do |
|
it 'return true when expires_at is past' do |
|
subject.expires_at = 2.days.ago |
|
expect(subject.expired?).to be true |
|
end |
|
|
|
it 'return false when expires_at is future' do |
|
subject.expires_at = 2.days.from_now |
|
expect(subject.expired?).to be false |
|
end |
|
end |
|
|
|
describe 'lease_seconds' do |
|
it 'returns the time remaing until expiration' do |
|
datetime = 1.day.from_now |
|
subscription = Subscription.new(expires_at: datetime) |
|
travel_to(datetime - 12.hours) do |
|
expect(subscription.lease_seconds).to eq(12.hours) |
|
end |
|
end |
|
end |
|
|
|
describe 'lease_seconds=' do |
|
it 'sets expires_at to min expiration when small value is provided' do |
|
subscription = Subscription.new |
|
datetime = 1.day.from_now |
|
too_low = Subscription::MIN_EXPIRATION - 1000 |
|
travel_to(datetime) do |
|
subscription.lease_seconds = too_low |
|
end |
|
|
|
expected = datetime + Subscription::MIN_EXPIRATION.seconds |
|
expect(subscription.expires_at).to be_within(1.0).of(expected) |
|
end |
|
|
|
it 'sets expires_at to value when valid value is provided' do |
|
subscription = Subscription.new |
|
datetime = 1.day.from_now |
|
valid = Subscription::MIN_EXPIRATION + 1000 |
|
travel_to(datetime) do |
|
subscription.lease_seconds = valid |
|
end |
|
|
|
expected = datetime + valid.seconds |
|
expect(subscription.expires_at).to be_within(1.0).of(expected) |
|
end |
|
|
|
it 'sets expires_at to max expiration when large value is provided' do |
|
subscription = Subscription.new |
|
datetime = 1.day.from_now |
|
too_high = Subscription::MAX_EXPIRATION + 1000 |
|
travel_to(datetime) do |
|
subscription.lease_seconds = too_high |
|
end |
|
|
|
expected = datetime + Subscription::MAX_EXPIRATION.seconds |
|
expect(subscription.expires_at).to be_within(1.0).of(expected) |
|
end |
|
end |
|
end
|
|
|