ACK

On 01/14/2011 12:45 PM, [email protected] wrote:
> From: Ladislav Martincik<[email protected]>
>
> ---
>   .../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")
> +    [email protected] 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:
>       #

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to