diff --git a/src/api/test/functional/webui/owner_search_test.rb b/src/api/test/functional/webui/owner_search_test.rb new file mode 100644 index 00000000000..2602e3b633c --- /dev/null +++ b/src/api/test/functional/webui/owner_search_test.rb @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- + +require 'test_helper' + +class Webui::OwnerSearchTest < Webui::IntegrationTest + + def setup + @attrib = Attrib.find_or_create_by!(attrib_type: AttribType.where(name: "OwnerRootProject").first, + project: Project.where(name: "home:Iggy").first) + end + + def visit_owner_search + visit webui_engine.url_for(controller: '/webui/search', action: :owner, only_path: true) + end + + def search(options) + validate_search_page + find("#advanced_link").click + + options[:flags] ||= [] + options[:expect] ||= :success + + fill_in "search_input", with: options[:text] + options[:flags].each do |f| + find("input[id='#{f}']").set(true) + end + + click_button "search_button" + + if options[:expect] == :no_results + flash_message.must_equal "Your search did not return any results." + flash_message_type.must_equal :info + assert search_results.empty? + end + end + + def validate_search_page + page.must_have_text "Search for people responsible" + page.must_have_text "Advanced" + end + + def search_results + raw_results = page.all("div.search_result") + raw_results.collect do |row| + { + :project => (row.find("a.project").text rescue nil), + :package => (row.find("a.package").text rescue nil), + :owners => (row.find("p").text rescue nil) + } + end + end + + test "empty_owner_search" do + visit_owner_search + search text: "does_not_exist", expect: :no_results + end + + test "basic_owner_search_" do + visit_owner_search + search text: "package", expect: "success" + result = search_results.first + assert result[:project] == "home:Iggy" + assert result[:package] == "TestPack" + assert result[:owners].include? "(fred) as maintainer" + assert result[:owners].include? "(Iggy) as maintainer" + assert result[:owners].include? "(Iggy) as bugowner" + end + + test "owner_search_with_devel" do + # set devel package (this one has another devel package in home:coolo:test) + pkg = Package.find_by_project_and_name 'home:Iggy', 'TestPack' + pkg.develpackage = Package.find_by_project_and_name 'kde4', 'kdelibs' + pkg.save + + visit_owner_search + + # Search including devel projects + search text: "package", flags: [:devel], expect: "success" + result = search_results.first + assert result[:project] == "home:coolo:test" + + # search again, but ignore devel package + search text: "package", flags: [:nodevel], expect: "success" + result = search_results.first + assert result[:project] == "home:Iggy" + assert result[:package] == "TestPack" + + # reset devel package setting again + pkg.develpackage = nil + pkg.save + end +end diff --git a/src/api/test/functional/webui/search_controller_test.rb b/src/api/test/functional/webui/search_controller_test.rb index 4855a0a5f67..428afa85253 100644 --- a/src/api/test/functional/webui/search_controller_test.rb +++ b/src/api/test/functional/webui/search_controller_test.rb @@ -5,7 +5,7 @@ class Webui::SearchControllerTest < Webui::IntegrationTest def setup - Webui::ApiDetails.prepare_search + OBSApi::TestSphinx.ensure end def validate_search_page @@ -106,7 +106,7 @@ def search_results fill_in 'search', with: 'basedistro3' page.evaluate_script("$('#global-search-form').get(0).submit()") validate_search_page - page.must_have_text(/Base.* distro without update/) + page.must_have_text(/Base.* distro without update project/) end test "search_by_baseurl" do diff --git a/src/api/test/functional/webui_controller_test.rb b/src/api/test/functional/webui_controller_test.rb index 63b3ab15e7c..d0667251573 100644 --- a/src/api/test/functional/webui_controller_test.rb +++ b/src/api/test/functional/webui_controller_test.rb @@ -9,69 +9,6 @@ def setup wait_for_scheduler_start end - def test_search_owner - login_king - - get '/webui/owners' - assert_response 400 - assert_xml_tag :tag => 'status', :attributes => { :code => 'missing_parameter'} - - # must be after first search controller call or backend might not be started on single test case runs - wait_for_publisher() - - get "/webui/owners?binary='package'" - assert_response 400 - assert_xml_tag :tag => 'status', :attributes => { :code => 'attribute_not_set'} - - get "/webui/owners?binary='package'&attribute='OBS:does_not_exist'" - assert_response 404 - assert_xml_tag :tag => 'status', :attributes => { :code => 'unknown_attribute_type'} - - post '/source/home:Iggy/_attribute', "" - assert_response :success - - get '/webui/owners?binary=DOES_NOT_EXIST' - assert_response :success - assert_xml_tag :tag => 'collection', :children => { :count => 0 } - - get '/webui/owners?binary=package' - assert_response :success - assert_xml_tag :tag => 'owner', :attributes => { :rootproject => 'home:Iggy', :project => 'home:Iggy', :package => 'TestPack'} - - get '/webui/owners?binary=package' - assert_response :success - assert_xml_tag :parent => { :tag => 'owner', :attributes => { :rootproject => 'home:Iggy', :project => 'home:Iggy', :package => 'TestPack'} }, - :tag => 'filter', :content => 'bugowners' - assert_xml_tag :parent => { :tag => 'owner', :attributes => { :rootproject => 'home:Iggy', :project => 'home:Iggy', :package => 'TestPack'} }, - :tag => 'filter', :content => 'maintainers' - - # set devel package (this one has another devel package in home:coolo:test) - pkg = Package.find_by_project_and_name 'home:Iggy', 'TestPack' - pkg.develpackage = Package.find_by_project_and_name 'kde4', 'kdelibs' - pkg.save - - # include devel package - get '/webui/owners?binary=package' - assert_response :success - assert_xml_tag :tag => 'owner', :attributes => { :project => 'home:coolo:test'} - - # search again, but ignore devel package - get '/webui/owners?binary=package&devel=false' - assert_response :success - assert_xml_tag :tag => 'owner', :attributes => { :rootproject => 'home:Iggy', :project => 'home:Iggy', :package => 'TestPack'} - - get '/webui/owners?binary=package&limit=-1' - assert_response :success - assert_xml_tag :tag => 'owner', :attributes => { :rootproject => 'home:Iggy', :project => 'home:coolo:test'} - - # reset devel package setting again - pkg.develpackage = nil - pkg.save - # cleanup - delete '/source/home:Iggy/_attribute/OBS:OwnerRootProject' - assert_response :success - end - test 'package rdiff' do login_Iggy