You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
asciinema.org/spec/services/user_token_creator_spec.rb

76 lines
2.4 KiB
Ruby

require 'spec_helper'
describe UserTokenCreator do
let(:user_token_creator) { described_class.new(clock) }
let(:clock) { double('clock', now: now) }
let(:now) { Time.now }
describe '#create' do
let(:user) { create(:user) }
let(:token) { 'a-toh-can' }
let(:user_token) { double('user_token', token: token,
persisted?: persisted) }
subject { user_token_creator.create(user, token) }
before do
allow(user).to receive(:add_user_token) { user_token }
end
context "when token was persisted" do
let(:persisted) { true }
let(:old_updated_at) { 3.days.ago }
let!(:asciicast_1) { create(:asciicast, :user => nil,
:user_token => token,
:updated_at => old_updated_at) }
let!(:asciicast_2) { create(:asciicast, :user => nil,
:user_token => 'please',
:updated_at => old_updated_at) }
let!(:asciicast_3) { create(:asciicast, :user => create(:user),
:user_token => 'nonono',
:updated_at => old_updated_at) }
it { should be(1) }
it 'assigns the user to all matching asciicasts' do
subject
asciicast_1.reload; asciicast_2.reload; asciicast_3.reload
expect(asciicast_1.user).to eq(user)
expect(asciicast_2.user).not_to eq(user)
expect(asciicast_3.user).not_to eq(user)
end
it 'resets the token on all matching asciicasts' do
subject
asciicast_1.reload; asciicast_2.reload; asciicast_3.reload
expect(asciicast_1.user_token).to be(nil)
expect(asciicast_2.user_token).not_to be(nil)
expect(asciicast_3.user_token).not_to be(nil)
end
it 'updates the updated_at field on all matching asciicasts' do
subject
asciicast_1.reload; asciicast_2.reload; asciicast_3.reload
expect(asciicast_1.updated_at.to_i).to eq(now.to_i)
expect(asciicast_2.updated_at.to_i).to eq(old_updated_at.to_i)
expect(asciicast_3.updated_at.to_i).to eq(old_updated_at.to_i)
end
end
context "when token wasn't persisted " do
let(:persisted) { false }
it { should be(nil) }
end
end
end