From 256a55d47be7838bbc061ddf9feb04b76e2a15ca Mon Sep 17 00:00:00 2001
From: the-undefined <joe@joejames.io>
Date: Sat, 19 Nov 2016 06:12:47 +0000
Subject: [PATCH] Move 'User Snippets' Spinach feature to Rspec

This commit moves the `snippets/user.feature` Spinach test to a
Rspec feature, as part of deprecating the Spinach test suite.

- Remove Spinach discover snippets feature and steps
- Add Rspec feature test
---
 features/snippets/user.feature               | 34 ------------
 features/steps/snippets/user.rb              | 55 --------------------
 spec/features/snippets/user_snippets_spec.rb | 49 +++++++++++++++++
 3 files changed, 49 insertions(+), 89 deletions(-)
 delete mode 100644 features/snippets/user.feature
 delete mode 100644 features/steps/snippets/user.rb
 create mode 100644 spec/features/snippets/user_snippets_spec.rb

diff --git a/features/snippets/user.feature b/features/snippets/user.feature
deleted file mode 100644
index 5b5dadb7b39..00000000000
--- a/features/snippets/user.feature
+++ /dev/null
@@ -1,34 +0,0 @@
-@snippets
-Feature: Snippets User
-  Background:
-    Given I sign in as a user
-    And I have public "Personal snippet one" snippet
-    And I have private "Personal snippet private" snippet
-    And I have internal "Personal snippet internal" snippet
-
-  Scenario: I should see all my snippets
-    Given I visit my snippets page
-    Then I should see "Personal snippet one" in snippets
-    And I should see "Personal snippet private" in snippets
-    And I should see "Personal snippet internal" in snippets
-
-  Scenario: I can see only my private snippets
-    Given I visit my snippets page
-    And I click "Private" filter
-    Then I should not see "Personal snippet one" in snippets
-    And I should not see "Personal snippet internal" in snippets
-    And I should see "Personal snippet private" in snippets
-
-  Scenario: I can see only my public snippets
-    Given I visit my snippets page
-    And I click "Public" filter
-    Then I should see "Personal snippet one" in snippets
-    And I should not see "Personal snippet private" in snippets
-    And I should not see "Personal snippet internal" in snippets
-
-  Scenario: I can see only my internal snippets
-    Given I visit my snippets page
-    And I click "Internal" filter
-    Then I should see "Personal snippet internal" in snippets
-    And I should not see "Personal snippet private" in snippets
-    And I should not see "Personal snippet one" in snippets
diff --git a/features/steps/snippets/user.rb b/features/steps/snippets/user.rb
deleted file mode 100644
index 997c605bce2..00000000000
--- a/features/steps/snippets/user.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-class Spinach::Features::SnippetsUser < Spinach::FeatureSteps
-  include SharedAuthentication
-  include SharedPaths
-  include SharedSnippet
-
-  step 'I visit my snippets page' do
-    visit dashboard_snippets_path
-  end
-
-  step 'I should see "Personal snippet one" in snippets' do
-    expect(page).to have_content "Personal snippet one"
-  end
-
-  step 'I should see "Personal snippet private" in snippets' do
-    expect(page).to have_content "Personal snippet private"
-  end
-
-  step 'I should see "Personal snippet internal" in snippets' do
-    expect(page).to have_content "Personal snippet internal"
-  end
-
-  step 'I should not see "Personal snippet one" in snippets' do
-    expect(page).not_to have_content "Personal snippet one"
-  end
-
-  step 'I should not see "Personal snippet private" in snippets' do
-    expect(page).not_to have_content "Personal snippet private"
-  end
-
-  step 'I should not see "Personal snippet internal" in snippets' do
-    expect(page).not_to have_content "Personal snippet internal"
-  end
-
-  step 'I click "Internal" filter' do
-    page.within('.snippet-scope-menu') do
-      click_link "Internal"
-    end
-  end
-
-  step 'I click "Private" filter' do
-    page.within('.snippet-scope-menu') do
-      click_link "Private"
-    end
-  end
-
-  step 'I click "Public" filter' do
-    page.within('.snippet-scope-menu') do
-      click_link "Public"
-    end
-  end
-
-  def snippet
-    @snippet ||= PersonalSnippet.find_by!(title: "Personal snippet one")
-  end
-end
diff --git a/spec/features/snippets/user_snippets_spec.rb b/spec/features/snippets/user_snippets_spec.rb
new file mode 100644
index 00000000000..191c2fb9a22
--- /dev/null
+++ b/spec/features/snippets/user_snippets_spec.rb
@@ -0,0 +1,49 @@
+require 'rails_helper'
+
+feature 'User Snippets', feature: true do
+  let(:author) { create(:user) }
+  let!(:public_snippet) { create(:personal_snippet, :public, author: author, title: "This is a public snippet") }
+  let!(:internal_snippet) { create(:personal_snippet, :internal, author: author, title: "This is an internal snippet") }
+  let!(:private_snippet) { create(:personal_snippet, :private, author: author, title: "This is a private snippet") }
+
+  background do
+    login_as author
+    visit dashboard_snippets_path
+  end
+
+  scenario 'View all of my snippets' do
+    expect(page).to have_content(public_snippet.title)
+    expect(page).to have_content(internal_snippet.title)
+    expect(page).to have_content(private_snippet.title)
+  end
+
+  scenario 'View my public snippets' do
+    page.within('.snippet-scope-menu') do
+      click_link "Public"
+    end
+
+    expect(page).to have_content(public_snippet.title)
+    expect(page).not_to have_content(internal_snippet.title)
+    expect(page).not_to have_content(private_snippet.title)
+  end
+
+  scenario 'View my internal snippets' do
+    page.within('.snippet-scope-menu') do
+      click_link "Internal"
+    end
+
+    expect(page).not_to have_content(public_snippet.title)
+    expect(page).to have_content(internal_snippet.title)
+    expect(page).not_to have_content(private_snippet.title)
+  end
+
+  scenario 'View my private snippets' do
+    page.within('.snippet-scope-menu') do
+      click_link "Private"
+    end
+
+    expect(page).not_to have_content(public_snippet.title)
+    expect(page).not_to have_content(internal_snippet.title)
+    expect(page).to have_content(private_snippet.title)
+  end
+end
-- 
GitLab