12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- # frozen_string_literal: true
- require 'rails_helper'
- RSpec.describe 'Invites' do
- include ActionView::RecordIdentifier
- let(:user) { Fabricate :user }
- before { sign_in user }
- describe 'Viewing invites' do
- it 'Lists existing user invites' do
- invite = Fabricate :invite, user: user
- visit invites_path
- within css_id(invite) do
- expect(page)
- .to have_content(invite.uses)
- .and have_private_cache_control
- expect(copyable_field.value)
- .to eq(public_invite_url(invite_code: invite.code))
- end
- end
- end
- describe 'Creating a new invite' do
- it 'Saves the invite for the user' do
- visit invites_path
- fill_invite_form
- expect { submit_form }
- .to change(user.invites, :count).by(1)
- end
- end
- describe 'Deleting an existing invite' do
- it 'Expires the invite' do
- invite = Fabricate :invite, user: user
- visit invites_path
- expect { delete_invite(invite) }
- .to change { invite.reload.expired? }.to(true)
- within css_id(invite) do
- expect(page).to have_content I18n.t('invites.expired')
- end
- end
- end
- private
- def copyable_field
- within '.input-copy' do
- find(:field, type: :text, readonly: true)
- end
- end
- def submit_form
- click_on I18n.t('invites.generate')
- end
- def delete_invite(invite)
- within css_id(invite) do
- click_on I18n.t('invites.delete')
- end
- end
- def fill_invite_form
- select I18n.t('invites.max_uses', count: 100),
- from: I18n.t('simple_form.labels.defaults.max_uses')
- select I18n.t("invites.expires_in.#{30.minutes.to_i}"),
- from: I18n.t('simple_form.labels.defaults.expires_in')
- check I18n.t('simple_form.labels.defaults.autofollow')
- end
- end
|