ACK
On 01/14/2011 12:45 PM, lmartinc@redhat.com wrote:
From: Ladislav Martinciklmartinc@redhat.com
.../image_factory/assemblies_controller.rb | 63 ++++++++++++++++++++ src/app/models/assembly.rb | 2 + src/app/views/image_factory/assemblies/_form.haml | 7 ++ src/app/views/image_factory/assemblies/_list.haml | 28 +++++++++ .../image_factory/assemblies/_properties.haml | 4 + src/app/views/image_factory/assemblies/edit.haml | 4 + src/app/views/image_factory/assemblies/index.haml | 3 +- src/app/views/image_factory/assemblies/new.haml | 3 + src/app/views/image_factory/assemblies/show.haml | 5 ++ src/config/routes.rb | 2 +- src/db/migrate/20110114111158_create_assemblies.rb | 13 ++++ src/features/assembly.feature | 50 ++++++++++++++++ src/features/step_definitions/assembly_steps.rb | 20 ++++++ src/features/support/paths.rb | 3 + 14 files changed, 205 insertions(+), 2 deletions(-) create mode 100644 src/app/models/assembly.rb create mode 100644 src/app/views/image_factory/assemblies/_form.haml create mode 100644 src/app/views/image_factory/assemblies/_list.haml create mode 100644 src/app/views/image_factory/assemblies/_properties.haml create mode 100644 src/app/views/image_factory/assemblies/edit.haml create mode 100644 src/app/views/image_factory/assemblies/new.haml create mode 100644 src/app/views/image_factory/assemblies/show.haml create mode 100644 src/db/migrate/20110114111158_create_assemblies.rb create mode 100644 src/features/assembly.feature create mode 100644 src/features/step_definitions/assembly_steps.rb
diff --git a/src/app/controllers/image_factory/assemblies_controller.rb b/src/app/controllers/image_factory/assemblies_controller.rb index ce67f14..6627656 100644 --- a/src/app/controllers/image_factory/assemblies_controller.rb +++ b/src/app/controllers/image_factory/assemblies_controller.rb @@ -1,6 +1,69 @@ class ImageFactory::AssembliesController< ApplicationController before_filter :require_user
before_filter :load_assemblies, :only => [:index, :show]
def index end
def show
@assembly = Assembly.find(params[:id])
@url_params = params.clone
@tab_captions = ['Properties']
@details_tab = params[:details_tab].blank? ? 'properties' : params[:details_tab]
respond_to do |format|
format.js do
if @url_params.delete :details_pane
render :partial => 'layouts/details_pane' and return
end
render :partial => @details_tab and return
end
format.html { render :action => 'show'}
end
end
def new
@assembly = Assembly.new
end
def create
@assembly = Assembly.new(params[:assembly])
if @assembly.save
flash[:notice] = "Assembly added."
redirect_to image_factory_assembly_url(@assembly)
else
render :action => :new
end
end
def edit
@assembly = Assembly.find(params[:id])
end
def update
@assembly = Assembly.find(params[:id])
if @assembly.update_attributes(params[:assembly])
flash[:notice] = "Assembly updated."
redirect_to image_factory_assembly_url(@assembly)
else
render :action => :edit
end
end
def multi_destroy
Assembly.destroy(params[:assemblies_selected])
redirect_to image_factory_assemblies_url
end
protected
def load_assemblies
@header = [
{ :name => "Assembly name", :sort_attr => :name }
]
@assemblies = Assembly.paginate(:all,
:page => params[:page] || 1,
:order => (params[:order_field] || 'name') +' '+ (params[:order_dir] || 'asc')
)
@url_params = params.clone
end end
diff --git a/src/app/models/assembly.rb b/src/app/models/assembly.rb new file mode 100644 index 0000000..5eac9de --- /dev/null +++ b/src/app/models/assembly.rb @@ -0,0 +1,2 @@ +class Assembly< ActiveRecord::Base +end diff --git a/src/app/views/image_factory/assemblies/_form.haml b/src/app/views/image_factory/assemblies/_form.haml new file mode 100644 index 0000000..39556e5 --- /dev/null +++ b/src/app/views/image_factory/assemblies/_form.haml @@ -0,0 +1,7 @@ += form.error_messages +%fieldset.clear
- = form.label :name, t(:name), :class => "grid_3 alpha"
- = form.text_field :name, :class => "grid_5"
+%fieldset.clearfix
- = form.submit "Save", :class => "submit formbutton"
- = link_to t(:cancel), image_factory_assemblies_path, :class => 'button formbutton'
diff --git a/src/app/views/image_factory/assemblies/_list.haml b/src/app/views/image_factory/assemblies/_list.haml new file mode 100644 index 0000000..f29b322 --- /dev/null +++ b/src/app/views/image_factory/assemblies/_list.haml @@ -0,0 +1,28 @@ +- form_tag do
- = link_to "Create", new_image_factory_assembly_url, :class => 'button'
- = restful_submit_tag "Delete", 'destroy', multi_destroy_image_factory_assemblies_path, 'DELETE', :id => 'delete_button'
- %table#assemblies_table
- %thead
%tr
%th
%th= link_to "Name", image_factory_assemblies_url(:sort_by => "name")
- -@assemblies.each do |assembly|
%tr
%td
%input{:name => "assemblies_selected[]", :type => "checkbox", :value => assembly.id, :id => "assembly_checkbox_#{assembly.id}" }
%td= link_to assembly.name, image_factory_assembly_path(assembly)
+:javascript
- $(document).ready(function () {
- $('#delete_button').click(function(e) {
if ($("#assemblies_table input[@type=radio]:checked").length == 0) {
alert('Please select any assembly to be deleted before clicking Delete button.');
e.preventDefault();
} else {
if (!confirm("Are you sure you want to delete this assembly?")) {
e.preventDefault();
}
}
- });
- });
diff --git a/src/app/views/image_factory/assemblies/_properties.haml b/src/app/views/image_factory/assemblies/_properties.haml new file mode 100644 index 0000000..5f91f6e --- /dev/null +++ b/src/app/views/image_factory/assemblies/_properties.haml @@ -0,0 +1,4 @@ +.grid_13
- %h2 #{@assembly.name}
- = link_to 'Edit', edit_image_factory_assembly_path(@assembly), :class => 'button'
diff --git a/src/app/views/image_factory/assemblies/edit.haml b/src/app/views/image_factory/assemblies/edit.haml new file mode 100644 index 0000000..04871c3 --- /dev/null +++ b/src/app/views/image_factory/assemblies/edit.haml @@ -0,0 +1,4 @@ +%h2 Editing Assembly: #{@assembly.name}
+- form_for @assembly, :url => image_factory_assembly_path(@assembly), :html => { :method => :put } do |f|
- = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/image_factory/assemblies/index.haml b/src/app/views/image_factory/assemblies/index.haml index 766d92c..62ccbc6 100644 --- a/src/app/views/image_factory/assemblies/index.haml +++ b/src/app/views/image_factory/assemblies/index.haml @@ -1 +1,2 @@ -image_factory/assemblies/index.haml +- content_for :list do
- = render :partial => 'list'
diff --git a/src/app/views/image_factory/assemblies/new.haml b/src/app/views/image_factory/assemblies/new.haml new file mode 100644 index 0000000..4763405 --- /dev/null +++ b/src/app/views/image_factory/assemblies/new.haml @@ -0,0 +1,3 @@ +%h2 New Assembly +- form_for @assembly, :url => image_factory_assemblies_path do |f|
- = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/image_factory/assemblies/show.haml b/src/app/views/image_factory/assemblies/show.haml new file mode 100644 index 0000000..05eeedd --- /dev/null +++ b/src/app/views/image_factory/assemblies/show.haml @@ -0,0 +1,5 @@ +- content_for :list do
- = render :partial => 'list'
+- content_for :details do
- = render :partial => 'layouts/details_pane'
diff --git a/src/config/routes.rb b/src/config/routes.rb index ad9fb67..00aaade 100644 --- a/src/config/routes.rb +++ b/src/config/routes.rb @@ -39,7 +39,7 @@ ActionController::Routing::Routes.draw do |map| end
map.namespace 'image_factory' do |r|
- r.resources :assemblies
- r.resources :assemblies, :collection => { :multi_destroy => :delete } r.resources :deployables, :collection => { :multi_destroy => :delete } r.resources :templates, :collection => {:collections => :get, :add_selected => :get, :metagroup_packages => :get, :remove_package => :get, :multi_destroy => :delete} r.resources :builds
diff --git a/src/db/migrate/20110114111158_create_assemblies.rb b/src/db/migrate/20110114111158_create_assemblies.rb new file mode 100644 index 0000000..25aaf7b --- /dev/null +++ b/src/db/migrate/20110114111158_create_assemblies.rb @@ -0,0 +1,13 @@ +class CreateAssemblies< ActiveRecord::Migration
- def self.up
- create_table :assemblies do |t|
t.string :name
t.timestamps
- end
- end
- def self.down
- drop_table :assemblies
- end
+end diff --git a/src/features/assembly.feature b/src/features/assembly.feature new file mode 100644 index 0000000..970f1b5 --- /dev/null +++ b/src/features/assembly.feature @@ -0,0 +1,50 @@ +Feature: Manage assemblies
- In order to manage my cloud infrastructure
- As a user
- I want to manage assemblies
- Background:
- Given I am an authorised user
- And I am logged in
- And I am using new UI
- Scenario: List assemblies
- Given I am on the homepage
- And there is a assembly named "MySQL cluster"
- When I go to the image factory assemblies page
- Then I should see "MySQL cluster"
- Scenario: Create a new Assembly
- Given there is a assembly named "MySQL cluster"
- And I am on the image factory assemblies page
- When I follow "Create"
- Then I should be on the new image factory assembly page
- And I should see "New Assembly"
- When I fill in "assembly[name]" with "App"
- And I press "Save"
- Then I should be on App's image factory assembly page
- And I should see "Assembly added"
- And I should have a assembly named "App"
- And I should see "App"
- Scenario: Edit a assembly
- Given there is a assembly named "MySQL cluster"
- And I am on the image factory assemblies page
- When I follow "MySQL cluster"
- And I follow "Edit"
- Then I should be on the edit image factory assembly page
- And I should see "Editing Assembly"
- When I fill in "assembly[name]" with "AppModified"
- And I press "Save"
- Then I should be on AppModified's image factory assembly page
- And I should see "Assembly updated"
- And I should have a assembly named "AppModified"
- And I should see "AppModified"
- Scenario: Delete a assembly
- Given there is a assembly named "App"
- And I am on the image factory assemblies page
- When I check the "App" assembly
- And I press "Delete"
- Then I should be on the image factory assemblies page
- And there should be no assemblies
diff --git a/src/features/step_definitions/assembly_steps.rb b/src/features/step_definitions/assembly_steps.rb new file mode 100644 index 0000000..cb9c5f0 --- /dev/null +++ b/src/features/step_definitions/assembly_steps.rb @@ -0,0 +1,20 @@ +Then /^there should be no assemblies$/ do
- Assembly.count.should == 0
+end
+Given /^there are no assemblies$/ do
- Assembly.count.should == 0
+end
+Then /^I should have a assembly named "([^"]*)"$/ do |name|
- Assembly.find_by_name(name).should_not be_nil
+end
+Given /^there is a assembly named "([^"]*)"$/ do |name|
- Assembly.create!(:name => name)
+end
+When /^I check the "([^"]*)" assembly$/ do |name|
- assembly = Assembly.find_by_name(name)
- check("assembly_checkbox_#{assembly.id}")
+end diff --git a/src/features/support/paths.rb b/src/features/support/paths.rb index c0c77dc..dbe0077 100644 --- a/src/features/support/paths.rb +++ b/src/features/support/paths.rb @@ -104,6 +104,9 @@ module NavigationHelpers when /^(.*)'s image factory deployable page$/ image_factory_deployable_path(Deployable.find_by_name($1))
- when /^(.*)'s image factory assembly page$/
image_factory_assembly_path(Assembly.find_by_name($1))
# Add more mappings here. # Here is an example that pulls values out of the Regexp: #