summaryrefslogtreecommitdiff
path: root/spec/components/storage_spec.rb
blob: 99131ddab97fca74dac51879038ca20901562b2a (about) (plain)
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
51
52
53
# frozen_string_literal: true

require_relative '../../components/storage'

RSpec.describe NanoBot::Components::Storage do
  it 'symbolizes keys' do
    expect(
      described_class.cartridges_path(
        components: { home: '/home/aqua', ENV: {}, directory?: ->(_) { true } }
      )
    ).to eq('/home/aqua/.local/share/nano-bots/cartridges')

    expect(
      described_class.cartridges_path(
        components: {
          home: '/home/aqua',
          ENV: { 'NANO_BOTS_CARTRIDGES_DIRECTORY' => '/home/aqua/my-cartridges' },
          directory?: ->(_) { true }
        }
      )
    ).to eq('/home/aqua/my-cartridges')

    expect(
      described_class.cartridges_path(
        components: {
          home: '/home/aqua',
          ENV: {
            'NANO_BOTS_CARTRIDGES_DIRECTORY' => '/home/aqua/my-cartridges',
            'NANO_BOTS_CARTRIDGES_PATH' => '/home/aqua/lime/my-cartridges'
          },
          directory?: ->(_) { true }
        }
      )
    ).to eq('/home/aqua/lime/my-cartridges:/home/aqua/my-cartridges')

    expect(
      described_class.cartridges_path(
        components: {
          home: '/home/aqua',
          ENV: {
            'NANO_BOTS_CARTRIDGES_DIRECTORY' => '/home/aqua/my-cartridges',
            'NANO_BOTS_CARTRIDGES_PATH' => '/home/aqua/lime/my-cartridges:/home/aqua/ivory/my-cartridges'
          },
          directory?: lambda do |path|
            { '/home/aqua/my-cartridges' => true,
              '/home/aqua/lime/my-cartridge' => false,
              '/home/aqua/ivory/my-cartridges' => true }[path]
          end
        }
      )
    ).to eq('/home/aqua/ivory/my-cartridges:/home/aqua/my-cartridges')
  end
end