Sha256: 65e4658f8943ecb5ccde7ead847986fb2cbdc16b76a783620aae73df5a7f6ec4

Contents?: true

Size: 1.68 KB

Versions: 1

Compression:

Stored size: 1.68 KB

Contents

require 'rails_helper'

describe Apidoco::FolderParser do
  let(:doc) { { name: 'Create User' } }
  let(:file) do
    Tempfile.new.tap do |f|
      f.write(doc.to_json)
      f.rewind
    end
  end
  let(:directory) do
    double(basename: 'users', children: [file])
  end
  let(:folder_parser) { described_class.new(directory, parents: []) }

  after do
    file.close
    file.unlink
  end

  describe '#as_json' do
    before { allow(file).to receive(:directory?).and_return(false) }

    subject(:as_json) { folder_parser.as_json }

    describe 'is_folder' do
      it { is_expected.to include(is_folder: true) }
    end

    describe 'name' do
      it { is_expected.to include(name: 'Users') }
    end

    describe 'children' do
      it { expect(as_json[:children].first).to include(id: 'users-createuser', 'name' => 'Create User') }
    end
  end

  describe '#base_name' do
    subject(:basename) { folder_parser.basename }

    it { is_expected.to eq('Users') }
  end

  describe '#children' do
    subject(:children) { folder_parser.children }

    context 'when the child is a directory' do
      before { allow(file).to receive(:directory?).and_return(true) }

      it { expect(children.first).to be_instance_of(Apidoco::FolderParser) }
    end

    context 'when the child is a file' do
      before { allow(file).to receive(:directory?).and_return(false) }

      it { expect(children.first).to be_instance_of(Apidoco::FileParser) }
    end
  end

  describe '#published?' do
    subject(:published?) { folder_parser.published? }

    it { is_expected.to eq(true) }
  end

  describe '#sort_order' do
    subject(:sort_order) { folder_parser.sort_order }

    it { is_expected.to eq('Users') }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
apidoco-1.6.0 spec/apidoco/folder_parser_spec.rb