# frozen_string_literal: true

describe EmberCli do
  describe ".ember_version" do
    it "works" do
      expect(EmberCli.ember_version).to match(/\A\d+\.\d+/)
    end
  end

  describe "cache" do
    after { EmberCli.clear_cache! }

    def simulate_request_cache_clearance
      # this method is defined by ActiveSupport::CurrentAttributes
      # and is called before/after every web request
      EmberCli.reset
    end

    context "in development" do
      before { Rails.env.stubs(:development?).returns(true) }

      it "cache works, and is cleared before/after each web request" do
        EmberCli.cache[:foo] = "bar"
        expect(EmberCli.cache[:foo]).to eq("bar")

        simulate_request_cache_clearance

        expect(EmberCli.cache[:foo]).to eq(nil)
      end
    end

    context "in production" do
      before { Rails.env.stubs(:development?).returns(false) }

      it "cache works, and can be cleared" do
        EmberCli.cache[:foo] = "bar"
        expect(EmberCli.cache[:foo]).to eq("bar")

        simulate_request_cache_clearance

        # In production, persists across requests
        expect(EmberCli.cache[:foo]).to eq("bar")

        # But still can be manually cleared
        EmberCli.clear_cache!
        expect(EmberCli.cache[:foo]).to eq(nil)
      end
    end
  end
end