Commit ee26c3ca authored by Sean McGivern's avatar Sean McGivern

Fix label order by priority on labels page

parent a04897b7
...@@ -33,11 +33,11 @@ class Label < ActiveRecord::Base ...@@ -33,11 +33,11 @@ class Label < ActiveRecord::Base
scope :templates, -> { where(template: true) } scope :templates, -> { where(template: true) }
def self.prioritized def self.prioritized
where.not(priority: nil).reorder(:title) where.not(priority: nil).reorder(:priority, :title)
end end
def self.unprioritized def self.unprioritized
where(priority: nil).reorder(:title) where(priority: nil)
end end
alias_attribute :name, :title alias_attribute :name, :title
......
require 'spec_helper'
describe Projects::LabelsController do
let(:project) { create(:project) }
let(:user) { create(:user) }
before do
project.team << [user, :master]
sign_in(user)
end
describe 'GET #index' do
def create_label(attributes)
create(:label, attributes.merge(project: project))
end
before do
15.times { |i| create_label(priority: (i % 3) + 1, title: "label #{15 - i}") }
5.times { |i| create_label(title: "label #{100 - i}") }
get :index, namespace_id: project.namespace.to_param, project_id: project.to_param
end
context '@prioritized_labels' do
let(:prioritized_labels) { assigns(:prioritized_labels) }
it 'contains only prioritized labels' do
expect(prioritized_labels).to all(have_attributes(priority: a_value > 0))
end
it 'is sorted by priority, then label title' do
priorities_and_titles = prioritized_labels.pluck(:priority, :title)
expect(priorities_and_titles.sort).to eq(priorities_and_titles)
end
end
context '@labels' do
let(:labels) { assigns(:labels) }
it 'contains only unprioritized labels' do
expect(labels).to all(have_attributes(priority: nil))
end
it 'is sorted by label title' do
titles = labels.pluck(:title)
expect(titles.sort).to eq(titles)
end
end
end
end
...@@ -55,7 +55,7 @@ feature 'Prioritize labels', feature: true do ...@@ -55,7 +55,7 @@ feature 'Prioritize labels', feature: true do
end end
end end
scenario 'user can sort prioritized labels', js: true do scenario 'user can sort prioritized labels and persist across reloads', js: true do
bug = create(:label, title: 'bug', priority: 1) bug = create(:label, title: 'bug', priority: 1)
wontfix = create(:label, title: 'wontfix', priority: 2) wontfix = create(:label, title: 'wontfix', priority: 2)
...@@ -75,6 +75,13 @@ feature 'Prioritize labels', feature: true do ...@@ -75,6 +75,13 @@ feature 'Prioritize labels', feature: true do
expect(first('li')).to have_content('wontfix') expect(first('li')).to have_content('wontfix')
expect(page.all('li').last).to have_content('bug') expect(page.all('li').last).to have_content('bug')
end end
visit current_url
page.within('.prioritized-labels') do
expect(first('li')).to have_content('wontfix')
expect(page.all('li').last).to have_content('bug')
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment