# frozen_string_literal: true require 'rom/files/dataset' require 'rom/lint/spec' require 'shared/rom/files/media_files' RSpec.describe ROM::Files::Dataset do include_context 'media files' subject(:dataset) { connection.create_dataset(dir) } let(:connection) { ROM::Files::Connection.new(uri) } it_behaves_like "a rom enumerable dataset" its(:path) { is_expected.to eq uri } its(:mime_type) { is_expected.to eq nil } its(:inside_paths) { is_expected.to eq [Pathname(dir)] } its(:include_patterns) { is_expected.to eq %w[*] } its(:exclude_patterns) { is_expected.to eq [] } its(:sorting) { is_expected.to eq nil } its(:row_proc) { is_expected.to be_a Proc } its(:count) { is_expected.to eq 3 } its(:each) { is_expected.to be_a Enumerator } describe '#with' do subject(:new_dataset) { dataset.with(options) } let(:options) { {} } context '(path:)' do let(:options) { Hash[path: Pathname.pwd] } its(:path) { is_expected.to eq Pathname.pwd } end end context '#at' do subject(:new_dataset) { dataset.at('~') } its(:path) { is_expected.to eq Pathname('~') } end context '#up' do subject(:new_dataset) { dataset.up } its(:path) { is_expected.to eq uri.join('..') } end context '#dig' do subject(:new_dataset) { dataset.up.dig(dir) } its(:path) { is_expected.to eq uri.join('../media') } end end