From 336b43aaa7504d3b9bec47b3ae076160decb3233 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Thu, 9 Oct 2014 00:20:52 +0000 Subject: [PATCH] Implement Action post-initialize hook --- lib/producer/core/action.rb | 1 + spec/producer/core/action_spec.rb | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/producer/core/action.rb b/lib/producer/core/action.rb index ccc31cb..3caef17 100644 --- a/lib/producer/core/action.rb +++ b/lib/producer/core/action.rb @@ -13,6 +13,7 @@ module Producer @env = env @arguments = args @options = options + setup if respond_to? :setup end def name diff --git a/spec/producer/core/action_spec.rb b/spec/producer/core/action_spec.rb index 47d637c..2819bfc 100644 --- a/spec/producer/core/action_spec.rb +++ b/spec/producer/core/action_spec.rb @@ -2,11 +2,22 @@ require 'spec_helper' module Producer::Core describe Action do + let(:env) { double 'env'} + subject(:action) { described_class.new(env) } + it_behaves_like 'action' - describe '#name' do - subject(:action) { described_class.new(double 'env') } + describe '#initialize' do + it 'calls #setup when defined' do + action_class = Class.new(described_class) + action_class.class_eval do + define_method(:setup) { @arguments = :other_arguments } + end + expect(action_class.new(env).arguments).to eq :other_arguments + end + end + describe '#name' do it 'infers action name from class name' do expect(action.name).to eq 'action' end