Skip to content

Commit

Permalink
Add explicit sorting; update/improve service tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ssciolla committed Apr 26, 2024
1 parent d9a4f75 commit dad6c4a
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 28 deletions.
4 changes: 3 additions & 1 deletion lib/archivematica.rb
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,9 @@ def get_package_data_objects(stored_date:, package_filter: AllPackageFilter.new)
logger.info("Archivematica instance: #{@name}")
packages = @api.get_packages(location_uuid: @location_uuid, stored_date: stored_date)
filtered_packages = package_filter.filter(packages)
filtered_packages.map { |package| create_package_data_object(package) }
filtered_packages
.map { |package| create_package_data_object(package) }
.sort_by(&:stored_time)
end
end
end
55 changes: 28 additions & 27 deletions test/test_archivematica.rb
Original file line number Diff line number Diff line change
Expand Up @@ -200,20 +200,21 @@ def setup
@location_uuid = SecureRandom.uuid
@stored_date = Time.utc(2024, 2, 17)

@test_packages = [
Package.new(
uuid: "0948e2ae-eb24-4984-a71b-43bc440534d0",
path: "/storage/0948/e2ae/eb24/4984/a71b/43bc/4405/34d0/identifier-one-0948e2ae-eb24-4984-a71b-43bc440534d0",
size: 200000,
stored_date: "2024-02-18T00:00:00.000000"
),
Package.new(
uuid: "0baa468e-dd42-49ff-ba90-5dedc30c8541",
path: "/storage/0baa/468e/dd42/49ff/ba90/5ded/c30c/8541/identifier-two-0baa468e-dd42-49ff-ba90-5dedc30c8541",
size: 500000000,
stored_date: "2024-02-19T00:00:00.000000"
)
]
@first_package = Package.new(
uuid: "0948e2ae-eb24-4984-a71b-43bc440534d0",
path: "/storage/0948/e2ae/eb24/4984/a71b/43bc/4405/34d0/identifier-one-0948e2ae-eb24-4984-a71b-43bc440534d0",
size: 200000,
stored_date: "2024-02-18T00:00:00.000000"
)
@second_package = Package.new(
uuid: "0baa468e-dd42-49ff-ba90-5dedc30c8541",
path: "/storage/0baa/468e/dd42/49ff/ba90/5ded/c30c/8541/identifier-two-0baa468e-dd42-49ff-ba90-5dedc30c8541",
size: 500000000,
stored_date: "2024-02-19T00:00:00.000000"
)
# We expect packages to be in ascending order by stored date,
# but switching it here to ensure our code corrects it if another order occurs
@test_packages = [@second_package, @first_package]

@service = ArchivematicaService.new(
name: "test",
Expand All @@ -223,30 +224,31 @@ def setup
end

def test_get_package_data_objects_with_no_filter
@mock_api.expect(:get_packages, @test_packages, location_uuid: @location_uuid, stored_date: @stored_date)
@mock_api.expect(
:get_packages, @test_packages, location_uuid: @location_uuid, stored_date: @stored_date
)
package_data_objs = @service.get_package_data_objects(stored_date: @stored_date)
@mock_api.verify

# No objects are filtered out
first_package, second_package = @test_packages
expected = [
RepositoryPackageData.new(
remote_path: first_package.path,
remote_path: @first_package.path,
dir_name: "identifier-one-0948e2ae-eb24-4984-a71b-43bc440534d0",
metadata: ObjectMetadata.new(
id: first_package.uuid,
title: "#{first_package.uuid} / identifier-one",
id: @first_package.uuid,
title: "#{@first_package.uuid} / identifier-one",
creator: "Not available",
description: "Not available"
),
stored_time: Time.utc(2024, 2, 18)
),
RepositoryPackageData.new(
remote_path: second_package.path,
remote_path: @second_package.path,
dir_name: "identifier-two-0baa468e-dd42-49ff-ba90-5dedc30c8541",
metadata: ObjectMetadata.new(
id: second_package.uuid,
title: "#{second_package.uuid} / identifier-two",
id: @second_package.uuid,
title: "#{@second_package.uuid} / identifier-two",
creator: "Not available",
description: "Not available"
),
Expand All @@ -266,16 +268,15 @@ def test_get_package_data_objects_with_size_filter

# Larger object is filtered out
assert_equal 1, package_data_objs.length
assert_equal package_data_objs[0].metadata.id, @test_packages[0].uuid
assert_equal @first_package.uuid, package_data_objs[0].metadata.id
end

def test_get_package_data_object_when_exists
first_package = @test_packages[0]
@mock_api.expect(:get_package, first_package, [first_package.uuid])
package_data_obj = @service.get_package_data_object(first_package.uuid)
@mock_api.expect(:get_package, @first_package, [@first_package.uuid])
package_data_obj = @service.get_package_data_object(@first_package.uuid)
@mock_api.verify
assert package_data_obj.is_a?(RepositoryPackageData)
assert_equal first_package.path, package_data_obj.remote_path
assert_equal @first_package.path, package_data_obj.remote_path
end

def test_get_package_data_object_when_does_not_exist
Expand Down

0 comments on commit dad6c4a

Please sign in to comment.