Hey Jozef,
This looks good, ACK. Please fix the 2 notes inline before pushing, though.
Thanks,
Thomas
On 04/22/2011 11:53 AM, jzigmund(a)redhat.com wrote:
From: Jozef Zigmund<jzigmund(a)redhat.com>
---
.../image_factory/deployables_controller.rb | 13 +++++++++-
.../resources/deployments_controller.rb | 2 +-
.../image_factory/deployables/_deployments.haml | 25 ++++++++++++++++++++
src/features/deployable.feature | 6 ++++
src/features/step_definitions/deployable_steps.rb | 6 ++++-
src/features/support/paths.rb | 3 ++
6 files changed, 52 insertions(+), 3 deletions(-)
create mode 100644 src/app/views/image_factory/deployables/_deployments.haml
diff --git a/src/app/controllers/image_factory/deployables_controller.rb
b/src/app/controllers/image_factory/deployables_controller.rb
index e809926..dd66e85 100644
--- a/src/app/controllers/image_factory/deployables_controller.rb
+++ b/src/app/controllers/image_factory/deployables_controller.rb
@@ -16,8 +16,11 @@ class ImageFactory::DeployablesController< ApplicationController
def show
@deployable = Deployable.find(params[:id])
@url_params = params.clone
- @tab_captions = ['Properties', 'Assemblies']
+ @tab_captions = ['Properties', 'Assemblies', 'Deployments']
@details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ if @details_tab == 'deployments'
+ @deployments = @deployable.deployments ? @deployable.deployments : nil
@deployable.deployments will always evaluate as "true" because when
there are no deployments, you'll get an empty array: []. And that
evaluates as true in ruby.
I think you can safely rewrite the line above as:
@deployments = @deployable.deployments
+ end
respond_to do |format|
format.js do
if @url_params.delete :details_pane
@@ -116,6 +119,14 @@ class ImageFactory::DeployablesController<
ApplicationController
@header = [
{ :name => "Deployable name", :sort_attr => :name }
]
+ @header_deployments = [
+ { :name => "Deployment name", :sort_attr => :name },
+ { :name => "Deployable", :sortable => false },
+ { :name => "Deployment Owner", :sort_attr =>
"owner.last_name"},
+ { :name => "Running Since", :sort_attr => :running_since },
+ { :name => "Heath Metric", :sort_attr => :health },
+ { :name => "Pool", :sort_attr => "pool.name" }
+ ]
@deployables = Deployable.paginate(:all,
:page => params[:page] || 1,
:order => (params[:order_field] || 'name') +' '+
(params[:order_dir] || 'asc')
diff --git a/src/app/controllers/resources/deployments_controller.rb
b/src/app/controllers/resources/deployments_controller.rb
index dbac19c..1c04cdc 100644
--- a/src/app/controllers/resources/deployments_controller.rb
+++ b/src/app/controllers/resources/deployments_controller.rb
@@ -34,4 +34,4 @@ class Resources::DeploymentsController< ApplicationController
{ :name => "Pool", :sort_attr => "pool.name" }
]
end
-end
\ No newline at end of file
+end
diff --git a/src/app/views/image_factory/deployables/_deployments.haml
b/src/app/views/image_factory/deployables/_deployments.haml
new file mode 100644
index 0000000..ef5b1d4
--- /dev/null
+++ b/src/app/views/image_factory/deployables/_deployments.haml
@@ -0,0 +1,25 @@
+.grid_13
+ %h2 Deployments of #{(a)deployable.name}
This should be "Deployments for ..." or "Deployments belonging to ..."
I
think.
+
+ - unless @deployments.empty?
+ - form_tag do
+ %table#deployments_table
+ = sortable_table_header @header_deployments
+ - @deployments.each do |deployment|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "deployments_selected[]", :type =>
"checkbox", :value => deployment.id, :id =>
"deployment_checkbox_#{deployment.id}", :checked => selected }
+ = link_to deployment.name, resources_deployment_path(deployment)
+ %td
+ = deployment.deployable.name
+ %td
+ = deployment.owner.login
+ %td
+ = deployment.created_at.strftime("%d-%b-%Y %H:%M:%S")
+ %td
+ TODO
+ %td
+ = deployment.pool.name
+ - else
+ No Deployments for #{(a)deployable.name}
diff --git a/src/features/deployable.feature b/src/features/deployable.feature
index fa6cf56..9d24347 100644
--- a/src/features/deployable.feature
+++ b/src/features/deployable.feature
@@ -91,3 +91,9 @@ Feature: Manage Deployables
And I press "Search"
Then I should see "first"
And I should see "second"
+
+ Scenario: Show list of deployments belongs to deployable
+ Given there is a deployable named "My"
+ And there are deployment named "My deployment" belongs to "My"
+ When I am on the deployable deployments page
+ Then I should see "My deployment"
diff --git a/src/features/step_definitions/deployable_steps.rb
b/src/features/step_definitions/deployable_steps.rb
index d4b6af6..c81ebf2 100644
--- a/src/features/step_definitions/deployable_steps.rb
+++ b/src/features/step_definitions/deployable_steps.rb
@@ -11,10 +11,14 @@ Then /^I should have a deployable named "([^"]*)"$/ do
|name|
end
Given /^there is a deployable named "([^"]*)"$/ do |name|
- Deployable.create!(:name => name)
+ @deployable = Deployable.create!(:name => name)
end
When /^I check the "([^"]*)" deployable$/ do |name|
deployable = Deployable.find_by_name(name)
check("deployable_checkbox_#{deployable.id}")
end
+
+Given /^there are deployment named "([^"]*)" belongs to
"([^"]*)"$/ do |deployment_name, deployable_name|
+ Factory(:deployment, :deployable => Deployable.find_by_name(deployable_name),
:name => deployment_name)
+end
diff --git a/src/features/support/paths.rb b/src/features/support/paths.rb
index a313aa0..b8e6e74 100644
--- a/src/features/support/paths.rb
+++ b/src/features/support/paths.rb
@@ -110,6 +110,9 @@ module NavigationHelpers
when /^(.*)'s provider account page$/
admin_provider_account_path(ProviderAccount.find_by_label($1))
+ when /the deployable deployments page/
+ image_factory_deployable_path(@deployable, :details_tab =>
'deployments')
+
when /^(.*)'s image factory deployable page$/
image_factory_deployable_path(Deployable.find_by_name($1))