Files
Behrokh Satarnejad 8565925b17 [64112] Create an angular breadcrumb as placeholder for the toggle button (#19229)
* create a breadcrumbs angular component

* change the styles of breadcrumbs component so it look like other breadcrumbs

* add breadcrumbs component to the partition query space component

* add breadcrumbs to boards

* add breadcrumbs to team planners and calendar

* add breadcrumbs to ifc viewer and wps and gantt pages

* add feature specs for modules that have breadcrumbs component

* add mobile view for breadcrumbs component

* fix mobile styles in bcf module

* remove margin-bottom from breadcrumb mobile since it has some space from toolbar title

* add a section for active breadcrumb

* move breadcrumb items for gantt and wp to a separate method

* fix urls for work packages and gantt pages when there is no project selected

* use only op- classes

* use existing translations and use capybara accessible selectors

* change gantt translation key

* fix failing test in boards

* add section header of side bar menu to the breadcrumb last item

* change css BEM styles and change the projectWorkPackages path to workPackages path

* undo css changes in bcf view

* fix failing tests

* change target of anchors

* Use real space instead of a margin so that screen readers can read it out correctly

---------

Co-authored-by: Henriette Darge <h.darge@openproject.com>
2025-06-25 15:27:21 +02:00

97 lines
3.3 KiB
Ruby

# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
require "spec_helper"
RSpec.describe "Work package pagination", :js do
shared_let(:admin) { create(:admin) }
let(:project) do
create(:project, name: "project1", identifier: "project1")
end
shared_examples_for "paginated work package list" do
let!(:work_package_1) { create(:work_package, project:) }
let!(:work_package_2) { create(:work_package, project:) }
before do
login_as(admin)
allow(Setting).to receive(:per_page_options).and_return "1, 50, 100"
visit path
expect(page).to have_current_path(expected_path, ignore_query: true)
end
it do
expect(page).to have_content("All open")
expect(page).to have_test_selector("op-breadcrumbs--item", text: "Work packages")
expect(page).to have_css(".op-breadcrumbs--current", text: "All open", aria: { current: "page" })
within(".work-packages-partitioned-query-space--container") do
expect(page).to have_content(work_package_1.subject)
expect(page).to have_no_content(work_package_2.subject)
end
within(".op-pagination--pages") do
find(".op-pagination--item button", text: "2").click
end
within(".work-packages-partitioned-query-space--container") do
expect(page).to have_content(work_package_2.subject)
expect(page).to have_no_content(work_package_1.subject)
end
within(".op-pagination--options") do
find(".op-pagination--item button", text: "50").click
end
within(".work-packages-partitioned-query-space--container") do
expect(page).to have_content(work_package_1.subject)
expect(page).to have_content(work_package_2.subject)
end
end
end
context "with project scope" do
it_behaves_like "paginated work package list" do
let(:path) { project_work_packages_path(project) }
let(:expected_path) { "/projects/project1/work_packages" }
end
end
context "globally" do
it_behaves_like "paginated work package list" do
let(:path) { work_packages_path }
let(:expected_path) { "/work_packages" }
end
end
end