[PATCH aggregator] New Resources/Pools multi delete functionality
by lmartinc@redhat.com
From: Ladislav Martincik <lmartinc(a)redhat.com>
---
src/app/controllers/resources/pools_controller.rb | 5 ++++
src/app/models/pool.rb | 7 +----
src/app/views/resources/pools/_list.haml | 19 +++++++++++++++-
src/config/routes.rb | 3 +-
src/features/pool.feature | 14 ++++++++++++
src/features/step_definitions/pool_steps.rb | 23 +++++++++++++++++++++
6 files changed, 63 insertions(+), 8 deletions(-)
diff --git a/src/app/controllers/resources/pools_controller.rb b/src/app/controllers/resources/pools_controller.rb
index 02ba8f4..4e627be 100644
--- a/src/app/controllers/resources/pools_controller.rb
+++ b/src/app/controllers/resources/pools_controller.rb
@@ -61,6 +61,11 @@ class Resources::PoolsController < ApplicationController
end
end
+ def multi_destroy
+ Pool.destroy(params[:pools_selected])
+ redirect_to resources_pools_url
+ end
+
protected
def load_pools
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
index 262f744..d35f578 100644
--- a/src/app/models/pool.rb
+++ b/src/app/models/pool.rb
@@ -25,7 +25,8 @@ class Pool < ActiveRecord::Base
belongs_to :quota
belongs_to :pool_family
- has_many :images, :dependent => :destroy
+ # NOTE: Commented out because images table doesn't have pool_id foreign key?!
+ #has_many :images, :dependent => :destroy
has_many :hardware_profiles, :dependent => :destroy
validates_presence_of :name
@@ -48,10 +49,6 @@ class Pool < ActiveRecord::Base
end
end
- def images
- Image.find(:all, :conditions => {:provider_id => nil})
- end
-
def hardware_profiles
HardwareProfile.find(:all, :conditions => {:provider_id => nil})
end
diff --git a/src/app/views/resources/pools/_list.haml b/src/app/views/resources/pools/_list.haml
index 605dbd7..558ff19 100644
--- a/src/app/views/resources/pools/_list.haml
+++ b/src/app/views/resources/pools/_list.haml
@@ -1,17 +1,18 @@
- form_tag do
= link_to "New Pool", new_resources_pool_path, { :class => 'button' }
+ = restful_submit_tag "Destroy", 'destroy', multi_destroy_resources_pools_path, 'DELETE', :id => 'delete_button'
%p
Select:
= link_to "All", @url_params.merge(:select => 'all')
%span> ,
= link_to "None", @url_params.merge(:select => 'none')
- %table
+ %table#pools_table
= sortable_table_header @header
- @pools.each do |pool|
%tr
%td
- selected = @url_params[:select] == 'all'
- = check_box(:pool, "selected[#{pool.id}]", :checked => selected)
+ %input{:name => "pools_selected[]", :type => "checkbox", :value => pool.id, :id => "pool_checkbox_#{pool.id}", :checked => selected }
= link_to pool.name, resources_pool_path(pool)
%td
= pool.quota.maximum_running_instances or 'unlimited'
@@ -20,3 +21,17 @@
='%'
%td
= pool.pool_family.name
+
+:javascript
+ $(document).ready(function () {
+ $('#delete_button').click(function(e) {
+ if ($("#pools_table input[@type=radio]:checked").length == 0) {
+ alert('Please select any pool to be deleted before clicking Delete button.');
+ e.preventDefault();
+ } else {
+ if (!confirm("Are you sure you want to delete this user?")) {
+ e.preventDefault();
+ }
+ }
+ });
+ });
diff --git a/src/config/routes.rb b/src/config/routes.rb
index b513d80..6d9b5cf 100644
--- a/src/config/routes.rb
+++ b/src/config/routes.rb
@@ -33,7 +33,8 @@ ActionController::Routing::Routes.draw do |map|
# -- just remember to delete public/index.html.
map.namespace 'resources' do |r|
- r.resources :pools, :deployments
+ r.resources :pools, :collection => { :multi_destroy => :delete }
+ r.resources :deployments
r.resources :instances, :collection => {:start => :get, :stop => :get, :select_template => :get, :remove_failed => :get}, :member => {:key => :get}
end
diff --git a/src/features/pool.feature b/src/features/pool.feature
index a3329dd..d38238d 100644
--- a/src/features/pool.feature
+++ b/src/features/pool.feature
@@ -41,3 +41,17 @@ Feature: Manage Pools
When I fill in "pool[name]" with "@%&*())_@!#!"
And I press "Save"
Then I should see "Name must only contain: numbers, letters, spaces, '_' and '-'"
+
+ Scenario: Delete pools
+ Given there's no pools
+ And a pool "Amazon Startrek Pool" exists
+ And a pool "Redhat Voyager Pool" exists
+ And I am on the resources pools page
+ And there are 2 pools
+ When I check "Redhat Voyager Pool" pool
+ And I check "Amazon Startrek Pool" pool
+ And I press "Destroy"
+ Then there should only be 0 pools
+ And I should be on the resources pools page
+ And I should not see "Redhat Voyager Pool"
+ And I should not see "Amazon Startrek Pool"
diff --git a/src/features/step_definitions/pool_steps.rb b/src/features/step_definitions/pool_steps.rb
index 9f4a19c..b719f38 100644
--- a/src/features/step_definitions/pool_steps.rb
+++ b/src/features/step_definitions/pool_steps.rb
@@ -8,14 +8,37 @@ Given /^I have Pool Creator permissions on a pool named "([^\"]*)"$/ do |name|
Factory(:pool_creator_permission, :user => @user, :permission_object => @pool)
end
+Given /^there's no pools$/ do
+ Pool.delete_all
+end
+
+Given /^there are (\d+) pools$/ do |number|
+ Pool.count.should == number.to_i
+end
+
Given /^there is not a pool named "([^\"]*)"$/ do |name|
Pool.find_by_name(name).should be_nil
end
+Given /^a pool "([^"]*)" exists$/ do |pool_name|
+ pool_family = PoolFamily.find_by_name('default') || Factory(:pool_family)
+ quota = Quota.first || Factory(:quota)
+ Pool.create!(:name => pool_name, :pool_family => pool_family, :quota => quota)
+end
+
Then /^I should have a pool named "([^\"]*)"$/ do |name|
Pool.find_by_name(name).should_not be_nil
end
+When /^(?:|I )check "([^"]*)" pool$/ do |pool_name|
+ pool = Pool.find_by_name(pool_name)
+ check("pool_checkbox_#{pool.id}")
+end
+
+Then /^there should only be (\d+) pools$/ do |number|
+ Pool.count.should == number.to_i
+end
+
Then /^I should see the following:$/ do |table|
table.raw.each do |array|
array.each do |text|
--
1.7.3.2
13 years, 5 months
New UI - templates
by Jan Provazník
This patchset requires "[PATCH aggregator] request.xhr? is checked in choose_layout method" to be applied.
13 years, 5 months
[PATCH aggregator] Renaming Zones to Pool Families
by lmartinc@redhat.com
From: Ladislav Martincik <lmartinc(a)redhat.com>
---
.../admin/provider_accounts_controller.rb | 2 +-
src/app/controllers/cloud_accounts_controller.rb | 2 +-
src/app/controllers/pools_controller.rb | 6 ++--
src/app/controllers/resources/pools_controller.rb | 6 ++--
src/app/helpers/application_helper.rb | 2 +-
src/app/models/cloud_account.rb | 2 +-
src/app/models/pool.rb | 4 +-
src/app/models/zone.rb | 8 ++--
src/app/views/instances/index.haml | 4 +-
src/app/views/pools/index.haml | 2 +-
src/app/views/resources/pools/_list.haml | 2 +-
.../20110103160939_rename_zone_to_pool_family.rb | 15 +++++++++
src/features/support/hooks.rb | 2 +-
src/spec/factories/metadata_object.rb | 8 ++--
src/spec/factories/pool.rb | 2 +-
src/spec/factories/zone.rb | 4 +-
src/spec/models/metadata_object_spec.rb | 10 +++---
src/spec/models/pool_family_spec.rb | 34 ++++++++++++++++++++
src/spec/models/zone_spec.rb | 34 --------------------
src/spec/spec_helper.rb | 2 +-
20 files changed, 83 insertions(+), 68 deletions(-)
create mode 100644 src/db/migrate/20110103160939_rename_zone_to_pool_family.rb
create mode 100644 src/spec/models/pool_family_spec.rb
delete mode 100644 src/spec/models/zone_spec.rb
diff --git a/src/app/controllers/admin/provider_accounts_controller.rb b/src/app/controllers/admin/provider_accounts_controller.rb
index 9373776..2c331f7 100644
--- a/src/app/controllers/admin/provider_accounts_controller.rb
+++ b/src/app/controllers/admin/provider_accounts_controller.rb
@@ -60,7 +60,7 @@ class Admin::ProviderAccountsController < ApplicationController
render :action => 'new' and return
end
- @cloud_account.zones << Zone.default
+ @cloud_account.pool_families << PoolFamily.default
@cloud_account.save!
if @cloud_account.populate_realms
flash[:notice] = "Provider account added."
diff --git a/src/app/controllers/cloud_accounts_controller.rb b/src/app/controllers/cloud_accounts_controller.rb
index ae0a224..75a75d9 100644
--- a/src/app/controllers/cloud_accounts_controller.rb
+++ b/src/app/controllers/cloud_accounts_controller.rb
@@ -67,7 +67,7 @@ class CloudAccountsController < ApplicationController
render :action => 'new' and return
end
- @cloud_account.zones << Zone.default
+ @cloud_account.pool_families << PoolFamily.default
@cloud_account.save!
if @cloud_account.populate_realms
flash[:notice] = "Provider account added."
diff --git a/src/app/controllers/pools_controller.rb b/src/app/controllers/pools_controller.rb
index 2ba6940..47cdc77 100644
--- a/src/app/controllers/pools_controller.rb
+++ b/src/app/controllers/pools_controller.rb
@@ -33,9 +33,9 @@ class PoolsController < ApplicationController
{ :name => "Pool name", :sort_attr => :name },
{ :name => "% Quota used", :sortable => false },
{ :name => "Quota (Instances)", :sort_attr => "quotas.total_instances"},
- { :name => "Zone", :sort_attr => "zones.name" }
+ { :name => "Pool Family", :sort_attr => "pool_families.name" }
]
- @pools = Pool.paginate(:all, :include => [ :quota, :zone ],
+ @pools = Pool.paginate(:all, :include => [ :quota, :pool_family ],
:page => params[:page] || 1,
:order => (params[:order_field] || 'name') +' '+ (params[:order_dir] || 'asc')
)
@@ -102,7 +102,7 @@ class PoolsController < ApplicationController
@pool.quota_id = quota.id
- @pool.zone = Zone.default
+ @pool.pool_family = PoolFamily.default
if @pool.save
flash[:notice] = "Pool added."
redirect_to :action => 'show', :id => @pool.id
diff --git a/src/app/controllers/resources/pools_controller.rb b/src/app/controllers/resources/pools_controller.rb
index 62bb2eb..9878494 100644
--- a/src/app/controllers/resources/pools_controller.rb
+++ b/src/app/controllers/resources/pools_controller.rb
@@ -34,7 +34,7 @@ class Resources::PoolsController < ApplicationController
quota.save!
@pool.quota_id = quota.id
- @pool.zone = Zone.default
+ @pool.pool_family = PoolFamily.default
if @pool.save
flash[:notice] = "Pool added."
redirect_to :action => 'show', :id => @pool.id
@@ -68,9 +68,9 @@ class Resources::PoolsController < ApplicationController
{ :name => "Pool name", :sort_attr => :name },
{ :name => "% Quota used", :sortable => false },
{ :name => "Quota (Instances)", :sort_attr => "quotas.total_instances"},
- { :name => "Zone", :sort_attr => "zones.name" }
+ { :name => "Pool Family", :sort_attr => "pool_families.name" }
]
- @pools = Pool.paginate(:all, :include => [ :quota, :zone ],
+ @pools = Pool.paginate(:all, :include => [ :quota, :pool_family ],
:page => params[:page] || 1,
:order => (params[:order_field] || 'name') +' '+ (params[:order_dir] || 'asc')
)
diff --git a/src/app/helpers/application_helper.rb b/src/app/helpers/application_helper.rb
index 12dd62d..7a08a91 100644
--- a/src/app/helpers/application_helper.rb
+++ b/src/app/helpers/application_helper.rb
@@ -85,7 +85,7 @@ module ApplicationHelper
# Fields example:
# [
# { :name => 'Pool name', :sort_attr => 'name'},
- # { :name => 'Zone', :sortable => false},
+ # { :name => 'Pool family', :sortable => false},
# ]
def sortable_table_header(fields=[])
columns = fields.collect do |field|
diff --git a/src/app/models/cloud_account.rb b/src/app/models/cloud_account.rb
index 370f917..e4fe6c6 100644
--- a/src/app/models/cloud_account.rb
+++ b/src/app/models/cloud_account.rb
@@ -28,7 +28,7 @@ class CloudAccount < ActiveRecord::Base
belongs_to :provider
belongs_to :quota, :autosave => true
has_many :instances
- has_and_belongs_to_many :zones
+ has_and_belongs_to_many :pool_families
has_many :permissions, :as => :permission_object, :dependent => :destroy,
:include => [:role],
:order => "permissions.id ASC"
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
index cb60546..262f744 100644
--- a/src/app/models/pool.rb
+++ b/src/app/models/pool.rb
@@ -23,13 +23,13 @@ class Pool < ActiveRecord::Base
include PermissionedObject
has_many :instances, :dependent => :destroy
belongs_to :quota
- belongs_to :zone
+ belongs_to :pool_family
has_many :images, :dependent => :destroy
has_many :hardware_profiles, :dependent => :destroy
validates_presence_of :name
- validates_presence_of :zone
+ validates_presence_of :pool_family
validates_uniqueness_of :name
validates_uniqueness_of :exported_as, :if => :exported_as
diff --git a/src/app/models/zone.rb b/src/app/models/zone.rb
index bc823a6..c070ee8 100644
--- a/src/app/models/zone.rb
+++ b/src/app/models/zone.rb
@@ -19,19 +19,19 @@
# Filters added to this controller apply to all controllers in the application.
# Likewise, all the methods added will be available for all controllers.
-class Zone < ActiveRecord::Base
+class PoolFamily < ActiveRecord::Base
- DEFAULT_ZONE_KEY = "default_zone"
+ DEFAULT_POOL_FAMILY_KEY = "default_pool_family"
has_many :pools, :dependent => :destroy
has_and_belongs_to_many :cloud_accounts
validates_presence_of :name
def self.default
- MetadataObject.lookup(DEFAULT_ZONE_KEY)
+ MetadataObject.lookup(DEFAULT_POOL_FAMILY_KEY)
end
def set_as_default
- MetadataObject.set(DEFAULT_ZONE_KEY, self)
+ MetadataObject.set(DEFAULT_POOL_FAMILY_KEY, self)
end
end
diff --git a/src/app/views/instances/index.haml b/src/app/views/instances/index.haml
index 9c2efb8..e33041e 100644
--- a/src/app/views/instances/index.haml
+++ b/src/app/views/instances/index.haml
@@ -13,7 +13,7 @@
{ :name => "Pool name", :sort_attr => :name }, |
{ :name => "Alerts", :sortable => false }, |
{ :name => "Capacity", :sortable => false }, |
- { :name => "Zone", :sort_attr => "zones.name" } |
+ { :name => "Pool Family", :sort_attr => "pool_families.name" } |
] |
@@ -92,7 +92,7 @@
%td.capacity
%span.good
%td
- =pool.zone.name
+ =pool.pool_family.name
.grid_13
%h2 Instances by Pool
- @pools.each do |pool|
diff --git a/src/app/views/pools/index.haml b/src/app/views/pools/index.haml
index 61cec18..a6455d5 100644
--- a/src/app/views/pools/index.haml
+++ b/src/app/views/pools/index.haml
@@ -34,7 +34,7 @@
%td
=pool.quota.total_instances
%td
- =pool.zone.name
+ =pool.pool_family.name
:javascript
$(document).ready(function () {
diff --git a/src/app/views/resources/pools/_list.haml b/src/app/views/resources/pools/_list.haml
index b621dc2..51b25af 100644
--- a/src/app/views/resources/pools/_list.haml
+++ b/src/app/views/resources/pools/_list.haml
@@ -19,4 +19,4 @@
%td
=pool.quota.total_instances
%td
- =pool.zone.name
+ =pool.pool_family.name
diff --git a/src/db/migrate/20110103160939_rename_zone_to_pool_family.rb b/src/db/migrate/20110103160939_rename_zone_to_pool_family.rb
new file mode 100644
index 0000000..f573960
--- /dev/null
+++ b/src/db/migrate/20110103160939_rename_zone_to_pool_family.rb
@@ -0,0 +1,15 @@
+class RenameZoneToPoolFamily < ActiveRecord::Migration
+ def self.up
+ rename_table :zones, :pool_families
+ rename_table :cloud_accounts_zones, :cloud_accounts_pool_families
+ rename_column :cloud_accounts_pool_families, :zone_id, :pool_family_id
+ rename_column :pools, :zone_id, :pool_family_id
+ end
+
+ def self.down
+ rename_column :pools, :zone_id, :pool_family_id
+ rename_column :cloud_accounts_pool_families, :pool_family_id, :zone_id
+ rename_table :cloud_accounts_pool_families, :cloud_accounts_zones
+ rename_table :pool_families, :zones
+ end
+end
diff --git a/src/features/support/hooks.rb b/src/features/support/hooks.rb
index 3f112ae..c21d323 100644
--- a/src/features/support/hooks.rb
+++ b/src/features/support/hooks.rb
@@ -1,5 +1,5 @@
Before do
- @default_zone_metadata = Factory.create(:default_zone_metadata)
+ @default_pool_family_metadata = Factory.create(:default_pool_family_metadata)
@allow_self_service_logins = Factory(:metadata_object, :key => "allow_self_service_logins", :value => "true")
@default_quota = Factory(:unlimited_quota)
diff --git a/src/spec/factories/metadata_object.rb b/src/spec/factories/metadata_object.rb
index 9ac8021..fea2f88 100644
--- a/src/spec/factories/metadata_object.rb
+++ b/src/spec/factories/metadata_object.rb
@@ -9,10 +9,10 @@ Factory.define :default_logins_metadata, :parent => :metadata_object do |o|
o.value 'true'
end
-Factory.define :default_zone_metadata, :parent => :metadata_object do |o|
- o.key 'default_zone'
- o.value {Factory.create(:zone).id}
- o.object_type 'Zone'
+Factory.define :default_pool_family_metadata, :parent => :metadata_object do |o|
+ o.key 'default_pool_family'
+ o.value {Factory.create(:pool_family).id}
+ o.object_type 'PoolFamily'
end
Factory.define :default_quota_metadata, :parent => :metadata_object do |o|
diff --git a/src/spec/factories/pool.rb b/src/spec/factories/pool.rb
index 9c6b1f0..32e8c99 100644
--- a/src/spec/factories/pool.rb
+++ b/src/spec/factories/pool.rb
@@ -1,6 +1,6 @@
Factory.define :pool do |p|
p.sequence(:name) { |n| "mypool#{n}" }
- p.association :zone, :factory => :zone
+ p.association :pool_family, :factory => :pool_family
p.association :quota
end
diff --git a/src/spec/factories/zone.rb b/src/spec/factories/zone.rb
index a2d6aac..fad86d6 100644
--- a/src/spec/factories/zone.rb
+++ b/src/spec/factories/zone.rb
@@ -1,4 +1,4 @@
-Factory.define :zone do |z|
+Factory.define :pool_family do |z|
z.name 'default'
- z.description 'default zone'
+ z.description 'default pool family'
end
diff --git a/src/spec/models/metadata_object_spec.rb b/src/spec/models/metadata_object_spec.rb
index 39b7a8b..e3a74f8 100644
--- a/src/spec/models/metadata_object_spec.rb
+++ b/src/spec/models/metadata_object_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
describe MetadataObject do
before(:each) do
- @default_zone_metadata = Factory :default_zone_metadata
+ @default_pool_family_metadata = Factory :default_pool_family_metadata
end
it "lookup on nonexistent key should return nil" do
@@ -12,13 +12,13 @@ describe MetadataObject do
it "should require a valid key" do
[nil, ""].each do |invalid_value|
- @default_zone_metadata.key = invalid_value
- @default_zone_metadata.should_not be_valid
+ @default_pool_family_metadata.key = invalid_value
+ @default_pool_family_metadata.should_not be_valid
end
end
- it "default zone should return valid zone" do
- MetadataObject.lookup("default_zone").should be_a(Zone)
+ it "default pool family should return valid pool family" do
+ MetadataObject.lookup("default_pool_family").should be_a(PoolFamily)
end
it "setting string value should work" do
diff --git a/src/spec/models/pool_family_spec.rb b/src/spec/models/pool_family_spec.rb
new file mode 100644
index 0000000..1210b48
--- /dev/null
+++ b/src/spec/models/pool_family_spec.rb
@@ -0,0 +1,34 @@
+require 'spec_helper'
+
+describe PoolFamily do
+
+ before(:each) do
+ @pool = Factory :pool
+ @pool_family = @pool.pool_family
+ @cloud_account = Factory :mock_cloud_account
+ @cloud_account.pool_families << @pool_family
+ @cloud_account.save!
+ end
+
+ it "should validate default pool family" do
+ @pool_family.should be_valid
+ end
+
+ it "should require a valid name" do
+ [nil, ""].each do |invalid_value|
+ @pool_family.name = invalid_value
+ @pool_family.should_not be_valid
+ end
+ end
+
+ it "should have pool" do
+ @pool_family.pools.size.should == 1
+ @pool_family.pools[0].id.should == @pool.id
+ end
+
+ it "should have account" do
+ @pool_family.cloud_accounts.size.should == 1
+ @pool_family.cloud_accounts[0].id.should == @cloud_account.id
+ end
+
+end
diff --git a/src/spec/models/zone_spec.rb b/src/spec/models/zone_spec.rb
deleted file mode 100644
index 2ede895..0000000
--- a/src/spec/models/zone_spec.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-require 'spec_helper'
-
-describe Zone do
-
- before(:each) do
- @pool = Factory :pool
- @zone = @pool.zone
- @cloud_account = Factory :mock_cloud_account
- @cloud_account.zones << @zone
- @cloud_account.save!
- end
-
- it "should validate default zone" do
- @zone.should be_valid
- end
-
- it "should require a valid name" do
- [nil, ""].each do |invalid_value|
- @zone.name = invalid_value
- @zone.should_not be_valid
- end
- end
-
- it "should have pool" do
- @zone.pools.size.should == 1
- @zone.pools[0].id.should == @pool.id
- end
-
- it "should have account" do
- @zone.cloud_accounts.size.should == 1
- @zone.cloud_accounts[0].id.should == @cloud_account.id
- end
-
-end
diff --git a/src/spec/spec_helper.rb b/src/spec/spec_helper.rb
index f7db6ee..90f0eaf 100644
--- a/src/spec/spec_helper.rb
+++ b/src/spec/spec_helper.rb
@@ -56,7 +56,7 @@ Spec::Runner.configure do |config|
# For more information take a look at Spec::Runner::Configuration and Spec::Runner
config.before(:each, :type => :controller) do
#activate_authlogic
- @default_zone_metadata = Factory.create(:default_zone_metadata)
+ @default_pool_family_metadata = Factory.create(:default_pool_family_metadata)
end
config.after(:each, :type => :controller) do
#current_user_session.destroy
--
1.7.3.2
13 years, 5 months
[PATCH aggregator] request.xhr? is checked in choose_layout method
by Jan Provazník
From: Jan Provaznik <jprovazn(a)redhat.com>
---
src/app/controllers/application_controller.rb | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/app/controllers/application_controller.rb b/src/app/controllers/application_controller.rb
index b77fe9c..9cb9f45 100644
--- a/src/app/controllers/application_controller.rb
+++ b/src/app/controllers/application_controller.rb
@@ -37,7 +37,7 @@ class ApplicationController < ActionController::Base
rescue_from PartialSuccessError, :with => :handle_partial_success_error
def choose_layout
- return nil if params[:ajax]
+ return nil if params[:ajax] or request.xhr?
if params[:component_layout]
return (ENV["RAILS_ENV"] != "production")?'components/' << params[:component_layout]:'aggregator'
end
--
1.7.2.3
13 years, 5 months
New UI for settings
by Jan Provazník
Settings are mostly fake, this patchset only copies views into new location and fixes some problems with localization and css.
13 years, 5 months
[PATCH aggregator] Cucumber tests for Admin/Providers
by lmartinc@redhat.com
From: Ladislav Martincik <lmartinc(a)redhat.com>
---
src/features/provider.feature | 68 ++++++-----------------
src/features/step_definitions/provider_steps.rb | 5 ++
2 files changed, 23 insertions(+), 50 deletions(-)
diff --git a/src/features/provider.feature b/src/features/provider.feature
index 8cf2ccd..9e6f398 100644
--- a/src/features/provider.feature
+++ b/src/features/provider.feature
@@ -6,6 +6,7 @@ Feature: Manage Providers
Background:
Given I am an authorised user
And I am logged in
+ And I am using new UI
Scenario: List providers
Given I am on the homepage
@@ -14,7 +15,7 @@ Feature: Manage Providers
| provider1 |
| provider2 |
| provider3 |
- When I go to the providers page
+ When I go to the admin providers page
Then I should see the following:
| provider1 |
| provider2 |
@@ -22,73 +23,41 @@ Feature: Manage Providers
Scenario: Show provider details
Given there is a provider named "testprovider"
- And I am on the providers page
+ And I am on the admin providers page
When I follow "testprovider"
- Then I should see "Provider Name"
+ Then I should see "Provider name"
And I should see "Provider URL"
Scenario: Create a new Provider
- Given I am on the providers page
+ Given I am on the admin providers page
And there is not a provider named "testprovider"
- When I press "Add"
- Then I should be on the new provider page
+ When I follow "Create"
+ Then I should be on the new admin provider page
When I fill in "provider[name]" with "testprovider"
And I fill in "provider[url]" with "http://localhost:3001/api"
- And I press "add_provider"
- Then I should be on the show provider page
+ And I press "Save"
+ Then I should be on the admin providers page
And I should see "Provider added"
And I should have a provider named "testprovider"
Scenario: Test Provider Connection Successful
- Given I am on the providers page
- When I press "Add"
- Then I should be on the new provider page
+ Given I am on the admin providers page
+ When I follow "Create"
+ Then I should be on the new admin provider page
When I fill in "provider[name]" with "testprovider"
And I fill in "provider[url]" with "http://localhost:3001/api"
And I press "test_connection"
Then I should see "Successfuly Connected to Provider"
Scenario: Test Provider Connection Failure
- Given I am on the providers page
- When I press "Add"
- Then I should be on the new provider page
+ Given I am on the admin providers page
+ When I follow "Create"
+ Then I should be on the new admin provider page
When I fill in "provider[name]" with "incorrect_provider"
And I fill in "provider[url]" with "http://incorrecthost:3001/api"
And I press "test_connection"
Then I should see "Failed to Connect to Provider"
- Scenario: Test Account Connection Success
- Given I am on the homepage
- And there are these providers:
- | name |
- | provider1 |
- When I go to the providers page
- And I follow "provider1"
- And I follow "Provider Accounts"
- And I follow "Add" within "#details"
- And I fill in "cloud_account[label]" with "MockAccount"
- And I fill in "cloud_account[username]" with "mockuser"
- And I fill in "cloud_account[password]" with "mockpassword"
- And I fill in "cloud_account[account_number]" with "12345678"
- And I press "test_account"
- Then I should see "Test Connection Success: Valid Account Details"
-
- Scenario: Test Account Connection Failure
- Given I am on the homepage
- And there are these providers:
- | name |
- | provider1 |
- When I go to the providers page
- And I follow "provider1"
- And I follow "Provider Accounts"
- And I follow "Add" within "#details"
- And I fill in "cloud_account[label]" with "IncorrectAccount"
- And I fill in "cloud_account[username]" with "incorrect_user"
- And I fill in "cloud_account[password]" with "incorrect_password"
- And I fill in "cloud_account[account_number]" with "12345678"
- And I press "test_account"
- Then I should see "Test Connection Failed: Invalid Account Details"
-
Scenario: Delete a provider
Given I am on the homepage
And there is a provider named "provider1"
@@ -96,10 +65,9 @@ Feature: Manage Providers
And this provider has 5 hardware profiles
And this provider has a realm
And this provider has a cloud account
- When I go to the providers page
- And I follow "provider1"
- And I press "delete"
- Then I should see "Provider Deleted"
+ When I go to the admin providers page
+ And I check "provider1" provider
+ And I press "Delete"
And there should not exist a provider named "provider1"
And there should not be any replicated images
And there should not be any hardware profiles
diff --git a/src/features/step_definitions/provider_steps.rb b/src/features/step_definitions/provider_steps.rb
index abc4662..2673ae8 100644
--- a/src/features/step_definitions/provider_steps.rb
+++ b/src/features/step_definitions/provider_steps.rb
@@ -25,6 +25,11 @@ When /^I delete provider$/ do
click_button "Delete provider"
end
+When /^(?:|I )check "([^"]*)" provider$/ do |provider_name|
+ provider = Provider.find_by_name(provider_name)
+ check("provider_checkbox_#{provider.id}")
+end
+
Given /^there are these providers:$/ do |table|
table.hashes.each do |hash|
Factory(:mock_provider, :name => hash['name'])
--
1.7.3.2
13 years, 5 months
[PATCH aeolus 1/2] Added Tests for new UI, admin, hardware profiles
by Martyn Taylor
From: Martyn Taylor <mtaylor(a)redhat.com>
---
src/features/hardware_profile.feature | 51 ++++++++++++++++++++
.../step_definitions/hardware_profile_steps.rb | 22 ++++++++
2 files changed, 73 insertions(+), 0 deletions(-)
create mode 100644 src/features/hardware_profile.feature
create mode 100644 src/features/step_definitions/hardware_profile_steps.rb
diff --git a/src/features/hardware_profile.feature b/src/features/hardware_profile.feature
new file mode 100644
index 0000000..6f1cc81
--- /dev/null
+++ b/src/features/hardware_profile.feature
@@ -0,0 +1,51 @@
+Feature: Manage Pools
+ In order to manage my cloud infrastructure
+ As an admin
+ I want to manage Hardware Profiles
+
+ Background:
+ Given I am an authorised user
+ And I am logged in
+ And I am using new UI
+
+ Scenario: View front end hardware profiles
+ Given there are the following aggregator hardware profiles:
+ | name | memory | cpu |storage | architecture |
+ | m1-small | 1740 | 2 | 160 | i386 |
+ | m1-large | 4096 | 4 | 850 | x86_64 |
+ | m1-xlarge | 8192 | 8 | 1690 | x86_64 |
+ And I am on the the hardware profiles page
+ Then I should see the following:
+ | Hardware Profile Name | Memory | Virtual CPU | Storage | Architecture |
+ | m1-small | 1740 | 2 | 160 | i386 |
+ | m1-large | 4096 | 4 | 850 | x86_64 |
+ | m1-xlarge | 8192 | 8 | 1690 | x86_64 |
+
+ Scenario: View a Hardware Profiles Properties
+ Given there are the following aggregator hardware profiles:
+ | name | memory | cpu |storage | architecture |
+ | m1-small | 1740 | 2 | 160 | i386 |
+ | m1-large | 4096 | 4 | 850 | x86_64 |
+ | m1-xlarge | 8192 | 8 | 1690 | x86_64 |
+ And I am on the the hardware profiles page
+ When I follow "m1-small"
+ Then I should see the following:
+ | Name | Kind | Range First | Range Last | Enum Entries | Default Value | Unit |
+ | memory | fixed | n/a | n/a | n/a | 1740 | MB |
+ | cpu | fixed | n/a | n/a | n/a | 2 | count |
+ | storage | fixed | n/a | n/a | n/a | 160 | GB |
+ | architecture | fixed | n/a | n/a | n/a | i386 | label |
+
+ Scenario: View a Front End Hardware Profiles Matching Provider Hardware Profiles
+ Given there are the following aggregator hardware profiles:
+ | name | memory | cpu |storage | architecture |
+ | m1-small | 1740 | 2 | 160 | i386 |
+ And the Hardare Profile "m1-small" has the following Provider Hardware Profiles:
+ | name | memory | cpu |storage | architecture |
+ | m1-small | 1740 | 2 | 160 | i386 |
+ And I am on the hardware profiles page
+ When I follow "m1-small"
+ And I follow "Matching Provider Hardware Profiles"
+ Then I should see the following:
+ | Name | Memory | CPU | Storage | Architecture |
+ | m1-small | 1740 | 2 | 160 | i386 |
\ No newline at end of file
diff --git a/src/features/step_definitions/hardware_profile_steps.rb b/src/features/step_definitions/hardware_profile_steps.rb
new file mode 100644
index 0000000..d29d136
--- /dev/null
+++ b/src/features/step_definitions/hardware_profile_steps.rb
@@ -0,0 +1,22 @@
+Given /^there are the following aggregator hardware profiles:$/ do |table|
+ table.hashes.each do |hash|
+ create_hwp(hash)
+ end
+end
+
+Given /^the Hardare Profile "([^"]*)" has the following Provider Hardware Profiles:$/ do |name, table|
+ provider = Factory :mock_provider
+ front_end_hwp = HardwareProfile.find_by_name(name)
+ back_end_hwps = table.hashes.collect { |hash| create_hwp(hash, provider) }
+
+ front_end_hwp.provider_hardware_profiles = back_end_hwps
+ front_end_hwp.save!
+end
+
+def create_hwp(hash, provider=nil)
+ memory = Factory(:mock_hwp1_memory, :value => hash[:memory])
+ storage = Factory(:mock_hwp1_storage, :value => hash[:storage])
+ cpu = Factory(:mock_hwp1_cpu, :value => hash[:cpu])
+ arch = Factory(:mock_hwp1_arch, :value => hash[:architecture])
+ Factory(:mock_hwp1, :name => hash[:name], :memory => memory, :cpu => cpu, :storage => storage, :architecture => arch, :provider => provider)
+end
\ No newline at end of file
--
1.7.2.3
13 years, 5 months