summaryrefslogtreecommitdiff
path: root/spec/components/storage_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/components/storage_spec.rb')
-rw-r--r--spec/components/storage_spec.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/components/storage_spec.rb b/spec/components/storage_spec.rb
new file mode 100644
index 0000000..99131dd
--- /dev/null
+++ b/spec/components/storage_spec.rb
@@ -0,0 +1,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