Hey Jozef,

It looks good, but I've found a few issues:


There are four trailing whitespaces, inline.


Next, I can create multiple families using the same name. I'm not sure 
it is a problem but I do find it confusing. Unless you know better, 
please fix that one, too.


Finally, there's this error:

1. Select Admin > Pool Families from the navigation
2. Click on the "default" pool family
3. In the details pane, click on the "History" tab

I'm getting this error:

     Internal Server Error
     Missing template admin/pool_families/_history.erb in view path 
app/views

The same goes for Permissions, Provider Accounts and Pools.

Please put the following files (empty if you must) into the views:

admin/pool_families/_history.haml
admin/pool_families/_permissions.haml
admin/pool_families/_provider_accounts.haml
admin/pool_families/_pools.haml


Please resend the patch after you fix these.

Thanks,
Thomas




On 01/11/2011 04:28 PM, [email protected] wrote:
> From: Jozef Zigmund<[email protected]>
>
> This patch contains updated controller for basic CRUD operations, views for 
> actions and cucumber tests.
> ---
>   .../controllers/admin/pool_families_controller.rb  |   67 
> ++++++++++++++++++++
>   src/app/controllers/admin/providers_controller.rb  |    2 +-
>   src/app/models/pool_family.rb                      |    2 +-
>   src/app/views/admin/pool_families/_form.haml       |    6 ++
>   src/app/views/admin/pool_families/_list.haml       |   23 +++++++
>   src/app/views/admin/pool_families/_properties.haml |    4 +
>   src/app/views/admin/pool_families/edit.haml        |    7 ++
>   src/app/views/admin/pool_families/index.haml       |    3 +-
>   src/app/views/admin/pool_families/new.haml         |    3 +
>   src/app/views/admin/pool_families/show.haml        |    5 ++
>   src/config/routes.rb                               |    3 +-
>   src/features/pool_family.feature                   |   47 ++++++++++++++
>   src/features/step_definitions/pool_family_steps.rb |   28 ++++++++
>   13 files changed, 196 insertions(+), 4 deletions(-)
>   create mode 100644 src/app/views/admin/pool_families/_form.haml
>   create mode 100644 src/app/views/admin/pool_families/_list.haml
>   create mode 100644 src/app/views/admin/pool_families/_properties.haml
>   create mode 100644 src/app/views/admin/pool_families/edit.haml
>   create mode 100644 src/app/views/admin/pool_families/new.haml
>   create mode 100644 src/app/views/admin/pool_families/show.haml
>   create mode 100644 src/features/pool_family.feature
>   create mode 100644 src/features/step_definitions/pool_family_steps.rb
>
> diff --git a/src/app/controllers/admin/pool_families_controller.rb 
> b/src/app/controllers/admin/pool_families_controller.rb
> index a1a3a9a..cfe7025 100644
> --- a/src/app/controllers/admin/pool_families_controller.rb
> +++ b/src/app/controllers/admin/pool_families_controller.rb
> @@ -1,6 +1,73 @@
>   class Admin::PoolFamiliesController<  ApplicationController
>     before_filter :require_user
> +  before_filter :load_pool_families, :only =>[:index,:show]
>
>     def index
>     end
> +
> +  def new
> +    @pool_family = PoolFamily.new
> +  end
> +
> +  def create
> +    @pool_family = PoolFamily.new(params[:pool_family])
> +    unless @pool_family.save
> +      flash.now[:warning] = "Pool family's creation failed."
> +      render :new and return
> +    else
> +      flash[:notice] = "Pool family was added."
> +      redirect_to admin_pool_families_path
> +    end
> +  end
> +
> +  def edit
> +    @pool_family = PoolFamily.find(params[:id])
> +  end
> +
> +  def update
> +    @pool_family = PoolFamily.find(params[:id])
> +    unless @pool_family.update_attributes(params[:pool_family])
> +      flash[:error] = "Pool Family wasn't updated!"
> +      render :action =>  'edit' and return
> +    else
> +      flash[:notice] = "Pool Family was updated!"
> +      redirect_to admin_pool_families_path
> +    end
> +  end
> +
> +  def show
> +    @pool_family = PoolFamily.find(params[:id])
> +    @url_params = params.clone
> +    @tab_captions = ['Properties', 'History', 'Permissions', 'Provider 
> Accounts', 'Pools']
> +    @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 :parial =>  @details_tab and return
> +      end
> +      format.html { render :show }
> +    end
> +  end
> +
> +  def multi_destroy
> +    PoolFamily.destroy(params[:pool_family_selected])
> +    redirect_to admin_pool_families_path
> +  end
> +
> +  protected
> +
> +  def load_pool_families
> +    @header = [{ :name =>  "Name", :sort_attr =>  :name},
> +               { :name =>  "Quota limit", :sort_attr =>  :name},
> +               { :name =>  "Quota currently in use", :sort_attr =>  :name},
> +    ]
> +    @pool_families = PoolFamily.paginate(:all,
> +                                         :page =>  params[:page] || 1,
> +                                         :order =>  ( params[:order_field] 
> || 'name' ) + ' ' + (params[:order_dir] || 'asc')
> +                                        )
> +    @url_params = params.clone
> +  end
>   end
> +

New line at EOF ^^^


> diff --git a/src/app/controllers/admin/providers_controller.rb 
> b/src/app/controllers/admin/providers_controller.rb
> index 5f2f437..aac2c1d 100644
> --- a/src/app/controllers/admin/providers_controller.rb
> +++ b/src/app/controllers/admin/providers_controller.rb
> @@ -28,7 +28,7 @@ class Admin::ProvidersController<  ApplicationController
>           end
>           render :partial =>  @details_tab and return
>         end
> -      format.html { render :action =>  'show'}
> +      format.html { render :action =>  'show' }
>       end
>     end
>
> diff --git a/src/app/models/pool_family.rb b/src/app/models/pool_family.rb
> index c070ee8..6925680 100644
> --- a/src/app/models/pool_family.rb
> +++ b/src/app/models/pool_family.rb
> @@ -20,7 +20,7 @@
>   # Likewise, all the methods added will be available for all controllers.
>
>   class PoolFamily<  ActiveRecord::Base
> -
> +  include PermissionedObject
>     DEFAULT_POOL_FAMILY_KEY = "default_pool_family"
>
>     has_many :pools,  :dependent =>  :destroy
> diff --git a/src/app/views/admin/pool_families/_form.haml 
> b/src/app/views/admin/pool_families/_form.haml
> new file mode 100644
> index 0000000..362b67c
> --- /dev/null
> +++ b/src/app/views/admin/pool_families/_form.haml
> @@ -0,0 +1,6 @@
> += form.error_message_on :name, 'Name'
> +%fieldset.clear
> +  = form.label :name,'Pool Family Name :'
> +  = form.text_field :name, :title =>  'pool_family_name', :value =>  
> @pool_family.name, :class =>  "clear grid_4 alpha"
> +%fieldset.clear
> +  = form.submit "Save",  :class =>  "submit formbutton"
> diff --git a/src/app/views/admin/pool_families/_list.haml 
> b/src/app/views/admin/pool_families/_list.haml
> new file mode 100644
> index 0000000..7c31719
> --- /dev/null
> +++ b/src/app/views/admin/pool_families/_list.haml
> @@ -0,0 +1,23 @@
> +- form_tag do
> +  = link_to "Create", new_admin_pool_family_path, :class =>  "button"
> +  = restful_submit_tag "Delete", 'destroy', 
> multi_destroy_admin_pool_families_path, 'DELETE', :id =>  'delete_button'
> +
> +  %p
> +    Select:&nbsp;
> +    = link_to "All", @url_params.merge(:select =>  'all')
> +    %span>  ,&nbsp;
> +    = link_to "None", @url_params.merge(:select =>  'none')
> +
> +  %table#pool_famlies_table
> +    = sortable_table_header @header
> +    - unless @pool_families.blank?

Trailing space at EOL ^^^

> +      - @pool_families.each do |pool_family|
> +        %tr
> +          %td
> +            - selected = @url_params[:select] == 'all'
> +            %input{:name =>  "pool_family_selected[]", :type =>  "checkbox", 
> :value =>  pool_family.id, :id =>  "pool_family_checkbox_#{pool_family.id}", 
> :checked =>  selected }
> +            = link_to pool_family.name, admin_pool_family_path(pool_family)
> +          %td
> +

Trailing whitespace ^^^

> +          %td
> +            xx %
> diff --git a/src/app/views/admin/pool_families/_properties.haml 
> b/src/app/views/admin/pool_families/_properties.haml
> new file mode 100644
> index 0000000..02d197e
> --- /dev/null
> +++ b/src/app/views/admin/pool_families/_properties.haml
> @@ -0,0 +1,4 @@
> +%h3
> +  Properties for
> +  = @pool_family.name
> += link_to "Edit", edit_admin_pool_family_path(@pool_family), {:class =>  
> 'button'}
> diff --git a/src/app/views/admin/pool_families/edit.haml 
> b/src/app/views/admin/pool_families/edit.haml
> new file mode 100644
> index 0000000..1c09438
> --- /dev/null
> +++ b/src/app/views/admin/pool_families/edit.haml
> @@ -0,0 +1,7 @@
> +%h3
> +  Editing
> +  = @pool_family.name
> +  Pool Family
> +
> +-form_for @pool_family, :url =>  admin_pool_family_path(@pool_family), :html 
> =>  { :method =>  :put } do |f|
> +  = render :partial =>  'form', :locals =>  { :form =>  f, :cancel_path =>  
> admin_providers_path }
> diff --git a/src/app/views/admin/pool_families/index.haml 
> b/src/app/views/admin/pool_families/index.haml
> index e50f43b..62ccbc6 100644
> --- a/src/app/views/admin/pool_families/index.haml
> +++ b/src/app/views/admin/pool_families/index.haml
> @@ -1 +1,2 @@
> -admin/pool_families/index.haml
> +- content_for :list do
> +  = render :partial =>  'list'
> diff --git a/src/app/views/admin/pool_families/new.haml 
> b/src/app/views/admin/pool_families/new.haml
> new file mode 100644
> index 0000000..7dbac4c
> --- /dev/null
> +++ b/src/app/views/admin/pool_families/new.haml
> @@ -0,0 +1,3 @@
> +%h2 Create a new Pool family
> +- form_for @pool_family, :url =>  admin_pool_families_path do |f|
> +  = render :partial =>  "form", :locals =>  { :form =>  f, :cancel_path =>  
> admin_pool_families_path }
> diff --git a/src/app/views/admin/pool_families/show.haml 
> b/src/app/views/admin/pool_families/show.haml
> new file mode 100644
> index 0000000..0c36221
> --- /dev/null
> +++ b/src/app/views/admin/pool_families/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 6d9b5cf..b3049f7 100644
> --- a/src/config/routes.rb
> +++ b/src/config/routes.rb
> @@ -47,12 +47,13 @@ ActionController::Routing::Routes.draw do |map|
>     map.connect '/set_layout', :controller =>  'application', :action =>  
> 'set_layout'
>
>     map.namespace 'admin' do |r|
> -    r.resources :hardware_profiles, :pool_families, :realms
> +    r.resources :hardware_profiles, :realms
>       r.resources :providers, :collection =>  { :multi_destroy =>  :delete }
>       r.resources :users, :collection =>  { :multi_destroy =>  :delete }
>       r.resources :provider_accounts, :collection =>  { :multi_destroy =>  
> :delete }
>       r.resources :roles, :collection =>  { :multi_destroy =>  :delete }
>       r.resources :settings, :collection =>  { :self_service =>  :get, 
> :general_settings =>  :get }
> +    r.resources :pool_families, :collection =>  { :multi_destroy =>  :delete 
> }
>     end
>
>     map.resources :pools
> diff --git a/src/features/pool_family.feature 
> b/src/features/pool_family.feature
> new file mode 100644
> index 0000000..64c5635
> --- /dev/null
> +++ b/src/features/pool_family.feature
> @@ -0,0 +1,47 @@
> +Feature: Pool Families
> +  In order to manage my cloud infrastructure
> +  As a user
> +  I want to manage pool families
> +
> +  Background:
> +    Given I am an authorised user
> +    And I am logged in
> +    And I am using new UI
> +
> +  Scenario: List pool families
> +    Given I am on the homepage
> +    And there are these pool families:
> +    | name      |
> +    | pool_family1 |
> +    | pool_family2 |
> +    | pool_family3 |
> +    When I go to the admin pool families page
> +    Then I should see the following:
> +    | pool_family1 |
> +    | pool_family2 |
> +    | pool_family3 |
> +
> +  Scenario: Show pool family details
> +    Given there is a pool family named "testpoolfamily"
> +    And I am on the admin pool families page
> +    When I follow "testpoolfamily"
> +    Then I should see "Name"
> +
> +  Scenario: Create a new Pool family
> +    Given I am on the admin pool families page
> +    And there is not a pool family named "testpoolfamily"
> +    When I follow "Create"
> +    Then I should be on the new admin pool family page
> +    When I fill in "pool_family[name]" with "testpoolfamily"
> +    And I press "Save"
> +    Then I should be on the admin pool families page
> +    And I should see "Pool family was added."
> +    And I should have a pool family named "testpoolfamily"
> +
> +  Scenario: Delete a pool family
> +    Given I am on the homepage
> +    And there is a pool family named "poolfamily1"
> +    When I go to the admin pool families page
> +    And I check "poolfamily1" pool family
> +    And I press "Delete"
> +    Then there should not exist a pool family named "poolfamily1"
> diff --git a/src/features/step_definitions/pool_family_steps.rb 
> b/src/features/step_definitions/pool_family_steps.rb
> new file mode 100644
> index 0000000..2de705e
> --- /dev/null
> +++ b/src/features/step_definitions/pool_family_steps.rb
> @@ -0,0 +1,28 @@
> +Given /^there are these pool families:$/ do |table|
> +  table.hashes.each do |hash|
> +    Factory(:pool_family, :name =>  hash['name'])
> +  end
> +end
> +
> +Given /^there is a pool family named "([^\"]*)"$/ do |name|
> +  @provider = Factory(:pool_family, :name =>  name)
> +end
> +
> +Given /^there is not a pool family named "([^"]*)"$/ do |name|
> +  pool_family = PoolFamily.find_by_name(name)
> +  if pool_family then pool_family.destroy end
> +end
> +
> +Then /^I should have a pool family named "([^\"]*)"$/ do |name|
> +  PoolFamily.find_by_name(name).should_not be_nil
> +end
> +
> +When /^(?:|I )check "([^"]*)" pool family$/ do |name|
> +  poolfamily = PoolFamily.find_by_name(name)
> +  check("pool_family_checkbox_#{poolfamily.id}")
> +end
> +
> +Then /^there should not exist a pool family named "([^\"]*)"$/ do |name|
> +  PoolFamily.find_by_name(name).should be_nil
> +end
> +

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

Reply via email to