diff --git a/lib/rage/cli.rb b/lib/rage/cli.rb index 5ff0631..6a7a3c0 100644 --- a/lib/rage/cli.rb +++ b/lib/rage/cli.rb @@ -2,6 +2,7 @@ require "thor" require "rack" +require "rage/version" module Rage class CLI < Thor @@ -115,6 +116,20 @@ def console IRB.start end + desc "middleware", "List Rack middleware stack enabled for the application" + def middleware + environment + + Rage.config.middleware.middlewares.each do |middleware| + say "use #{middleware.first.name}" + end + end + + desc "version", "Return the current version of the framework" + def version + puts Rage::VERSION + end + private def environment diff --git a/spec/rage/cli_spec.rb b/spec/rage/cli_spec.rb new file mode 100644 index 0000000..3fa0836 --- /dev/null +++ b/spec/rage/cli_spec.rb @@ -0,0 +1,38 @@ +require "rage/cli" + +RSpec.describe Rage::CLI do + subject(:rage_cli) { described_class.new } + + describe "#middleware" do + before do + allow(rage_cli).to receive(:environment) + allow(Rage.config).to receive_message_chain(:middleware, :middlewares).and_return(middlewares) + end + + context "when middleware stack is present" do + let(:middlewares) { [[Rage::FiberWrapper], [Rage::Reloader, [], nil]] } + + it "lists the middleware stack" do + expect { rage_cli.middleware }.to output("use \Rage::FiberWrapper\nuse \Rage::Reloader\n").to_stdout + end + end + + context "when middleware stack is empty" do + let(:middlewares) { [] } + + it "does not list any middleware" do + expect { rage_cli.middleware }.to output("").to_stdout + end + end + end + + describe "#version" do + before do + stub_const("Rage::VERSION", "1.0.0") + end + + it "returns the current version of the framework" do + expect { rage_cli.version }.to output("1.0.0\n").to_stdout + end + end +end