spec/lib/generators/form_generator_spec.rb in rom-rails-0.3.0 vs spec/lib/generators/form_generator_spec.rb in rom-rails-0.3.1
- old
+ new
@@ -7,83 +7,137 @@
before(:each) do
prepare_destination
end
- specify "a create form" do
- run_generator ['users', '--command=create']
+ shared_examples_for "generates a base user form" do
+ it "populates a base form file" do
+ expect(destination_root).to have_structure {
+ directory 'app' do
+ directory 'forms' do
+ file 'user_form.rb' do
+ contains <<-CONTENT.strip_heredoc
+ class UserForm < ROM::Model::Form
- expect(destination_root).to have_structure {
- directory 'app' do
- directory 'forms' do
- file 'new_user_form.rb' do
- contains <<-CONTENT.strip_heredoc
- class NewUserForm < ROM::Model::Form
- commands users: :create
-
input do
set_model_name 'User'
+ # define always-present form input attributes
+ # attribute :name, String
+ end
+
+ validations do
+ relation :users
+
+ # Add invariant form validations
+ # validates :name, presence: true
+ end
+
+ end
+ CONTENT
+ end
+ end
+ end
+ }
+ end
+ end
+
+ shared_examples_for "generates a create user form" do
+ it "populates a create form file" do
+ expect(destination_root).to have_structure {
+ directory 'app' do
+ directory 'forms' do
+ file 'new_user_form.rb' do
+ contains <<-CONTENT.strip_heredoc
+ class NewUserForm < UserForm
+ commands users: :create
+
+ input do
# define form input attributes
# attribute :name, String
timestamps
end
validations do
- relation :users
-
# Add form validations
# validates :name, presence: true
end
def commit!
users.try { users.create.call(attributes) }
end
end
- CONTENT
+ CONTENT
+ end
end
end
- end
- }
+ }
+ end
end
- specify "an edit form" do
- run_generator ['users', '--command=update']
+ shared_examples_for "generates an edit user form" do
- expect(destination_root).to have_structure {
- directory 'app' do
- directory 'forms' do
- file 'edit_user_form.rb' do
- contains <<-CONTENT.strip_heredoc
- class EditUserForm < ROM::Model::Form
+ it "populates a edit form file" do
+ expect(destination_root).to have_structure {
+ directory 'app' do
+ directory 'forms' do
+ file 'edit_user_form.rb' do
+ contains <<-CONTENT.strip_heredoc
+ class EditUserForm < UserForm
commands users: :update
input do
- set_model_name 'User'
-
# define form input attributes
# attribute :name, String
timestamps :updated_at
end
validations do
- relation :users
-
# Add form validations
# validates :name, presence: true
end
def commit!
users.try { users.update.by_id(id).set(attributes) }
end
end
- CONTENT
+ CONTENT
+ end
end
end
- end
- }
+ }
+ end
end
+
+ describe "rom:form users" do
+ before do
+ run_generator ['users']
+ end
+
+ it_should_behave_like "generates a create user form"
+ it_should_behave_like "generates an edit user form"
+ end
+
+ describe "rom:form users --command=create" do
+ before do
+ run_generator ['users', '--command=create']
+ end
+
+ it_should_behave_like "generates a base user form"
+ it_should_behave_like "generates a create user form"
+ end
+
+ describe "rom:form users --command=update" do
+ before do
+ run_generator ['users', '--command=update']
+ end
+
+ it_should_behave_like "generates a base user form"
+ it_should_behave_like "generates an edit user form"
+ end
+
+
end