|
45 | 45 | # Set up test data with folder structure |
46 | 46 | let!(:project1_folder) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project1") } |
47 | 47 | let!(:project1_processed) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project1/processed", parent_folder: project1_folder) } |
| 48 | + let!(:project1_processed_batch) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project1/processed/batch1", parent_folder: project1_processed) } |
48 | 49 | let!(:project1_unprocessed) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project1/unprocessed", parent_folder: project1_folder) } |
| 50 | + let!(:project1_unprocessed_batch) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project1/unprocessed/batch1", parent_folder: project1_unprocessed) } |
49 | 51 |
|
50 | 52 | let!(:project2_folder) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project2") } |
51 | 53 | let!(:project2_processed) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project2/processed", parent_folder: project2_folder) } |
| 54 | + let!(:project2_processed_batch) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project2/processed/batch1", parent_folder: project2_processed) } |
52 | 55 | let!(:project2_raw) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project2/raw", parent_folder: project2_folder) } |
| 56 | + let!(:project2_raw_batch) { FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/deposit/project2/raw/batch1", parent_folder: project2_raw) } |
53 | 57 |
|
54 | 58 | # Create TIFF assets - Project 1: Equal counts (2 processed, 2 unprocessed) |
55 | 59 | let!(:project1_assets) do |
56 | 60 | [ |
57 | | - FactoryBot.create(:isilon_asset, parent_folder: project1_processed, isilon_path: "/deposit/project1/processed/image001.tiff", file_type: "TIFF", migration_status: default_migration_status), |
58 | | - FactoryBot.create(:isilon_asset, parent_folder: project1_processed, isilon_path: "/deposit/project1/processed/image002.tiff", file_type: "TIFF", migration_status: default_migration_status), |
59 | | - FactoryBot.create(:isilon_asset, parent_folder: project1_unprocessed, isilon_path: "/deposit/project1/unprocessed/image001.tiff", file_type: "TIFF", migration_status: default_migration_status), |
60 | | - FactoryBot.create(:isilon_asset, parent_folder: project1_unprocessed, isilon_path: "/deposit/project1/unprocessed/image002.tiff", file_type: "TIFF", migration_status: default_migration_status) |
| 61 | + FactoryBot.create(:isilon_asset, parent_folder: project1_processed_batch, isilon_path: "/deposit/project1/processed/batch1/image001.tiff", file_type: "TIFF", migration_status: default_migration_status), |
| 62 | + FactoryBot.create(:isilon_asset, parent_folder: project1_processed_batch, isilon_path: "/deposit/project1/processed/batch1/image002.tiff", file_type: "TIFF", migration_status: default_migration_status), |
| 63 | + FactoryBot.create(:isilon_asset, parent_folder: project1_unprocessed_batch, isilon_path: "/deposit/project1/unprocessed/batch1/image001.tiff", file_type: "TIFF", migration_status: default_migration_status), |
| 64 | + FactoryBot.create(:isilon_asset, parent_folder: project1_unprocessed_batch, isilon_path: "/deposit/project1/unprocessed/batch1/image002.tiff", file_type: "TIFF", migration_status: default_migration_status) |
61 | 65 | ] |
62 | 66 | end |
63 | 67 |
|
64 | 68 | # Create TIFF assets - Project 2: Unequal counts (1 processed, 2 raw) |
65 | 69 | let!(:project2_assets) do |
66 | 70 | [ |
67 | | - FactoryBot.create(:isilon_asset, parent_folder: project2_processed, isilon_path: "/deposit/project2/processed/scan001.tiff", file_type: "TIFF", migration_status: default_migration_status), |
68 | | - FactoryBot.create(:isilon_asset, parent_folder: project2_raw, isilon_path: "/deposit/project2/raw/scan001.tiff", file_type: "TIFF", migration_status: default_migration_status), |
69 | | - FactoryBot.create(:isilon_asset, parent_folder: project2_raw, isilon_path: "/deposit/project2/raw/scan002.tiff", file_type: "TIFF", migration_status: default_migration_status) |
| 71 | + FactoryBot.create(:isilon_asset, parent_folder: project2_processed_batch, isilon_path: "/deposit/project2/processed/batch1/scan001.tiff", file_type: "TIFF", migration_status: default_migration_status), |
| 72 | + FactoryBot.create(:isilon_asset, parent_folder: project2_raw_batch, isilon_path: "/deposit/project2/raw/batch1/scan001.tiff", file_type: "TIFF", migration_status: default_migration_status), |
| 73 | + FactoryBot.create(:isilon_asset, parent_folder: project2_raw_batch, isilon_path: "/deposit/project2/raw/batch1/scan002.tiff", file_type: "TIFF", migration_status: default_migration_status) |
70 | 74 | ] |
71 | 75 | end |
72 | 76 |
|
|
81 | 85 |
|
82 | 86 | # Project 1: 2 processed, 2 unprocessed - should mark unprocessed as "Don't migrate" |
83 | 87 | project1_unprocessed = IsilonAsset.where(isilon_path: [ |
84 | | - "/deposit/project1/unprocessed/image001.tiff", |
85 | | - "/deposit/project1/unprocessed/image002.tiff" |
| 88 | + "/deposit/project1/unprocessed/batch1/image001.tiff", |
| 89 | + "/deposit/project1/unprocessed/batch1/image002.tiff" |
86 | 90 | ]) |
87 | 91 | expect(project1_unprocessed.all? { |asset| asset.migration_status == dont_migrate_status }).to be true |
88 | 92 |
|
89 | 93 | # Project 2: 1 processed, 2 raw - should NOT change (counts don't match) |
90 | 94 | project2_raw = IsilonAsset.where(isilon_path: [ |
91 | | - "/deposit/project2/raw/scan001.tiff", |
92 | | - "/deposit/project2/raw/scan002.tiff" |
| 95 | + "/deposit/project2/raw/batch1/scan001.tiff", |
| 96 | + "/deposit/project2/raw/batch1/scan002.tiff" |
93 | 97 | ]) |
94 | 98 | expect(project2_raw.all? { |asset| asset.migration_status == default_migration_status }).to be true |
95 | 99 | end |
|
126 | 130 | it 'completes successfully but logs error and updates nothing' do |
127 | 131 | service = described_class.new(volume_name: "deposit") |
128 | 132 |
|
129 | | - # Allow all normal log messages to pass through |
130 | | - allow(service).to receive(:stdout_and_log).and_call_original |
131 | | - |
132 | | - # Expect the specific error message to be logged at least once |
133 | | - expect(service).to receive(:stdout_and_log).with( |
134 | | - "ERROR: 'Don't migrate' status not found", |
135 | | - level: :error |
136 | | - ).at_least(:once).and_call_original |
137 | | - |
138 | 133 | result = service.process |
139 | 134 |
|
140 | 135 | # Service completes successfully but doesn't update anything |
141 | 136 | expect(result.success?).to be true |
| 137 | + expect(result.tiff_comparisons_updated).to eq(1) |
142 | 138 | expect(result.migration_statuses_updated).to eq(0) |
143 | 139 | end |
144 | 140 | end |
|
226 | 222 | expect(results).not_to include(pdf_asset.isilon_path) |
227 | 223 | end |
228 | 224 |
|
229 | | - it 'filters to deposit folders' do |
| 225 | + it 'includes folders regardless of top-level prefix' do |
230 | 226 | other_folder = FactoryBot.create(:isilon_folder, volume: deposit_volume, full_path: "/other/test/processed") |
231 | 227 |
|
232 | 228 | deposit_asset = FactoryBot.create(:isilon_asset, parent_folder: test_folder, isilon_path: "/deposit/test/processed/image.tiff") |
|
236 | 232 | results = query.pluck(:isilon_path) |
237 | 233 |
|
238 | 234 | expect(results).to include(deposit_asset.isilon_path) |
239 | | - expect(results).not_to include(other_asset.isilon_path) |
| 235 | + expect(results).to include(other_asset.isilon_path) |
240 | 236 | end |
241 | 237 |
|
242 | 238 | it 'excludes scrc accessions' do |
|
0 commit comments