# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1

require File.expand_path("../../../../base", __FILE__)

describe Vagrant::Plugin::V2::SyncedFolder::Collection do
  include_context "unit"

  let(:folders) { described_class[
    :nfs=>
      {"/other"=>
        {:type=>:nfs, :guestpath=>"/other", :hostpath=>"/other", :disabled=>false, :__vagrantfile=>true, plugin:"someclass"},
       "/tests"=>
        {:type=>:nfs, :guestpath=>"/tests", :hostpath=>"/tests", :disabled=>false, :__vagrantfile=>true, plugin:"someclass"}},
    :virtualbox=>
      {"/vagrant"=>
        {:guestpath=>"/vagrant", :hostpath=>"/vagrant", :disabled=>false, :__vagrantfile=>true, plugin:"someotherclass"}}
  ]}
  
  describe "#types" do
    it "gets all the types of synced folders" do 
      expect(folders.types).to eq([:nfs, :virtualbox])
    end
  end

  describe "#type" do
    it "returns the plugin for a type" do 
      expect(folders.type(:nfs)).to eq("someclass")
      expect(folders.type(:virtualbox)).to eq("someotherclass")
    end
  end

  describe "to_h" do
    it "removed plugin key" do 
      original_folders = folders
      folders_h = folders.to_h
      folders_h.values.each do |v|
        v.values.each do |w|
          expect(w).not_to include(:plugin)
        end
      end
      original_folders.values.each do |v|
        v.values.each do |w|
          expect(w).to include(:plugin)
        end
      end
    end
  end
end
