require "../spec_helper"
require "../../src/parsers/config_parser"

describe GX::Parsers::ConfigParser do
  context "Initialization" do
    it "can initialize" do
      GX::Parsers::ConfigParser.new.should be_a(GX::Parsers::ConfigParser)
    end
  end

  context "Functioning" do
    it "can parse 'init' subcommand" do
      config = GX::Config.new
      parser = OptionParser.new
      breadcrumbs = GX::Utils::BreadCrumbs.new(["mfm"])

      GX::Parsers::ConfigParser.new.build(parser, breadcrumbs, config)

      # Test 'init' subcommand recognition
      config.mode.should eq(GX::Types::Mode::GlobalTui) # default
      parser.parse(["init"])
      config.mode.should eq(GX::Types::Mode::ConfigInit)

      # Test ConfigInitOptions instantiation
      config.config_init_options.should be_a(GX::Parsers::Options::ConfigInitOptions)

      # Test banner update
      # FIXME: parser.banner.should include("Create initial mfm configuration")

      # Test separator presence
      # FIXME: parser.banner.should include("Init options")
    end

    it "can parse '-p' / '--path' option for 'init' subcommand" do
      config = GX::Config.new
      parser = OptionParser.new
      breadcrumbs = GX::Utils::BreadCrumbs.new(["mfm"])

      GX::Parsers::ConfigParser.new.build(parser, breadcrumbs, config)
      parser.parse(["init", "-p", "/test/path"])
      pp config
      config.config_init_options.try do |opts|
        opts.path.should eq("/test/path")
      end

      config = GX::Config.new
      parser = OptionParser.new
      breadcrumbs = GX::Utils::BreadCrumbs.new(["mfm"])

      GX::Parsers::ConfigParser.new.build(parser, breadcrumbs, config)
      parser.parse(["init", "--path", "/test/path/2"])
      config.config_init_options.try do |opts|
        opts.path.should eq("/test/path/2")
      end
    end

    it "should include help line for 'init' subcommand" do
      config = GX::Config.new
      parser = OptionParser.new
      breadcrumbs = GX::Utils::BreadCrumbs.new(["mfm"])

      GX::Parsers::ConfigParser.new.build(parser, breadcrumbs, config)

      # Test help line presence
      # FIXME: parser.banner.should include("Run 'mfm config init --help' for more information on a command.")
    end
  end
end