-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathstacks_identifier_spec.rb
50 lines (41 loc) · 1.39 KB
/
stacks_identifier_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe StacksIdentifier do
let(:instance) { described_class.new druid: druid, file_name: file_name }
let(:druid) { 'nr349ct7889' }
let(:file_name) { 'nr349ct7889_00_0001.jp2' }
describe '#valid' do
subject { instance.valid? }
context 'with a valid druid' do
it { is_expected.to be true }
end
context 'with an invalid druid' do
let(:druid) { 'nr349ct788' }
it { is_expected.to be false }
end
context 'without a file_name' do
let(:file_name) { nil }
it { is_expected.to be false }
end
end
describe '#file_name_without_ext' do
subject { instance.file_name_without_ext }
it { is_expected.to eq 'nr349ct7889_00_0001' }
end
describe '#treeified_path' do
subject { instance.treeified_path }
it { is_expected.to eq 'nr/349/ct/7889/nr349ct7889_00_0001.jp2' }
end
context 'with some optional attributes' do
let(:instance) { described_class.new identifier }
let(:identifier) { 'nr349ct7889%2Fnr349ct7889_00_0001%2F!attr!%2Fversion=2'}
it 'parses out the right data' do
expect(instance.druid).to eq 'nr349ct7889'
expect(instance.file_name_without_ext).to eq 'nr349ct7889_00_0001'
expect(instance.options['version']).to eq '2'
end
it 'reserializes to the original value' do
expect(instance.to_s).to eq identifier
end
end
end