# frozen_string_literal: true module PageObjects module Pages class User < PageObjects::Pages::Base def visit(user) page.visit("/u/#{user.username}") self end def find(selector) page.find(".new-user-wrapper #{selector}") end def active_user_primary_navigation find(".user-navigation-primary li a.active") end def active_user_secondary_navigation find(".user-navigation-secondary li a.active") end def has_warning_messages_path?(user) page.has_current_path?("/u/#{user.username}/messages/warnings") end def has_primary_navigation_item?(name) page.has_css?(primary_navigation_selector(name)) end def has_no_primary_navigation_item?(name) page.has_no_css?(primary_navigation_selector(name)) end def has_secondary_navigation_item?(name) page.has_css?(secondary_navigation_selector(name)) end def has_no_secondary_navigation_item?(name) page.has_no_css?(secondary_navigation_selector(name)) end def click_staff_info_warnings_link(user, warnings_count: 0) staff_counters = page.find(".staff-counters") staff_counters.find("a[href='/u/#{user.username}/messages/warnings']").click self end def expand_info_panel button = page.find("button[aria-controls='collapsed-info-panel']") button.click if button["aria-expanded"] == "false" self end def has_reviewable_flagged_posts_path?(user) params = { status: "approved", sort_order: "score", type: "ReviewableFlaggedPost", username: user.username, } page.has_current_path?("/review?#{params.to_query}") end def staff_info_flagged_posts_counter page.find(".staff-counters .flagged-posts") end def has_staff_info_flagged_posts_count?(count:) staff_info_flagged_posts_counter.text.to_i == count end def has_no_staff_info_flagged_posts_counter? page.has_no_css?(".staff-counters .flagged-posts") end private def primary_navigation_selector(name) ".new-user-wrapper .user-navigation-primary li.user-nav__#{name}" end def secondary_navigation_selector(name) ".new-user-wrapper .user-navigation-secondary li.user-nav__#{name}" end end end end