diff --git a/spec/factories.rb b/spec/factories.rb index 1169942..d7c1a1a 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -5,6 +5,11 @@ def build_sound_file end FactoryGirl.define do + factory :key do + name 'Some key' + user + end + factory :playlist do name 'Some playlist' user diff --git a/spec/features/keys/crud_spec.rb b/spec/features/keys/crud_spec.rb new file mode 100644 index 0000000..ee1f3ec --- /dev/null +++ b/spec/features/keys/crud_spec.rb @@ -0,0 +1,46 @@ +feature 'Keys CRUD' do + TOKEN_PATTERN = /\b[\w\d]{24}\b/ + + let(:key) { create_key } + + background do + sign_in + key + end + + scenario 'lists keys' do + visit keys_path + + expect(page).to have_content key[:name] + expect(page.body).not_to match TOKEN_PATTERN + end + + scenario 'shows key' do + visit keys_path + + click_link key[:name] + + expect(page).to have_content key[:name] + expect(page.body).to match TOKEN_PATTERN + end + + scenario 'edits key' do + visit keys_path + + click_link 'Edit' + fill_in 'Name', with: 'new key name' + click_button 'Update' + + expect(current_path).to eq keys_path + expect(page).to have_content 'new key name' + end + + scenario 'destroys key' do + visit keys_path + + click_link 'Destroy' + + expect(current_path).to eq keys_path + expect(page).not_to have_content key[:name] + end +end diff --git a/spec/support/acceptance_helpers.rb b/spec/support/acceptance_helpers.rb index 2c63b76..7af45c6 100644 --- a/spec/support/acceptance_helpers.rb +++ b/spec/support/acceptance_helpers.rb @@ -21,6 +21,15 @@ module AcceptanceHelpers end end + def create_key + attributes_for :key do |o| + visit keys_path + click_link 'New key' + fill_in 'Name', with: o[:name] + click_button 'Create' + end + end + def create_playlist attributes_for :playlist do |o| visit playlists_path