# frozen_string_literal: true

module PageObjects
  module Pages
    class AdminBackups < PageObjects::Pages::Base
      def visit_page
        page.visit "/admin/backups"
        self
      end

      def click_tab(tab_name)
        case tab_name
        when "settings"
          find(".admin-backups-tabs__settings").click
        when "files"
          find(".admin-backups-tabs__files").click
        when "logs"
          find(".admin-backups-tabs__logs").click
        end
      end

      def has_backup_listed?(filename)
        page.has_css?(backup_row_selector(filename))
      end

      def has_no_backup_listed?(filename)
        page.has_no_css?(backup_row_selector(filename))
      end

      def open_upload_backup_modal
        find(".admin-backups__start").click
      end

      def download_backup(filename)
        find_backup_row(filename).find(row_button_selector("download")).click
      end

      def expand_backup_row_menu(filename)
        find_backup_row(filename).find(".backup-item-menu-trigger").click
      end

      def delete_backup(filename)
        expand_backup_row_menu(filename)
        find(".backup-item-menu-content").find(row_button_selector("delete")).click
      end

      def restore_backup(filename)
        expand_backup_row_menu(filename)
        find(".backup-item-menu-content").find(row_button_selector("restore")).click
      end

      def find_backup_row(filename)
        find(backup_row_selector(filename))
      end

      def backup_row_selector(filename)
        ".admin-backups-list .backup-item-row[data-backup-filename='#{filename}']"
      end

      def row_button_selector(button_name)
        ".backup-item-row__#{button_name}"
      end

      def toggle_read_only
        find(".admin-backups__toggle-read-only").click
      end
    end
  end
end