Given /^gitlab user "(.*?)"$/ do |arg1|
  Factory :user, :name => arg1
end

Given /^"(.*?)" is "(.*?)" developer$/ do |arg1, arg2|
  user = User.find_by_name(arg1)
  project = Project.find_by_name(arg2)
  project.add_access(user, :write)
end

Given /^I visit project "(.*?)" team page$/ do |arg1|
  visit team_project_path(Project.find_by_name(arg1))
end

Then /^I should be able to see myself in team$/ do
  page.should have_content(@user.name)
  page.should have_content(@user.email)
end

Then /^I should see "(.*?)" in team list$/ do |arg1|
  user = User.find_by_name(arg1)
  page.should have_content(user.name)
  page.should have_content(user.email)
end

Given /^I click link "(.*?)"$/ do |arg1|
  click_link arg1
end

Given /^I select "(.*?)" as "(.*?)"$/ do |arg1, arg2|
  user = User.find_by_name(arg1)
  within "#new_team_member" do 
    select user.name, :from => "team_member_user_id"
    select arg2, :from => "team_member_project_access"
  end
  click_button "Save"
end

Then /^I should see "(.*?)" in team list as "(.*?)"$/ do |arg1, arg2|
  user = User.find_by_name(arg1)
  role_id = find(".user_#{user.id} #team_member_project_access").value
  role_id.should == UsersProject.access_roles[arg2].to_s
end

Given /^I change "(.*?)" role to "(.*?)"$/ do |arg1, arg2|
  user = User.find_by_name(arg1)
  within ".user_#{user.id}" do 
    select arg2, :from => "team_member_project_access"
  end
end

Then /^I should see "(.*?)" team profile$/ do |arg1|
  user = User.find_by_name(arg1)
  page.should have_content(user.name)
  page.should have_content(user.email)
  page.should have_content("To team list")
end

Then /^I should not see "(.*?)" in team list$/ do |arg1|
  user = User.find_by_name(arg1)
  page.should_not have_content(user.name)
  page.should_not have_content(user.email)
end