Add group_class attribute.
authorTom Clegg <tom@curoverse.com>
Mon, 21 Apr 2014 15:00:10 +0000 (11:00 -0400)
committerTom Clegg <tom@curoverse.com>
Mon, 21 Apr 2014 15:00:10 +0000 (11:00 -0400)
doc/api/schema/Group.html.textile.liquid
services/api/app/models/group.rb
services/api/db/migrate/20140421140924_add_group_class_to_groups.rb [new file with mode: 0644]
services/api/db/schema.rb
services/api/test/fixtures/groups.yml
services/api/test/functional/arvados/v1/groups_controller_test.rb
services/api/test/test_helper.rb

index e0e092ec9d796b3a216200ee3ef5412151912076..9d29ba0efa8b94acb19c4a7d25af90f2b92eddc2 100644 (file)
@@ -6,9 +6,7 @@ title: Group
 
 ...
 
-
-
-A **Group** represents...
+A **Group** represents a set of objects. Groups allow you to organize content, define user roles, and apply permissions to sets of objects.
 
 h2. Methods
 
@@ -33,5 +31,6 @@ Each Group has, in addition to the usual "attributes of Arvados resources":{{sit
 table(table table-bordered table-condensed).
 |_. Attribute|_. Type|_. Description|_. Example|
 |name|string|||
+|group_class|string|Type of group. This does not affect behavior, but determines how the group is presented in the user interface.|@folder@|
 |description|text|||
 |updated_at|datetime|||
index 9666257ea4875d4bb62d13528bb132c57a51bd14..7391df5dde1910d193d5cc24f4e6b8e63ae006d8 100644 (file)
@@ -5,6 +5,7 @@ class Group < ArvadosModel
 
   api_accessible :user, extend: :common do |t|
     t.add :name
+    t.add :group_class
     t.add :description
   end
 end
diff --git a/services/api/db/migrate/20140421140924_add_group_class_to_groups.rb b/services/api/db/migrate/20140421140924_add_group_class_to_groups.rb
new file mode 100644 (file)
index 0000000..de52983
--- /dev/null
@@ -0,0 +1,6 @@
+class AddGroupClassToGroups < ActiveRecord::Migration
+  def change
+    add_column :groups, :group_class, :string
+    add_index :groups, :group_class
+  end
+end
index e2301e5be971717b13a58ec67ecea0fe3d4e365f..e8268fcc5b847b2772ace27ad9847c936bcd42ab 100644 (file)
@@ -11,7 +11,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 20140407184311) do
+ActiveRecord::Schema.define(:version => 20140421140924) do
 
   create_table "api_client_authorizations", :force => true do |t|
     t.string   "api_token",                                           :null => false
@@ -120,9 +120,11 @@ ActiveRecord::Schema.define(:version => 20140407184311) do
     t.string   "name"
     t.text     "description"
     t.datetime "updated_at",              :null => false
+    t.string   "group_class"
   end
 
   add_index "groups", ["created_at"], :name => "index_groups_on_created_at"
+  add_index "groups", ["group_class"], :name => "index_groups_on_group_class"
   add_index "groups", ["modified_at"], :name => "index_groups_on_modified_at"
   add_index "groups", ["uuid"], :name => "index_groups_on_uuid", :unique => true
 
index c2f2dde5520ca050a98995aeb11c3dec3b1a14f8..7b215efc9f3e4a7a093a371851c20d2da418a5ce 100644 (file)
@@ -43,3 +43,17 @@ testusergroup_admins:
   uuid: zzzzz-j7d0g-48foin4vonvc2at
   owner_uuid: zzzzz-tpzed-000000000000000
   name: Administrators of a subset of users
+
+afolder:
+  uuid: zzzzz-j7d0g-v955i6s2oi1cbso
+  owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+  name: A Folder
+  description: Test folder belonging to active user
+  group_class: folder
+
+asubfolder:
+  uuid: zzzzz-j7d0g-axqo7eu9pwvna1x
+  owner_uuid: zzzzz-j7d0g-v955i6s2oi1cbso
+  name: A Subfolder
+  description: Test folder belonging to active user's first test folder
+  group_class: folder
index 2e3d6b867b7313bd6d92c3303ce33d658b5d2266..126499781d75edd4aaec5dbf0bb6e0a9e3a1b34b 100644 (file)
@@ -14,4 +14,17 @@ class Arvados::V1::GroupsControllerTest < ActionController::TestCase
     assert_response 403
   end
 
+  test "get list of folders" do
+    authorize_with :active
+    get :index, filters: [['group_class', '=', 'folder']], format: :json
+    assert_response :success
+    group_uuids = []
+    jresponse['items'].each do |group|
+      assert_equal 'folder', group['group_class']
+      group_uuids << group['uuid']
+    end
+    assert_not_nil group_uuids.index groups(:afolder).uuid
+    assert_not_nil group_uuids.index groups(:asubfolder).uuid
+  end
+
 end
index a81bfdf9e40c1bb03af90a274a1fe68645c534b0..4a53b25a9ee19b0ae1b9051fa2529018f25deda6 100644 (file)
@@ -13,6 +13,10 @@ class ActiveSupport::TestCase
     self.request.headers["Accept"] = "text/json"
   end
 
+  def jresponse
+    @jresponse ||= ActiveSupport::JSON.decode @response.body
+  end
+
   def authorize_with(api_client_auth_name)
     self.request.env['HTTP_AUTHORIZATION'] = "OAuth2 #{api_client_authorizations(api_client_auth_name).api_token}"
   end
@@ -21,9 +25,6 @@ class ActiveSupport::TestCase
 end
 
 class ActionDispatch::IntegrationTest
-  def jresponse
-    @jresponse ||= ActiveSupport::JSON.decode @response.body
-  end
   def auth auth_fixture
     {'HTTP_AUTHORIZATION' => "OAuth2 #{api_client_authorizations(auth_fixture).api_token}"}
   end