spec/unit/rack/user_spec.rb in airbrake-5.6.0 vs spec/unit/rack/user_spec.rb in airbrake-5.6.1

- old
+ new

@@ -50,28 +50,92 @@ expect(retval).to be_nil end end context "when the current_user Rails controller method is defined" do + let(:controller) { instance_double('DummyController') } + let(:env) { env_for('/', 'action_controller.instance' => controller) } + context "and it is nil" do it "returns nil" do - controller = instance_double('DummyController') - env = env_for('/', 'action_controller.instance' => controller) allow(controller).to receive(:current_user) { nil } retval = described_class.extract(env) expect(retval).to be_nil end end context "and it is not nil" do it "returns the wrapped user" do - controller = instance_double('DummyController') - env = env_for('/', 'action_controller.instance' => controller) allow(controller).to receive(:current_user) { user } retval = described_class.extract(env) expect(retval).to be_a(described_class) + end + + context "but it requires parameters" do + let(:controller) { dummy_controller.new } + subject { described_class.extract(env) } + + context ": current_user(a)" do + let(:dummy_controller) do + Class.new do + def current_user(_a) + "username" + end + end + end + + it { should be_nil } + end + + context ": current_user(a, b)" do + let(:dummy_controller) do + Class.new do + def current_user(_a, _b) + "username" + end + end + end + + it { should be_nil } + end + + context ": current_user(a, *b)" do + let(:dummy_controller) do + Class.new do + def current_user(_a, *_b) + "username" + end + end + end + + it { should be_nil } + end + + context ": current_user(a, b, *c, &d)" do + let(:dummy_controller) do + Class.new do + def current_user(_a, _b, *_c, &_d) + "username" + end + end + end + + it { should be_nil } + end + + context ": current_user(*a)" do + let(:dummy_controller) do + Class.new do + def current_user(*_a) + "username" + end + end + end + + it { should be_a(described_class) } + end end end end end