ACK
On 10/27/2010 11:28 AM, [email protected] wrote: > From: martyntaylor<[email protected]> > > --- > src/app/controllers/settings_controller.rb | 8 +++- > src/app/models/quota.rb | 10 +++-- > src/app/views/settings/self_service.haml | 2 +- > src/features/settings.feature | 44 > +++++++++++++++++++++++ > src/features/step_definitions/settings_steps.rb | 10 +++++ > src/features/support/paths.rb | 6 +++ > 6 files changed, 73 insertions(+), 7 deletions(-) > create mode 100644 src/features/settings.feature > create mode 100644 src/features/step_definitions/settings_steps.rb > > diff --git a/src/app/controllers/settings_controller.rb > b/src/app/controllers/settings_controller.rb > index b040f7f..ae20e12 100644 > --- a/src/app/controllers/settings_controller.rb > +++ b/src/app/controllers/settings_controller.rb > @@ -53,8 +53,12 @@ class SettingsController< ApplicationController > KEYS.each do |key| > if params[key] > if key == SELF_SERVICE_DEFAULT_QUOTA > - self_service_default_quota = MetadataObject.lookup(key) > - self_service_default_quota.update_attributes(params[key]) > + @self_service_default_quota = MetadataObject.lookup(key) > + if !...@self_service_default_quota.update_attributes(params[key]) > + flash[:notice] = "Could not update the default quota" > + render :self_service > + return > + end > elsif key == SELF_SERVICE_DEFAULT_POOL > if Pool.exists?(params[key]) > MetadataObject.set(key, Pool.find(params[key])) > diff --git a/src/app/models/quota.rb b/src/app/models/quota.rb > index 83c20c4..cfc4555 100644 > --- a/src/app/models/quota.rb > +++ b/src/app/models/quota.rb > @@ -28,14 +28,16 @@ class Quota< ActiveRecord::Base > validates_numericality_of :maximum_total_instances, > :greater_than_or_equal_to => 0, > :less_than_or_equal_to => 2147483647, > - :integer_only => true, > - :allow_nil => true > + :only_integer => true, > + :allow_nil => true, > + :message => "must be a positive whole number > less than 2147483647" > > validates_numericality_of :maximum_running_instances, > :greater_than_or_equal_to => 0, > :less_than_or_equal_to => 2147483647, > - :integer_only => true, > - :allow_nil => true > + :only_integer => true, > + :allow_nil => true, > + :message => "must be a positive whole number > less than 2147483647" > > QuotaResource = Struct.new(:name, :used, :max, :available, :unit) > > diff --git a/src/app/views/settings/self_service.haml > b/src/app/views/settings/self_service.haml > index c1da0ae..8fd9950 100644 > --- a/src/app/views/settings/self_service.haml > +++ b/src/app/views/settings/self_service.haml > @@ -8,7 +8,6 @@ > > .grid_13 > = error_messages_for @parent_type > - = error_messages_for 'self_service_default_quota' > %h2 > = t('.self_service_default') > - form_for @self_service_default_quota, :url => { :action => 'update' } > do |form| > @@ -53,6 +52,7 @@ > = t('.quota') + ":" > = text_field :self_service_default_quota, :maximum_running_instances, > :class => 'grid_5' > .grid_2.la (instances) > + = form.error_message_on :maximum_running_instances, 'Maximum Running > Instances ' > %h3 POOLS > %fieldset.clearfix > %label.grid_2.alpha Permissions: > diff --git a/src/features/settings.feature b/src/features/settings.feature > new file mode 100644 > index 0000000..f41e188 > --- /dev/null > +++ b/src/features/settings.feature > @@ -0,0 +1,44 @@ > +Feature: Manage System wide Settings > + In order to manage my cloud engine > + As a user > + I want to manage system settings > + > + Background: > + Given I am an authorised user > + And I am logged in > + > + Scenario: Change the self service default quota > + Given the default quota is set to 5 > + And I am on the self service settings page > + When I fill in "self_service_default_quota[maximum_running_instances]" > with "8" > + And I press "Save" > + Then I should see "Settings Updated!" > + And the default quota should be 8 > + And I should be on the self service settings page > + > + Scenario: Invalid decimal entry for the self service default quota > + Given the default quota is set to 5 > + And I am on the self service settings page > + When I fill in "self_service_default_quota[maximum_running_instances]" > with "1.5" > + And I press "Save" > + Then I should see "Could not update the default quota" > + And the default quota should be 5 > + And I should be on the settings update page > + > + Scenario: Invalid chars entry for the self service default quota > + Given the default quota is set to 5 > + And I am on the self service settings page > + When I fill in "self_service_default_quota[maximum_running_instances]" > with "abc" > + And I press "Save" > + Then I should see "Could not update the default quota" > + And the default quota should be 5 > + And I should be on the settings update page > + > + Scenario: Invalid special chars entry for the self service default quota > + Given the default quota is set to 5 > + And I am on the self service settings page > + When I fill in "self_service_default_quota[maximum_running_instances]" > with "^&(*_!" > + And I press "Save" > + Then I should see "Could not update the default quota" > + And the default quota should be 5 > + And I should be on the settings update page > diff --git a/src/features/step_definitions/settings_steps.rb > b/src/features/step_definitions/settings_steps.rb > new file mode 100644 > index 0000000..7b1a7d7 > --- /dev/null > +++ b/src/features/step_definitions/settings_steps.rb > @@ -0,0 +1,10 @@ > +Given /^the default quota is set to (\d+)$/ do |no_instances| > + @default_quota = MetadataObject.lookup("self_service_default_quota") > + @default_quota.maximum_running_instances = no_instances > + @default_quota.save > +end > + > +Then /^the default quota should be (\d+)$/ do |no_instances| > + @default_quota.reload > + @default_quota.maximum_running_instances.should == no_instances.to_i > +end > \ No newline at end of file > diff --git a/src/features/support/paths.rb b/src/features/support/paths.rb > index b0a5f7e..fdc63f5 100644 > --- a/src/features/support/paths.rb > +++ b/src/features/support/paths.rb > @@ -74,6 +74,12 @@ module NavigationHelpers > when /the create template page/ > url_for :action => 'create', :controller => 'templates', :only_path > => true > > + when /the self service settings page/ > + url_for :action => 'self_service', :controller => 'settings', > :only_path => true > + > + when /the settings update page/ > + url_for :action => 'update', :controller => 'settings', :only_path > => true > + > # 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
