Skip to content

Commit

Permalink
Use id instead of name to track selected packages
Browse files Browse the repository at this point in the history
  • Loading branch information
imobachgs committed Jan 29, 2020
1 parent 6f8429b commit 295fe49
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 19 deletions.
1 change: 1 addition & 0 deletions src/lib/registration/package_search.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ def packages

remote_packages = pkg["products"].map do |product|
RemotePackage.new(
id: pkg["id"],
name: pkg["name"],
version: pkg["version"],
release: pkg["release"],
Expand Down
8 changes: 6 additions & 2 deletions src/lib/registration/remote_package.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,24 @@ module Registration
#
# @example Find the status
class RemotePackage
attr_reader :name, :arch, :version, :release, :addon
attr_reader :id, :name, :arch, :version, :release, :addon

# @param id [Integer] Package ID
# @param name [String] Package name
# @param arch [String] Architecture
# @param version [String] Version number
# @param release [String] Release number
# @param addon [Addon] Addon which the package belongs to
def initialize(name:, arch:, version:, release:, addon:)
# rubocop:disable Metrics/ParameterLists
def initialize(id:, name:, arch:, version:, release:, addon:)
@id = id
@name = name
@arch = arch
@version = version
@release = release
@addon = addon
end
# rubocop:enable Metrics/ParameterLists

def full_version
"#{version}-#{release}"
Expand Down
7 changes: 4 additions & 3 deletions src/lib/registration/widgets/package_search.rb
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,9 @@ def search_package(text)
@search = ::Registration::PackageSearch.new(text: text)
# TRANSLATORS: searching for packages
Yast::Popup.Feedback(_("Searching..."), _("Searching for packages")) do
selected_package_names = selected_packages.map(&:name)
selected_package_ids = selected_packages.map(&:id)
@search.packages.each do |pkg|
pkg.select! if selected_package_names.include?(pkg.name)
pkg.select! if selected_package_ids.include?(pkg.id)
end
end
packages_table.change_items(@search.packages)
Expand All @@ -157,7 +157,8 @@ def search_package(text)
# @return [RemotePackage,nil]
def find_current_package
return unless search && packages_table.value
search.packages.find { |p| p.name == packages_table.value }
selected_id = packages_table.value
search.packages.find { |p| p.id == selected_id }
end

# Selects/unselects the current package for installation
Expand Down
11 changes: 2 additions & 9 deletions src/lib/registration/widgets/remote_packages_table.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,19 +52,12 @@ def header
]
end

# Returns the selected item
#
# @return [RemotePackage]
def selected_item
items.find { |i| i.name == value }
end

# Updates the information for the given package
#
# @param item [RemotePackage] Package to update
def update_item(item)
columns_for_item(item).each_with_index do |content, idx|
change_cell(Id(item.name), idx, content)
change_cell(Id(item.id), idx, content)
end
end

Expand All @@ -73,7 +66,7 @@ def update_item(item)
# @see https://www.rubydoc.info/github/yast/yast-yast2/CWM%2FTable
def format_items(items)
items.map do |item|
columns = [Id(item.name)] + columns_for_item(item)
columns = [Id(item.id)] + columns_for_item(item)
Item(*columns)
end
end
Expand Down
2 changes: 1 addition & 1 deletion test/registration/remote_package_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
describe Registration::RemotePackage do
subject(:package) do
described_class.new(
name: "foobar", arch: :x86_64, version: "1.0", release: "1", addon: nil
id: 1, name: "foobar", arch: :x86_64, version: "1.0", release: "1", addon: nil
)
end

Expand Down
8 changes: 4 additions & 4 deletions test/registration/widgets/package_search_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@

let(:packages_table) do
instance_double(
Registration::Widgets::RemotePackagesTable, value: package.name, change_items: nil,
update_item: nil, selected_item: package
Registration::Widgets::RemotePackagesTable, value: package.id,
change_items: nil, update_item: nil
)
end

Expand All @@ -38,7 +38,7 @@

let(:package) do
instance_double(
Registration::RemotePackage, name: "gnome-desktop", addon: addon,
Registration::RemotePackage, id: 1, name: "gnome-desktop", addon: addon,
selected?: false, select!: nil, installed?: installed?
)
end
Expand Down Expand Up @@ -108,7 +108,7 @@
context "and the package is already selected" do
let(:package) do
instance_double(
Registration::RemotePackage, name: "gnome-desktop", addon: addon,
Registration::RemotePackage, id: 1, name: "gnome-desktop", addon: addon,
selected?: true, unselect!: nil, installed?: false
)
end
Expand Down

0 comments on commit 295fe49

Please sign in to comment.