summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/group.rb22
-rw-r--r--app/models/project.rb3
-rw-r--r--db/migrate/20121002150926_create_groups.rb11
-rw-r--r--db/migrate/20121002151033_add_group_id_to_project.rb5
-rw-r--r--db/schema.rb11
-rw-r--r--spec/factories/groups.rb21
-rw-r--r--spec/models/group_spec.rb22
-rw-r--r--spec/models/project_spec.rb22
8 files changed, 116 insertions, 1 deletions
diff --git a/app/models/group.rb b/app/models/group.rb
new file mode 100644
index 00000000000..f18b7d57650
--- /dev/null
+++ b/app/models/group.rb
@@ -0,0 +1,22 @@
+# == Schema Information
+#
+# Table name: groups
+#
+# id :integer not null, primary key
+# name :string(255) not null
+# code :string(255) not null
+# owner_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+class Group < ActiveRecord::Base
+ attr_accessible :code, :name, :owner_id
+
+ has_many :projects
+ belongs_to :owner, class_name: "User"
+
+ validates :name, presence: true, uniqueness: true
+ validates :code, presence: true, uniqueness: true
+ validates :owner_id, presence: true
+end
diff --git a/app/models/project.rb b/app/models/project.rb
index 9b13de62e82..9d2b99e599b 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -11,6 +11,7 @@ class Project < ActiveRecord::Base
attr_accessor :error_code
# Relations
+ belongs_to :group
belongs_to :owner, class_name: "User"
has_many :users, through: :users_projects
has_many :events, dependent: :destroy
@@ -173,4 +174,6 @@ end
# wall_enabled :boolean default(TRUE), not null
# merge_requests_enabled :boolean default(TRUE), not null
# wiki_enabled :boolean default(TRUE), not null
+# group_id :integer
#
+
diff --git a/db/migrate/20121002150926_create_groups.rb b/db/migrate/20121002150926_create_groups.rb
new file mode 100644
index 00000000000..ac178294c02
--- /dev/null
+++ b/db/migrate/20121002150926_create_groups.rb
@@ -0,0 +1,11 @@
+class CreateGroups < ActiveRecord::Migration
+ def change
+ create_table :groups do |t|
+ t.string :name, null: false
+ t.string :code, null: false
+ t.integer :owner_id, null: false
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20121002151033_add_group_id_to_project.rb b/db/migrate/20121002151033_add_group_id_to_project.rb
new file mode 100644
index 00000000000..683fbfec513
--- /dev/null
+++ b/db/migrate/20121002151033_add_group_id_to_project.rb
@@ -0,0 +1,5 @@
+class AddGroupIdToProject < ActiveRecord::Migration
+ def change
+ add_column :projects, :group_id, :integer
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 00bb55234af..ec4729c0c08 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20120905043334) do
+ActiveRecord::Schema.define(:version => 20121002151033) do
create_table "events", :force => true do |t|
t.string "target_type"
@@ -25,6 +25,14 @@ ActiveRecord::Schema.define(:version => 20120905043334) do
t.integer "author_id"
end
+ create_table "groups", :force => true do |t|
+ t.string "name", :null => false
+ t.string "code", :null => false
+ t.integer "owner_id", :null => false
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
create_table "issues", :force => true do |t|
t.string "title"
t.integer "assignee_id"
@@ -108,6 +116,7 @@ ActiveRecord::Schema.define(:version => 20120905043334) do
t.boolean "wall_enabled", :default => true, :null => false
t.boolean "merge_requests_enabled", :default => true, :null => false
t.boolean "wiki_enabled", :default => true, :null => false
+ t.integer "group_id"
end
create_table "protected_branches", :force => true do |t|
diff --git a/spec/factories/groups.rb b/spec/factories/groups.rb
new file mode 100644
index 00000000000..d583b186fed
--- /dev/null
+++ b/spec/factories/groups.rb
@@ -0,0 +1,21 @@
+# == Schema Information
+#
+# Table name: groups
+#
+# id :integer not null, primary key
+# name :string(255) not null
+# code :string(255) not null
+# owner_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+# Read about factories at https://github.com/thoughtbot/factory_girl
+
+FactoryGirl.define do
+ factory :group do
+ name "MyString"
+ code "MyString"
+ owner_id 1
+ end
+end
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb
new file mode 100644
index 00000000000..eea196fd864
--- /dev/null
+++ b/spec/models/group_spec.rb
@@ -0,0 +1,22 @@
+# == Schema Information
+#
+# Table name: groups
+#
+# id :integer not null, primary key
+# name :string(255) not null
+# code :string(255) not null
+# owner_id :integer not null
+# created_at :datetime not null
+# updated_at :datetime not null
+#
+
+require 'spec_helper'
+
+describe Group do
+ it { should have_many :projects }
+ it { should validate_presence_of :name }
+ it { should validate_uniqueness_of(:name) }
+ it { should validate_presence_of :code }
+ it { should validate_uniqueness_of(:code) }
+ it { should validate_presence_of :owner_id }
+end
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index bb975a93dfd..b7d846e8c57 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -1,7 +1,29 @@
+# == Schema Information
+#
+# Table name: projects
+#
+# id :integer not null, primary key
+# name :string(255)
+# path :string(255)
+# description :text
+# created_at :datetime not null
+# updated_at :datetime not null
+# private_flag :boolean default(TRUE), not null
+# code :string(255)
+# owner_id :integer
+# default_branch :string(255)
+# issues_enabled :boolean default(TRUE), not null
+# wall_enabled :boolean default(TRUE), not null
+# merge_requests_enabled :boolean default(TRUE), not null
+# wiki_enabled :boolean default(TRUE), not null
+# group_id :integer
+#
+
require 'spec_helper'
describe Project do
describe "Associations" do
+ it { should belong_to(:group) }
it { should belong_to(:owner).class_name('User') }
it { should have_many(:users) }
it { should have_many(:events).dependent(:destroy) }