Commit 33381463920369a5915bfda25ee148a84b64285a
Committed by
Dmitriy Zaporozhets
1 parent
b1021806
Added option to remove issue assignee on project issue page and issue edit page
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> Conflicts: CHANGELOG
Showing
3 changed files
with
66 additions
and
1 deletions
Show diff stats
CHANGELOG
app/assets/javascripts/project_users_select.js.coffee
| ... | ... | @@ -10,6 +10,16 @@ |
| 10 | 10 | query: (query) -> |
| 11 | 11 | Api.projectUsers project_id, query.term, (users) -> |
| 12 | 12 | data = { results: users } |
| 13 | + | |
| 14 | + nullUser = { | |
| 15 | + name: 'Unassigned', | |
| 16 | + avatar: null, | |
| 17 | + username: 'none', | |
| 18 | + id: '' | |
| 19 | + } | |
| 20 | + | |
| 21 | + data.results.unshift(nullUser) | |
| 22 | + | |
| 13 | 23 | query.callback(data) |
| 14 | 24 | |
| 15 | 25 | initSelection: (element, callback) -> |
| ... | ... | @@ -35,8 +45,13 @@ |
| 35 | 45 | else |
| 36 | 46 | avatar = gon.relative_url_root + "/assets/no_avatar.png" |
| 37 | 47 | |
| 48 | + if user.id == '' | |
| 49 | + avatarMarkup = '' | |
| 50 | + else | |
| 51 | + avatarMarkup = "<div class='user-image'><img class='avatar s24' src='#{avatar}'></div>" | |
| 52 | + | |
| 38 | 53 | "<div class='user-result'> |
| 39 | - <div class='user-image'><img class='avatar s24' src='#{avatar}'></div> | |
| 54 | + #{avatarMarkup} | |
| 40 | 55 | <div class='user-name'>#{user.name}</div> |
| 41 | 56 | <div class='user-username'>#{user.username}</div> |
| 42 | 57 | </div>" | ... | ... |
spec/features/issues_spec.rb
| ... | ... | @@ -43,6 +43,31 @@ describe "Issues" do |
| 43 | 43 | page.should have_content project.name |
| 44 | 44 | end |
| 45 | 45 | end |
| 46 | + | |
| 47 | + end | |
| 48 | + | |
| 49 | + describe "Editing issue assignee" do | |
| 50 | + let!(:issue) do | |
| 51 | + create(:issue, | |
| 52 | + author: @user, | |
| 53 | + assignee: @user, | |
| 54 | + project: project) | |
| 55 | + end | |
| 56 | + | |
| 57 | + it 'allows user to select unasigned', :js => true do | |
| 58 | + visit edit_project_issue_path(project, issue) | |
| 59 | + | |
| 60 | + page.should have_content "Assign to #{@user.name}" | |
| 61 | + | |
| 62 | + page.first('#s2id_issue_assignee_id').click | |
| 63 | + sleep 2 # wait for ajax stuff to complete | |
| 64 | + page.first('.user-result').click | |
| 65 | + | |
| 66 | + click_button "Save changes" | |
| 67 | + | |
| 68 | + page.should have_content "Assignee: Select assignee" | |
| 69 | + issue.reload.assignee.should be_nil | |
| 70 | + end | |
| 46 | 71 | end |
| 47 | 72 | |
| 48 | 73 | describe "Filter issue" do |
| ... | ... | @@ -245,6 +270,28 @@ describe "Issues" do |
| 245 | 270 | page.should have_content milestone.title |
| 246 | 271 | end |
| 247 | 272 | end |
| 273 | + | |
| 274 | + describe 'removing assignee' do | |
| 275 | + let(:user2) { create(:user) } | |
| 276 | + | |
| 277 | + before :each do | |
| 278 | + issue.assignee = user2 | |
| 279 | + issue.save | |
| 280 | + end | |
| 281 | + | |
| 282 | + it 'allows user to remove assignee', :js => true do | |
| 283 | + visit project_issue_path(project, issue) | |
| 284 | + page.should have_content "Assignee: #{user2.name}" | |
| 285 | + | |
| 286 | + page.first('#s2id_issue_assignee_id').click | |
| 287 | + sleep 2 # wait for ajax stuff to complete | |
| 288 | + page.first('.user-result').click | |
| 289 | + | |
| 290 | + page.should have_content "Assignee: Unassigned" | |
| 291 | + sleep 2 # wait for ajax stuff to complete | |
| 292 | + issue.reload.assignee.should be_nil | |
| 293 | + end | |
| 294 | + end | |
| 248 | 295 | end |
| 249 | 296 | |
| 250 | 297 | def first_issue | ... | ... |