From a0c48ec62b64f3b836d8af04c46938d6951911ef Mon Sep 17 00:00:00 2001
From: jurre <jurrestender+github@gmail.com>
Date: Tue, 13 Dec 2016 16:22:18 +0100
Subject: [PATCH] Move Admin Appearance spinach feature to rspec

---
 features/admin/appearance.feature            | 37 ----------
 features/steps/admin/appearance.rb           | 72 -------------------
 features/steps/shared/paths.rb               |  4 --
 spec/features/admin/admin_appearance_spec.rb | 76 ++++++++++++++++++++
 4 files changed, 76 insertions(+), 113 deletions(-)
 delete mode 100644 features/admin/appearance.feature
 delete mode 100644 features/steps/admin/appearance.rb
 create mode 100644 spec/features/admin/admin_appearance_spec.rb

diff --git a/features/admin/appearance.feature b/features/admin/appearance.feature
deleted file mode 100644
index 5c1dd7531c1..00000000000
--- a/features/admin/appearance.feature
+++ /dev/null
@@ -1,37 +0,0 @@
-Feature: Admin Appearance
-  Scenario: Create new appearance
-    Given I sign in as an admin
-    And I visit admin appearance page
-    When submit form with new appearance
-    Then I should be redirected to admin appearance page
-    And I should see newly created appearance
-
-  Scenario: Preview appearance
-    Given application has custom appearance
-    And I sign in as an admin
-    When I visit admin appearance page
-    And I click preview button
-    Then I should see a customized appearance
-
-  Scenario: Custom sign-in page
-    Given application has custom appearance
-    When I visit login page
-    Then I should see a customized appearance
-
-  Scenario: Appearance logo
-    Given application has custom appearance
-    And I sign in as an admin
-    And I visit admin appearance page
-    When I attach a logo
-    Then I should see a logo
-    And I remove the logo
-    Then I should see logo removed
-
-  Scenario: Header logos
-    Given application has custom appearance
-    And I sign in as an admin
-    And I visit admin appearance page
-    When I attach header logos
-    Then I should see header logos
-    And I remove the header logos
-    Then I should see header logos removed
diff --git a/features/steps/admin/appearance.rb b/features/steps/admin/appearance.rb
deleted file mode 100644
index 0d1be46d11d..00000000000
--- a/features/steps/admin/appearance.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-class Spinach::Features::AdminAppearance < Spinach::FeatureSteps
-  include SharedAuthentication
-  include SharedPaths
-
-  step 'submit form with new appearance' do
-    fill_in 'appearance_title', with: 'MyCompany'
-    fill_in 'appearance_description', with: 'dev server'
-    click_button 'Save'
-  end
-
-  step 'I should be redirected to admin appearance page' do
-    expect(current_path).to eq admin_appearances_path
-    expect(page).to have_content 'Appearance settings'
-  end
-
-  step 'I should see newly created appearance' do
-    expect(page).to have_field('appearance_title', with: 'MyCompany')
-    expect(page).to have_field('appearance_description', with: 'dev server')
-    expect(page).to have_content 'Last edit'
-  end
-
-  step 'I click preview button' do
-    click_link "Preview"
-  end
-
-  step 'application has custom appearance' do
-    create(:appearance)
-  end
-
-  step 'I should see a customized appearance' do
-    expect(page).to have_content appearance.title
-    expect(page).to have_content appearance.description
-  end
-
-  step 'I attach a logo' do
-    attach_file(:appearance_logo, Rails.root.join('spec', 'fixtures', 'dk.png'))
-    click_button 'Save'
-  end
-
-  step 'I attach header logos' do
-    attach_file(:appearance_header_logo, Rails.root.join('spec', 'fixtures', 'dk.png'))
-    click_button 'Save'
-  end
-
-  step 'I should see a logo' do
-    expect(page).to have_xpath('//img[@src="/uploads/appearance/logo/1/dk.png"]')
-  end
-
-  step 'I should see header logos' do
-    expect(page).to have_xpath('//img[@src="/uploads/appearance/header_logo/1/dk.png"]')
-  end
-
-  step 'I remove the logo' do
-    click_link 'Remove logo'
-  end
-
-  step 'I remove the header logos' do
-    click_link 'Remove header logo'
-  end
-
-  step 'I should see logo removed' do
-    expect(page).not_to have_xpath('//img[@src="/uploads/appearance/logo/1/gitlab_logo.png"]')
-  end
-
-  step 'I should see header logos removed' do
-    expect(page).not_to have_xpath('//img[@src="/uploads/appearance/header_logo/1/header_logo_light.png"]')
-  end
-
-  def appearance
-    Appearance.last
-  end
-end
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index a78d0a775ba..15b81fa529b 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -195,10 +195,6 @@ module SharedPaths
     visit admin_groups_path
   end
 
-  step 'I visit admin appearance page' do
-    visit admin_appearances_path
-  end
-
   step 'I visit admin teams page' do
     visit admin_teams_path
   end
diff --git a/spec/features/admin/admin_appearance_spec.rb b/spec/features/admin/admin_appearance_spec.rb
new file mode 100644
index 00000000000..96d715ef383
--- /dev/null
+++ b/spec/features/admin/admin_appearance_spec.rb
@@ -0,0 +1,76 @@
+require 'spec_helper'
+
+feature 'Admin Appearance', feature: true do
+  let!(:appearance) { create(:appearance) }
+
+  scenario 'Create new appearance' do
+    login_as :admin
+    visit admin_appearances_path
+
+    fill_in 'appearance_title', with: 'MyCompany'
+    fill_in 'appearance_description', with: 'dev server'
+    click_button 'Save'
+
+    expect(current_path).to eq admin_appearances_path
+    expect(page).to have_content 'Appearance settings'
+
+    expect(page).to have_field('appearance_title', with: 'MyCompany')
+    expect(page).to have_field('appearance_description', with: 'dev server')
+    expect(page).to have_content 'Last edit'
+  end
+
+  scenario 'Preview appearance' do
+    login_as :admin
+
+    visit admin_appearances_path
+    click_link "Preview"
+
+    expect_page_has_custom_appearance(appearance)
+  end
+
+  scenario 'Custom sign-in page' do
+    visit new_user_session_path
+    expect_page_has_custom_appearance(appearance)
+  end
+
+  scenario 'Appearance logo' do
+    login_as :admin
+    visit admin_appearances_path
+
+    attach_file(:appearance_logo, logo_fixture)
+    click_button 'Save'
+    expect(page).to have_css(logo_selector)
+
+    click_link 'Remove logo'
+    expect(page).not_to have_css(logo_selector)
+  end
+
+  scenario 'Header logos' do
+    login_as :admin
+    visit admin_appearances_path
+
+    attach_file(:appearance_header_logo, logo_fixture)
+    click_button 'Save'
+    expect(page).to have_css(header_logo_selector)
+
+    click_link 'Remove header logo'
+    expect(page).not_to have_css(header_logo_selector)
+  end
+
+  def expect_page_has_custom_appearance(appearance)
+    expect(page).to have_content appearance.title
+    expect(page).to have_content appearance.description
+  end
+
+  def logo_selector
+    '//img[@src^="/uploads/appearance/logo"]'
+  end
+
+  def header_logo_selector
+    '//img[@src^="/uploads/appearance/header_logo"]'
+  end
+
+  def logo_fixture
+    Rails.root.join('spec', 'fixtures', 'dk.png')
+  end
+end
-- 
GitLab