diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 000000000..abeb42880 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,9 @@ +ROSA ABF is Copyright 2010-2012 ROSA CJSC. + +ROSA CJSC ("ROSA") distributes the ABF source code under the GNU General Public License (GPL), version 2.0 or later. + +The image and icon files in ABF are copyright ROSA CJSC ("ROSA"), but unlike the source code they are not licensed under the GPL version 2.0 or later. ROSA grants you the right to use them for testing and development purposes only, but not to use them in production (commercially or non-commercially). + +Third-party copyright in this distribution is noted where applicable. + +All rights not expressly granted are reserved. \ No newline at end of file diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 204962c53..50fc63beb 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -22,9 +22,7 @@ class GroupsController < ApplicationController end def show - @platforms = @group.platforms.paginate(:page => params[:platform_page], :per_page => 10) -# @repositories = @group.repositories.paginate(:page => params[:repository_page], :per_page => 10) - @projects = @group.projects.paginate(:page => params[:project_page], :per_page => 10) + @projects = @group.projects.paginate(:page => params[:project_page], :per_page => 10) end def new diff --git a/app/controllers/platforms_controller.rb b/app/controllers/platforms_controller.rb index 3b480c59c..69cb6ecd8 100644 --- a/app/controllers/platforms_controller.rb +++ b/app/controllers/platforms_controller.rb @@ -1,10 +1,9 @@ # -*- encoding : utf-8 -*- class PlatformsController < ApplicationController - before_filter :authenticate_user! - before_filter :find_platform, :only => [:clone, :edit, :destroy, :members] - before_filter :get_paths, :only => [:new, :create, :clone] + before_filter :authenticate_user! load_and_authorize_resource + autocomplete :user, :uname def build_all @@ -18,13 +17,10 @@ class PlatformsController < ApplicationController end def show - @platform = Platform.find params[:id], :include => :repositories - #@repositories = @platform.repositories - #@members = @platform.members.uniq + end def new - @platform = Platform.new @admin_uname = current_user.uname @admin_id = current_user.id end @@ -35,9 +31,9 @@ class PlatformsController < ApplicationController end def create - @platform = Platform.new params[:platform] @admin_id = params[:admin_id] @admin_uname = params[:admin_uname] + # FIXME: do not allow manipulate owner model, only platforms onwer_id and onwer_type @platform.owner = @admin_id.blank? ? get_owner : User.find(@admin_id) if @platform.save @@ -45,6 +41,7 @@ class PlatformsController < ApplicationController redirect_to @platform else flash[:error] = I18n.t("flash.platform.create_error") + flash[:warning] = @platform.errors.full_messages.join('. ') render :action => :new end end @@ -62,7 +59,8 @@ class PlatformsController < ApplicationController redirect_to @platform else flash[:error] = I18n.t("flash.platform.save_error") - render :action => :new + flash[:warning] = @platform.errors.full_messages.join('. ') + render :action => :edit end end @@ -127,23 +125,4 @@ class PlatformsController < ApplicationController redirect_to members_platform_url(@platform) end - protected - def get_paths - if params[:user_id] - @user = User.find params[:user_id] - @platforms_path = user_platforms_path @user - @new_platform_path = new_user_platform_path @user - elsif params[:group_id] - @group = Group.find params[:group_id] - @platforms_path = group_platforms_path @group - @new_platform_path = new_group_platform_path @group - else - @platforms_path = platforms_path - @new_platform_path = new_platform_path - end - end - - def find_platform - @platform = Platform.find params[:id] - end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index ef68a1d8a..bd3b6b3a6 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -44,6 +44,7 @@ class ProjectsController < ApplicationController else @project.save flash[:error] = t('flash.project.save_error') + flash[:warning] = @project.errors.full_messages.join('. ') render :action => :edit end end diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 1e746991d..02cc84828 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -11,11 +11,7 @@ class RepositoriesController < ApplicationController load_and_authorize_resource :repository, :through => :platform, :shallow => true def index - if params[:platform_id] - @repositories = Platform.find(params[:platform_id]).repositories.paginate(:page => params[:page]) - else - @repositories = Repository.paginate(:page => params[:page]) - end + @repositories = @repositories.paginate(:page => params[:page]) end def show @@ -44,6 +40,7 @@ class RepositoriesController < ApplicationController redirect_to @repositories_path else flash[:error] = t('flash.repository.save_error') + flash[:warning] = @repository.errors.full_messages.join('. ') render :action => :new end end diff --git a/app/helpers/platforms_helper.rb b/app/helpers/platforms_helper.rb index deebfa87e..fffc69c94 100644 --- a/app/helpers/platforms_helper.rb +++ b/app/helpers/platforms_helper.rb @@ -4,4 +4,10 @@ module PlatformsHelper return "" unless platform return platform.released ? '/update' : '/release' end + + def platfrom_printed_name(platform) + return "" unless platform + platform.released? ? "#{platform.name} #{I18n.t("layout.platforms.released_suffix")}" : platform.name + end + end diff --git a/app/models/group.rb b/app/models/group.rb index b0a46de38..fc01c4763 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -8,7 +8,6 @@ class Group < ActiveRecord::Base has_many :members, :through => :objects, :source => :object, :source_type => 'User', :autosave => true has_many :projects, :through => :targets, :source => :target, :source_type => 'Project', :autosave => true - has_many :platforms, :through => :targets, :source => :target, :source_type => 'Platform', :autosave => true has_many :own_projects, :as => :owner, :class_name => 'Project', :dependent => :destroy has_many :own_platforms, :as => :owner, :class_name => 'Platform', :dependent => :destroy diff --git a/app/models/platform.rb b/app/models/platform.rb index 93c52d9b6..03d749c15 100644 --- a/app/models/platform.rb +++ b/app/models/platform.rb @@ -12,16 +12,18 @@ class Platform < ActiveRecord::Base has_many :relations, :as => :target, :dependent => :destroy has_many :objects, :as => :target, :class_name => 'Relation', :dependent => :destroy has_many :members, :through => :objects, :source => :object, :source_type => 'User' - has_many :groups, :through => :objects, :source => :object, :source_type => 'Group' validates :description, :presence => true + validates :visibility, :presence => true, :inclusion => {:in => VISIBILITIES} validates :name, :uniqueness => {:case_sensitive => false}, :presence => true, :format => { :with => /^[a-zA-Z0-9_\-]+$/ } validates :distrib_type, :presence => true, :inclusion => {:in => APP_CONFIG['distr_types']} before_create :create_directory, :if => lambda {Thread.current[:skip]} # TODO remove this when core will be ready before_create :xml_rpc_create, :unless => lambda {Thread.current[:skip]} before_destroy :xml_rpc_destroy -# before_update :check_freezing + + after_update :freeze_platform + after_create lambda { mount_directory_for_rsync unless hidden? } after_destroy lambda { umount_directory_for_rsync unless hidden? } after_update :update_owner_relation @@ -34,7 +36,10 @@ class Platform < ActiveRecord::Base scope :main, where(:platform_type => 'main') scope :personal, where(:platform_type => 'personal') - #attr_accessible :visibility + attr_accessible :owner, :visibility, :description, :released #, :owner_id, :owner_type + + attr_accessible :name, :distrib_type, :parent_platform_id, :platform_type + attr_readonly :name, :distrib_type, :parent_platform_id, :platform_type include Modules::Models::Owner @@ -111,10 +116,6 @@ class Platform < ActiveRecord::Base with_skip {c.save} and c.clone_relations(self) and c.delay.xml_rpc_clone end end - - def name - released? ? "#{self[:name]} #{I18n.t("layout.platforms.released_suffix")}" : self[:name] - end def change_visibility if !self.hidden? @@ -204,9 +205,10 @@ class Platform < ActiveRecord::Base end end - def check_freezing - if released_changed? - BuildServer.freeze_platform self.name - end + def freeze_platform + if released_changed? && released == true + result = BuildServer.freeze(name) + raise "Failed freeze platform #{name} with code #{result}" if result != BuildServer::SUCCESS + end end end diff --git a/app/views/platforms/_list.html.haml b/app/views/platforms/_list.html.haml index 192c58690..5579856a8 100644 --- a/app/views/platforms/_list.html.haml +++ b/app/views/platforms/_list.html.haml @@ -7,22 +7,6 @@ - @platforms.each do |platform| %tr{:class => cycle("odd", "even")} %td - = link_to platform.name, platform_path(platform) + = link_to platfrom_printed_name(platform), platform_path(platform) %td = platform.distrib_type - --#%table.table - %tr - %th.first= t("activerecord.attributes.platform.name") - %th.first= t("activerecord.attributes.platform.distrib_type") - %th.last   - - @platforms.each do |platform| - %tr{:class => cycle("odd", "even")} - %td - = link_to platform.name, platform_path(platform) - %td - = platform.distrib_type - %td.last - = link_to t("layout.show"), platform_path(platform) - | - = link_to t("layout.delete"), platform_path(platform), :method => :delete, :confirm => t("layout.platforms.confirm_delete") if can? :destroy, platform diff --git a/app/views/platforms/_submenu.html.haml b/app/views/platforms/_submenu.html.haml index ebe480d7c..002546ebf 100644 --- a/app/views/platforms/_submenu.html.haml +++ b/app/views/platforms/_submenu.html.haml @@ -1,5 +1,5 @@ - content_for :submenu do - act = action_name.to_sym; contr = controller_name.to_sym - .left= @platform.name + .left= platfrom_printed_name(@platform) %nav %ul diff --git a/app/views/platforms/clone.html.haml b/app/views/platforms/clone.html.haml index 423e4d407..dcbb6dd7b 100644 --- a/app/views/platforms/clone.html.haml +++ b/app/views/platforms/clone.html.haml @@ -13,33 +13,5 @@ .button_block = submit_tag t("layout.clone") - -#%input.button{:type => "submit", :class => "button"} - -#= image_tag("choose.png", :alt => t("layout.save")) - -#= t("layout.clone") %span.text_button_padding= t("layout.or") - = link_to t("layout.cancel"), @platforms_path, :class => "button" --#.block - .secondary-navigation - %ul.wat-cf - %li.first= link_to "#{t("layout.platforms.list")}", @platforms_path - %li= link_to "#{t("layout.platforms.new")}", @new_platform_path - %li.active= link_to "#{t("layout.platforms.clone")}", clone_platform_path(@platfrom) - .content - %h2.title - = t("layout.platforms.clone_header") - .inner - = form_for @cloned, :url => make_clone_platform_path(@platform), :html => { :class => :form } do |f| - .group - = f.label :name, :class => :label - = f.text_field :name, :class => 'text_field' - - .group - = f.label :description, :class => :label - = f.text_field :description, :class => 'text_field' - - .group.navform.wat-cf - %button.button{:type => "submit"} - = image_tag("choose.png", :alt => t("layout.save")) - = t("layout.clone") - %span.text_button_padding= t("layout.or") - = link_to t("layout.cancel"), @platforms_path, :class => "text_button_padding link_button" + = link_to t("layout.cancel"), platform_path(@platform), :class => "button" \ No newline at end of file diff --git a/app/views/platforms/edit.html.haml b/app/views/platforms/edit.html.haml index 0020863c3..ba64a2fac 100644 --- a/app/views/platforms/edit.html.haml +++ b/app/views/platforms/edit.html.haml @@ -10,19 +10,4 @@ .leftside = t("layout.platforms.delete_warning") .rightside - = link_to t("layout.delete"), platform_path(@platform), :method => :delete, :confirm => t("layout.platforms.confirm_delete"), :class => 'button' - .both - --#.block - .secondary-navigation - %ul.wat-cf - %li.first= link_to t("layout.platforms.list"), platforms_path - %li= link_to t("layout.platforms.new"), new_platform_path - %li.active= link_to t("layout.platforms.edit"), edit_platform_path - .content - %h2.title - = t("layout.platforms.edit_header") - .inner - = form_for @platform, :url => platform_path(@platform), :html => { :class => :form } do |f| - = render :partial => "form", :locals => {:f => f} --# content_for :sidebar, render(:partial => 'sidebar') + = link_to t("layout.delete"), platform_path(@platform), :method => :delete, :confirm => t("layout.platforms.confirm_delete"), :class => 'button' \ No newline at end of file diff --git a/app/views/platforms/index.html.haml b/app/views/platforms/index.html.haml index 2f9a2f312..9d3b95c9a 100644 --- a/app/views/platforms/index.html.haml +++ b/app/views/platforms/index.html.haml @@ -1,3 +1,4 @@ -= link_to title(t "layout.platforms.new"), new_platform_path, :class => 'button' if can? :create, Platform +-set_meta_tags :title => t('layout.platforms.list_header') += link_to t("layout.platforms.new"), new_platform_path, :class => 'button' if can? :create, Platform = render :partial => 'platforms/list', :object => @platforms = will_paginate @platforms diff --git a/app/views/platforms/new.html.haml b/app/views/platforms/new.html.haml index 26bf12e77..a88430eba 100644 --- a/app/views/platforms/new.html.haml +++ b/app/views/platforms/new.html.haml @@ -6,11 +6,11 @@ -#.block .secondary-navigation %ul.wat-cf - %li.first= link_to "#{t("layout.platforms.list")}", @platforms_path - %li.active= link_to "#{t("layout.platforms.new")}", @new_platform_path + %li.first= link_to "#{t("layout.platforms.list")}", platforms_path + %li.active= link_to "#{t("layout.platforms.new")}", new_platform_path .content %h2.title = t("layout.platforms.new_header") .inner - = form_for :platform, :url => @platforms_path, :html => { :class => :form } do |f| + = form_for :platform, :url => platforms_path, :html => { :class => :form } do |f| = render :partial => "form", :locals => {:f => f} diff --git a/app/views/platforms/show.html.haml b/app/views/platforms/show.html.haml index 36665b499..7deb4e467 100644 --- a/app/views/platforms/show.html.haml +++ b/app/views/platforms/show.html.haml @@ -32,127 +32,7 @@ .buttons_block - if can? :build_all, @platform = link_to t("layout.platforms.build_all"), build_all_platform_path(@platform), :confirm => I18n.t("layout.confirm"), :method => :post, :class => "button left_floated" - = link_to "Клонировать", clone_platform_path(@platform), :class => "button left_floated" if can? :clone, @platform - .both + = link_to I18n.t("layout.platforms.clone"), clone_platform_path(@platform), :class => "button left_floated" if can? :clone, @platform - if @platform.platform_type == 'personal' and @platform.visibility == 'open' - = render :partial => 'connection_info' --#.block - .secondary-navigation - %ul.wat-cf - %li.first= link_to t("layout.platforms.list"), platforms_path - %li= link_to t("layout.platforms.new"), new_platform_path if can? :create, Platform - %li.active= link_to t("layout.platforms.show"), platform_path - %li= link_to t("layout.platforms.private_users"), platform_private_users_path(@platform) - .content - .inner - %p - %b - = t("activerecord.attributes.platform.name") - \: - = @platform.name - %p - %b - = t("activerecord.attributes.platform.description") - \: - = @platform.description - - if @platform.parent - %p - %b - = t("activerecord.attributes.platform.parent") - \: - - if @platform.parent - = link_to @platform.parent.description, platform_path(@platform.parent) - %p - %b - = t('layout.platforms.location') - \: - = @platform.path - - %p - %b - = t('layout.platforms.owner') - \: - = link_to @platform.owner.try(:name), url_for(@platform.owner) - - %p - %b - = t('layout.platforms.visibility') - \: - = @platform.visibility - - %p - %b - = t('layout.platforms.platform_type') - \: - = @platform.platform_type - - %p - %b - = t('layout.platforms.distrib_type') - \: - = @platform.distrib_type - - - .wat-cf - -#= link_to image_tag("code.png", :alt => t("layout.edit")) + " " + t("layout.edit"), edit_platform_path(@platform), :class => "button" - = link_to image_tag("x.png", :alt => t("layout.delete")) + " " + t("layout.delete"), platform_path(@platform), :method => "delete", :class => "button", :confirm => t("layout.platforms.confirm_delete") if can? :delete, @platform - - if @platform.released? - = link_to t("layout.platforms.unfreeze"), unfreeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_unfreeze"), :method => :post, :class => "button" if can? :unfreeze, @platform - - else - = link_to t("layout.platforms.freeze"), freeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_freeze"), :method => :post, :class => "button" if can? :freeze, @platform - = link_to "Клонировать", clone_platform_path(@platform), :class => "button" if can? :clone, @platform - = link_to t("layout.platforms.build_all"), build_all_platform_path(@platform), :confirm => I18n.t("layout.confirm"), :method => :post, :class => "button" if can? :build_all, @platform - = link_to t("layout.platforms.edit"), edit_platform_path(@platform), :class => "button" if can? :edit, @platform - --#%a{ :name => "repositories" } --#.block - .secondary-navigation - %ul.wat-cf - %li.first.active= link_to t("layout.repositories.list"), platform_path(@platform) + "#repositories" - %li= link_to t("layout.repositories.new"), new_platform_repository_path(@platform) if can? :create, Repository.build_stub(@platform) - .content - %h2.title - = t("layout.repositories.list_header") - .inner - %table.table - %tr - %th.first= t("activerecord.attributes.repository.description") - %th.last   - - @platform.repositories.recent.each do |repository| - %tr{:class => cycle("odd", "even")} - %td - = link_to repository.description, platform_repository_path(@platform, repository) - %td.last - = link_to t("layout.show"), platform_repository_path(@platform, repository) - | - = link_to t("layout.delete"), platform_repository_path(@platform, repository), :method => :delete, :confirm => t("layout.repositories.confirm_delete") if can? :destroy, @platform - .actions-bar.wat-cf - .actions - --#%a{ :name => "producs" } --#.block - .secondary-navigation - %ul.wat-cf - %li.first.active= link_to t("layout.products.list"), platform_path(@platform) + "#products" - %li= link_to t("layout.products.new"), new_platform_product_path(@platform) if can? :create, Product.new(:platform_id => @platform.id) - .content - %h2.title - = t("layout.products.list_header") - .inner - %table.table - %tr - %th.first= t("activerecord.attributes.product.name") - %th.last   - - @platform.products.recent.each do |product| - %tr{:class => cycle("odd", "even")} - %td - = link_to product.name, [@platform, product] - %td.last - = link_to t("layout.edit"), edit_platform_product_path(@platform, product) if can? :update, product - | - = link_to t("layout.delete"), platform_product_path(@platform, product), :method => :delete, :confirm => t("layout.products.confirm_delete") if can? :destroy, product - =# (product.can_clone? ? "| #{link_to t("layout.products.clone"), clone_platform_product_path(@platform, product)}" : "").html_safe - .actions-bar.wat-cf - .actions --# content_for :sidebar, render(:partial => 'sidebar') + = render :partial => 'connection_info' \ No newline at end of file diff --git a/db/migrate/20120331180541_customize_platform.rb b/db/migrate/20120331180541_customize_platform.rb new file mode 100644 index 000000000..004cf3f4c --- /dev/null +++ b/db/migrate/20120331180541_customize_platform.rb @@ -0,0 +1,19 @@ +class CustomizePlatform < ActiveRecord::Migration + def self.up + change_column_null :platforms, :name, false + change_column_null :platforms, :distrib_type, false + change_column_null :platforms, :platform_type, false + change_column_null :platforms, :released, false + change_column_null :platforms, :visibility, false + add_index "platforms", ["name"], :unique => true, :case_sensitive => false + end + + def self.down + change_column_null :platforms, :name, true + change_column_null :platforms, :distrib_type, true + change_column_null :platforms, :platform_type, true + change_column_null :platforms, :released, true + change_column_null :platforms, :visibility, true + remove_index "platforms", ["name"] + end +end \ No newline at end of file diff --git a/db/schema.rb b/db/schema.rb index 337970d56..42efaa290 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,14 +11,14 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120330201229) do +ActiveRecord::Schema.define(:version => 20120331180541) do create_table "activity_feeds", :force => true do |t| t.integer "user_id", :null => false t.string "kind" t.text "data" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end create_table "arches", :force => true do |t| @@ -179,18 +179,20 @@ ActiveRecord::Schema.define(:version => 20120330201229) do create_table "platforms", :force => true do |t| t.string "description" - t.string "name" + t.string "name", :null => false t.integer "parent_platform_id" t.datetime "created_at" t.datetime "updated_at" - t.boolean "released", :default => false + t.boolean "released", :default => false, :null => false t.integer "owner_id" t.string "owner_type" - t.string "visibility", :default => "open" - t.string "platform_type", :default => "main" - t.string "distrib_type" + t.string "visibility", :default => "open", :null => false + t.string "platform_type", :default => "main", :null => false + t.string "distrib_type", :null => false end + add_index "platforms", ["name"], :name => "index_platforms_on_name", :unique => true, :case_sensitive => false + create_table "private_users", :force => true do |t| t.integer "platform_id" t.string "login" @@ -332,16 +334,16 @@ ActiveRecord::Schema.define(:version => 20120330201229) do t.string "name" t.string "email", :default => "", :null => false t.string "encrypted_password", :limit => 128, :default => "", :null => false + t.string "password_salt", :default => "", :null => false t.string "reset_password_token" t.datetime "remember_created_at" t.datetime "created_at" t.datetime "updated_at" - t.text "ssh_key" t.string "uname" t.string "role" t.string "language", :default => "en" - t.datetime "reset_password_sent_at" t.integer "own_projects_count", :default => 0, :null => false + t.datetime "reset_password_sent_at" t.text "professional_experience" t.string "site" t.string "company" diff --git a/lib/modules/models/personal_repository.rb b/lib/modules/models/personal_repository.rb index d1a7f008e..f9960dc5c 100644 --- a/lib/modules/models/personal_repository.rb +++ b/lib/modules/models/personal_repository.rb @@ -9,7 +9,7 @@ module Modules end def create_personal_repository - pl = platforms.build + pl = own_platforms.build pl.owner = self pl.name = "#{self.uname}_personal" pl.description = "#{self.uname}_personal" diff --git a/spec/controllers/platforms_controller_spec.rb b/spec/controllers/platforms_controller_spec.rb index 285a8a491..62136e9ae 100644 --- a/spec/controllers/platforms_controller_spec.rb +++ b/spec/controllers/platforms_controller_spec.rb @@ -88,7 +88,6 @@ describe PlatformsController do it_should_behave_like 'platform owner' - it 'should create platform with mentioned owner if owner id present' do post :create, @create_params.merge({:admin_id => @user.id, :admin_uname => @user.uname}) Platform.last.owner.id.should eql(@user.id) diff --git a/spec/models/platform_spec.rb b/spec/models/platform_spec.rb index 1000cd241..bb780e03f 100644 --- a/spec/models/platform_spec.rb +++ b/spec/models/platform_spec.rb @@ -2,26 +2,46 @@ require 'spec_helper' describe Platform do - before(:each) do + before(:all) do stub_rsync_methods Platform.delete_all + User.delete_all + FileUtils.rm_rf(APP_CONFIG['root_path']) + # Need for validate_uniqueness_of check + FactoryGirl.create(:platform) + end + + it { should belong_to(:owner) } + it { should have_many(:members)} + it { should have_many(:repositories)} + it { should have_many(:products)} + + it { should validate_presence_of(:name)} + it { should validate_uniqueness_of(:name).case_insensitive } + it { should validate_format_of(:name).with('Basic_platfrom-name-1234') } + it { should validate_format_of(:name).not_with('.!') } + it { should validate_presence_of(:description) } + it { should validate_presence_of(:distrib_type) } + it { should validate_presence_of(:visibility) } + + Platform::VISIBILITIES.each do |value| + it {should allow_value(value).for(:visibility)} + end + it {should_not allow_value('custom_status').for(:visibility)} + + it { should have_readonly_attribute(:name) } + it { should have_readonly_attribute(:distrib_type) } + it { should have_readonly_attribute(:parent_platform_id) } + it { should have_readonly_attribute(:platform_type) } + + it { should_not allow_mass_assignment_of(:repositories) } + it { should_not allow_mass_assignment_of(:products) } + it { should_not allow_mass_assignment_of(:members) } + it { should_not allow_mass_assignment_of(:parent) } + + after(:all) do + Platform.delete_all + User.delete_all FileUtils.rm_rf(APP_CONFIG['root_path']) end - - context 'released' do - it 'should add suffix to name when released' do - @platform = FactoryGirl.create(:platform) - old_name = @platform.name - - @platform.released = true - @platform.save - - @platform.name.should == "#{old_name} #{I18n.t("layout.platforms.released_suffix")}" - end - - it 'should not add suffix to name when not released' do - @platform = FactoryGirl.create(:platform, :name => 'name') - @platform.name.should == 'name' - end - end end