yaccl 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +6 -0
- data/Rakefile +7 -0
- data/examples/create_type_manual.rb +40 -0
- data/lib/yaccl.rb +10 -0
- data/lib/yaccl/model.rb +10 -0
- data/lib/yaccl/model/document.rb +63 -0
- data/lib/yaccl/model/folder.rb +66 -0
- data/lib/yaccl/model/item.rb +9 -0
- data/lib/yaccl/model/object.rb +98 -0
- data/lib/yaccl/model/object_factory.rb +18 -0
- data/lib/yaccl/model/policy.rb +20 -0
- data/lib/yaccl/model/relationship.rb +22 -0
- data/lib/yaccl/model/repository.rb +106 -0
- data/lib/yaccl/model/server.rb +13 -0
- data/lib/yaccl/model/type.rb +88 -0
- data/lib/yaccl/services.rb +31 -0
- data/lib/yaccl/services/acl_services.rb +21 -0
- data/lib/yaccl/services/discovery_services.rb +27 -0
- data/lib/yaccl/services/internal/browser_binding_service.rb +99 -0
- data/lib/yaccl/services/multi_filing_services.rb +20 -0
- data/lib/yaccl/services/navigation_services.rb +78 -0
- data/lib/yaccl/services/object_services.rb +192 -0
- data/lib/yaccl/services/policy_services.rb +27 -0
- data/lib/yaccl/services/relationship_services.rb +17 -0
- data/lib/yaccl/services/repository_services.rb +60 -0
- data/lib/yaccl/services/versioning_services.rb +21 -0
- data/readme.md +21 -0
- data/spec/helper.rb +19 -0
- data/spec/model/document_spec.rb +44 -0
- data/spec/model/folder_spec.rb +73 -0
- data/spec/model/object_spec.rb +103 -0
- data/spec/model/repository_spec.rb +134 -0
- data/spec/model/server_spec.rb +16 -0
- data/yaccl.gemspec +23 -0
- metadata +136 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
module YACCL
|
2
|
+
module PolicyServices
|
3
|
+
def apply_policy(repository_id, policy_id, object_id, extension={})
|
4
|
+
required = {cmisaction: 'applyPolicy',
|
5
|
+
repositoryId: repository_id,
|
6
|
+
policyId: policy_id,
|
7
|
+
objectId: object_id}
|
8
|
+
perform_request(required)
|
9
|
+
end
|
10
|
+
|
11
|
+
def remove_policy(repository_id, policy_id, object_id, extension={})
|
12
|
+
required = {cmisaction: 'removePolicy',
|
13
|
+
repositoryId: repository_id,
|
14
|
+
policyId: policy_id,
|
15
|
+
objectId: object_id}
|
16
|
+
perform_request(required)
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_applied_policies(repository_id, object_id, filter, extension={})
|
20
|
+
required = {cmisselector: 'policies',
|
21
|
+
repositoryId: repository_id,
|
22
|
+
objectId: object_id}
|
23
|
+
optional = {filter: filter}
|
24
|
+
perform_request(required, optional)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module YACCL
|
2
|
+
module RelationshipServices
|
3
|
+
def get_object_relationships(repository_id, object_id, include_sub_relationship_types, relationship_direction, type_id, filter, include_allowable_actions, max_items, skip_count, extension={})
|
4
|
+
required = {cmisselector: 'relationships',
|
5
|
+
repositoryId: repository_id,
|
6
|
+
objectId: object_id}
|
7
|
+
optional = {includeSubRelationshipTypes: include_sub_relationship_types,
|
8
|
+
relationshipDirection: relationship_direction,
|
9
|
+
typeId: type_id,
|
10
|
+
filter: filter,
|
11
|
+
includeAllowableActions: include_allowable_actions,
|
12
|
+
maxItems: max_items,
|
13
|
+
skipCount: skip_count}
|
14
|
+
perform_request(required, optional)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module YACCL
|
2
|
+
module RepositoryServices
|
3
|
+
def get_repositories(extension={})
|
4
|
+
perform_request
|
5
|
+
end
|
6
|
+
|
7
|
+
def get_repository_info(repository_id, extension={})
|
8
|
+
required = {cmisselector: 'repositoryInfo',
|
9
|
+
repositoryId: repository_id}
|
10
|
+
perform_request(required)
|
11
|
+
end
|
12
|
+
|
13
|
+
def get_type_children(repository_id, type_id, include_property_definitions, max_items, skip_count, extension={})
|
14
|
+
required = {cmisselector: 'typeChildren',
|
15
|
+
repositoryId: repository_id}
|
16
|
+
optional = {typeId: type_id,
|
17
|
+
includePropertyDefinitions: include_property_definitions,
|
18
|
+
maxItems: max_items,
|
19
|
+
skipCount: skip_count}
|
20
|
+
perform_request(required, optional)
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_type_descendants(repository_id, type_id, depth, include_property_definitions, extension={})
|
24
|
+
required = {cmisselector: 'typeDescendants',
|
25
|
+
repositoryId: repository_id}
|
26
|
+
optional = {typeId: type_id,
|
27
|
+
depth: depth,
|
28
|
+
includePropertyDefinitions: include_property_definitions}
|
29
|
+
perform_request(required, optional)
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_type_definition(repository_id, type_id, extension={})
|
33
|
+
required = {cmisselector: 'typeDefinition',
|
34
|
+
repositoryId: repository_id,
|
35
|
+
typeId: type_id}
|
36
|
+
perform_request(required)
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_type(repository_id, type, extension={})
|
40
|
+
required = {cmisaction: 'createType',
|
41
|
+
repositoryId: repository_id,
|
42
|
+
type: MultiJson.dump(type)}
|
43
|
+
perform_request(required)
|
44
|
+
end
|
45
|
+
|
46
|
+
def update_type(type, extension={})
|
47
|
+
required = {cmisaction: 'updateType',
|
48
|
+
repositoryId: repository_id,
|
49
|
+
type: MultiJson.dump(type)}
|
50
|
+
perform_request(required)
|
51
|
+
end
|
52
|
+
|
53
|
+
def delete_type(repository_id, type_id, extension={})
|
54
|
+
required = {cmisaction: 'deleteType',
|
55
|
+
repositoryId: repository_id,
|
56
|
+
typeId: type_id}
|
57
|
+
perform_request(required)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module YACCL
|
2
|
+
module VersioningServices
|
3
|
+
def check_out(repository_id, object_id, content_copied, extension={})
|
4
|
+
end
|
5
|
+
|
6
|
+
def cancel_check_out(repository_id, object_id, extension={})
|
7
|
+
end
|
8
|
+
|
9
|
+
def check_in(repository_id, object_id, major, properties, content_stream, checkin_comment, policies, add_aces, remove_aces, extension={})
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_object_of_latest_version(repository_id, object_id, version_series_id, major, filter, include_allowable_actions, include_relationships, rendition_filter, include_policy_ids, include_acl, extension={})
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_properties_of_latest_version(repository_id, object_id, version_series_id, major, filter, extension={})
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_all_versions(repository_id, object_id, version_series_id, filter, include_allowable_actions, extension={})
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/readme.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# YACCL
|
2
|
+
|
3
|
+
**YACCL** (pronounced _jackal_) stands for **Yet Another CMIS Client Library** and is a [CMIS](http://chemistry.apache.org/project/cmis.html) client library on top of the CMIS browser binding ([CMIS 1.1](http://docs.oasis-open.org/cmis/CMIS/v1.1/CMIS-v1.1.html)), written in Ruby.
|
4
|
+
|
5
|
+
## Running Test
|
6
|
+
|
7
|
+
Running the tests requires a running CMIS server.
|
8
|
+
|
9
|
+
rake
|
10
|
+
|
11
|
+
## TODO
|
12
|
+
|
13
|
+
* caching
|
14
|
+
* complete model( (update) properties)
|
15
|
+
* (type) check service input
|
16
|
+
* config object (basic auth, succint property…)
|
17
|
+
* expand tests to services
|
18
|
+
|
19
|
+
## Contributing
|
20
|
+
|
21
|
+
Write some code. Run the tests. Open a pull request.
|
data/spec/helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'yaccl'
|
2
|
+
|
3
|
+
YACCL.init('http://localhost:8080/upncmis/browser')
|
4
|
+
|
5
|
+
def create_repository(id)
|
6
|
+
meta = YACCL::Model::Server.repository('meta')
|
7
|
+
f = meta.new_folder
|
8
|
+
f.name = id
|
9
|
+
f.object_type_id = 'repository'
|
10
|
+
f.properties['supportsRelationships'] = true
|
11
|
+
f.properties['supportsPolicies'] = true
|
12
|
+
f.properties['supportsItem'] = true
|
13
|
+
meta.root.create(f)
|
14
|
+
YACCL::Model::Server.repository(id)
|
15
|
+
end
|
16
|
+
|
17
|
+
def delete_repository(id)
|
18
|
+
YACCL::Model::Server.repository('meta').object(id).delete
|
19
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative '../helper'
|
2
|
+
|
3
|
+
describe YACCL::Model::Document do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@repo = create_repository('test_document')
|
7
|
+
end
|
8
|
+
|
9
|
+
after :all do
|
10
|
+
delete_repository('test_document')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'create_in_folder with content' do
|
14
|
+
new_object = @repo.new_document
|
15
|
+
new_object.name = 'doc1'
|
16
|
+
new_object.object_type_id = 'cmis:document'
|
17
|
+
new_object.set_content(StringIO.new('content1'), 'text/plain', 'doc1.txt') # set content on detached doc
|
18
|
+
doc = new_object.create_in_folder(@repo.root_folder_id)
|
19
|
+
doc.name.should eq 'doc1'
|
20
|
+
doc.content_stream_mime_type.should eq 'text/plain'
|
21
|
+
doc.content_stream_file_name.should eq 'doc1.txt'
|
22
|
+
doc.content.should eq 'content1'
|
23
|
+
doc.delete
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'create_in_folder without content' do
|
27
|
+
new_object = @repo.new_document
|
28
|
+
new_object.name = 'doc2'
|
29
|
+
new_object.object_type_id = 'cmis:document'
|
30
|
+
doc = new_object.create_in_folder(@repo.root_folder_id)
|
31
|
+
doc.name.should eq 'doc2'
|
32
|
+
doc.delete
|
33
|
+
end
|
34
|
+
|
35
|
+
#it 'set content - attached' do
|
36
|
+
# new_object = @repo.new_document
|
37
|
+
# new_object.name = 'doc3'
|
38
|
+
# new_object.object_type_id = 'cmis:document'
|
39
|
+
# doc = @repo.root.create(new_object)
|
40
|
+
# doc.set_content(StringIO.new('content3'), 'text/plain', 'doc3.txt') # set content on attached doc
|
41
|
+
# doc.content.should eq 'content3'
|
42
|
+
# doc.delete
|
43
|
+
#end
|
44
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require_relative '../helper'
|
2
|
+
|
3
|
+
describe YACCL::Model::Folder do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@repo = create_repository('test_folder')
|
7
|
+
end
|
8
|
+
|
9
|
+
after :all do
|
10
|
+
delete_repository('test_folder')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'parent - root' do
|
14
|
+
@repo.root.parent.should be_nil
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'parent - root child' do
|
18
|
+
new_object = @repo.new_folder
|
19
|
+
new_object.name = 'folder1'
|
20
|
+
new_object.object_type_id = 'cmis:folder'
|
21
|
+
folder = @repo.root.create(new_object)
|
22
|
+
folder.parent.object_id.should eq @repo.root_folder_id
|
23
|
+
folder.delete
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'create document' do
|
27
|
+
new_object = @repo.new_document
|
28
|
+
new_object.name = 'doc1'
|
29
|
+
new_object.object_type_id = 'cmis:document'
|
30
|
+
new_object.set_content(StringIO.new('apple is a fruit'), 'text/plain', 'apple.txt')
|
31
|
+
object = @repo.root.create(new_object)
|
32
|
+
object.should be_a_kind_of YACCL::Model::Document
|
33
|
+
object.name.should eq 'doc1'
|
34
|
+
object.content_stream_mime_type.should eq 'text/plain'
|
35
|
+
object.content_stream_file_name.should eq 'apple.txt'
|
36
|
+
object.content.should eq 'apple is a fruit'
|
37
|
+
object.delete
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'create folder' do
|
41
|
+
new_object = @repo.new_folder
|
42
|
+
new_object.name = 'folder1'
|
43
|
+
new_object.object_type_id = 'cmis:folder'
|
44
|
+
object = @repo.root.create(new_object)
|
45
|
+
object.should be_a_kind_of YACCL::Model::Folder
|
46
|
+
object.name.should eq 'folder1'
|
47
|
+
object.delete
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'create relationship' do
|
51
|
+
new_object = @repo.new_relationship
|
52
|
+
new_object.name = 'rel1'
|
53
|
+
new_object.object_type_id = 'cmis:relationship'
|
54
|
+
lambda { @repo.root.create(new_object) }.should raise_exception
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'create item' do
|
58
|
+
new_object = @repo.new_item
|
59
|
+
new_object.name = 'item1'
|
60
|
+
new_object.object_type_id = 'cmis:item'
|
61
|
+
object = @repo.root.create(new_object)
|
62
|
+
object.should be_a_kind_of YACCL::Model::Item
|
63
|
+
object.name.should eq 'item1'
|
64
|
+
object.delete
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'create object' do
|
68
|
+
new_object = YACCL::Model::Object.new @repo.id
|
69
|
+
new_object.name = 'object1'
|
70
|
+
new_object.object_type_id = 'cmis:folder'
|
71
|
+
lambda { @repo.root.create(new_object) }.should raise_exception
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require_relative '../helper'
|
2
|
+
|
3
|
+
describe YACCL::Model::Object do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@repo = create_repository('test_object')
|
7
|
+
end
|
8
|
+
|
9
|
+
after :all do
|
10
|
+
delete_repository('test_object')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'repository' do
|
14
|
+
doc = create_document
|
15
|
+
doc.repository.should be_a_kind_of YACCL::Model::Repository
|
16
|
+
doc.repository.id.should eq 'test_object'
|
17
|
+
doc.delete
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'object_type' do
|
21
|
+
doc = create_document
|
22
|
+
doc.object_type.should be_a_kind_of YACCL::Model::Type
|
23
|
+
doc.object_type.id.should eq 'cmis:document'
|
24
|
+
doc.delete
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'delete' do
|
28
|
+
doc = create_document
|
29
|
+
doc.delete
|
30
|
+
#TODO check
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'allowable actions' do
|
34
|
+
doc = create_document
|
35
|
+
actions = doc.allowable_actions
|
36
|
+
actions.should_not be_nil
|
37
|
+
actions.should_not be_empty
|
38
|
+
actions.values.each { |v| [true, false].should include v }
|
39
|
+
doc.delete
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'relationships' do
|
43
|
+
doc = create_document
|
44
|
+
rels = doc.relationships
|
45
|
+
rels.should_not be_nil
|
46
|
+
rels.should have_key :objects
|
47
|
+
rels.should have_key :hasMoreItems
|
48
|
+
rels.should have_key :numItems
|
49
|
+
rels[:objects].each do |r|
|
50
|
+
r.should be_a_kind_of YACCL::Model::Relationship
|
51
|
+
end
|
52
|
+
doc.delete
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'policies' do
|
56
|
+
doc = create_document
|
57
|
+
pols = doc.policies
|
58
|
+
pols.should_not be_nil
|
59
|
+
pols.each do |p|
|
60
|
+
p.should be_a_kind_of YACCL::Model::Policy
|
61
|
+
end
|
62
|
+
doc.delete
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'unfile' do
|
66
|
+
doc = create_document
|
67
|
+
doc.unfile
|
68
|
+
#TODO check
|
69
|
+
doc.delete
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'acls' do
|
73
|
+
doc = create_document
|
74
|
+
acls = doc.acls
|
75
|
+
acls.should_not be_nil
|
76
|
+
acls.should_not be_empty
|
77
|
+
acls.should have_key :aces
|
78
|
+
acls.should have_key :isExact
|
79
|
+
[true, false].should include acls[:isExact]
|
80
|
+
doc.delete
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'add aces' do
|
84
|
+
doc = create_document
|
85
|
+
doc.add_aces({})
|
86
|
+
#TODO check
|
87
|
+
doc.delete
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'remove aces' do
|
91
|
+
doc = create_document
|
92
|
+
doc.remove_aces({})
|
93
|
+
#TODO check
|
94
|
+
doc.delete
|
95
|
+
end
|
96
|
+
|
97
|
+
def create_document
|
98
|
+
new_object = @repo.new_document
|
99
|
+
new_object.name = 'doc'
|
100
|
+
new_object.object_type_id = 'cmis:document'
|
101
|
+
@repo.root.create(new_object)
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
require_relative '../helper'
|
2
|
+
|
3
|
+
describe YACCL::Model::Repository do
|
4
|
+
|
5
|
+
context 'generic' do
|
6
|
+
before do
|
7
|
+
@id = 'meta'
|
8
|
+
@repo = YACCL::Model::Server.repository(@id)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'id' do
|
12
|
+
@repo.id.should.eql? @id
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'fields' do
|
16
|
+
@repo.id.should_not be_nil
|
17
|
+
@repo.name.should_not be_nil
|
18
|
+
@repo.product_version.should_not be_nil
|
19
|
+
@repo.description.should_not be_nil
|
20
|
+
@repo.root_folder_id.should_not be_nil
|
21
|
+
@repo.capabilities.should_not be_nil
|
22
|
+
@repo.url.should_not be_nil
|
23
|
+
@repo.changes_on_type.should_not be_nil
|
24
|
+
@repo.root_folder_url.should_not be_nil
|
25
|
+
@repo.product_name.should_not be_nil
|
26
|
+
@repo.product_version.should_not be_nil
|
27
|
+
|
28
|
+
%w(1.0 1.1).should include @repo.cmis_version_supported
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'new object' do
|
32
|
+
@repo.new_folder.should be_a_kind_of YACCL::Model::Folder
|
33
|
+
@repo.new_document.should be_a_kind_of YACCL::Model::Document
|
34
|
+
@repo.new_relationship.should be_a_kind_of YACCL::Model::Relationship
|
35
|
+
@repo.new_policy.should be_a_kind_of YACCL::Model::Policy
|
36
|
+
@repo.new_item.should be_a_kind_of YACCL::Model::Item
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'root' do
|
40
|
+
root = @repo.root
|
41
|
+
root.should be_a_kind_of YACCL::Model::Folder
|
42
|
+
root.object_id.should eq @repo.root_folder_id
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'object' do
|
46
|
+
id = @repo.root_folder_id
|
47
|
+
object = @repo.object(id)
|
48
|
+
object.should be_a_kind_of YACCL::Model::Folder
|
49
|
+
object.object_id.should eq id
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'type - document' do
|
53
|
+
document = @repo.type('cmis:document')
|
54
|
+
document.should be_a_kind_of YACCL::Model::Type
|
55
|
+
document.id.should eq 'cmis:document'
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'type - folder' do
|
59
|
+
folder = @repo.type('cmis:folder')
|
60
|
+
folder.should be_a_kind_of YACCL::Model::Type
|
61
|
+
folder.id.should eq 'cmis:folder'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'upn' do
|
66
|
+
before :all do
|
67
|
+
@repo = create_repository('test_repository')
|
68
|
+
end
|
69
|
+
|
70
|
+
after :all do
|
71
|
+
delete_repository('test_repository')
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'type - relationship' do
|
75
|
+
relationship = @repo.type('cmis:relationship')
|
76
|
+
relationship.should be_a_kind_of YACCL::Model::Type
|
77
|
+
relationship.id.should eq 'cmis:relationship'
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'type - policy' do
|
81
|
+
policy = @repo.type('cmis:policy')
|
82
|
+
policy.should be_a_kind_of YACCL::Model::Type
|
83
|
+
policy.id.should eq 'cmis:policy'
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'type - item' do
|
87
|
+
item = @repo.type('cmis:item')
|
88
|
+
item.should be_a_kind_of YACCL::Model::Type
|
89
|
+
item.id.should eq 'cmis:item'
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'create, get, delete type - document' do
|
93
|
+
type_id = 'apple'
|
94
|
+
|
95
|
+
type = YACCL::Model::Type.new
|
96
|
+
type.id = type_id
|
97
|
+
type.local_name = 'apple'
|
98
|
+
type.query_name = 'apple'
|
99
|
+
type.display_name = 'apple'
|
100
|
+
type.parent_id = 'cmis:document'
|
101
|
+
type.base_id = 'cmis:document'
|
102
|
+
type.description = 'appel'
|
103
|
+
type.creatable = true
|
104
|
+
type.fileable = true
|
105
|
+
type.queryable = true
|
106
|
+
type.controllable_policy = true
|
107
|
+
type.controllable_acl = true
|
108
|
+
type.fulltext_indexed = true
|
109
|
+
type.included_in_supertype_query = true
|
110
|
+
type.content_stream_allowed = 'allowed'
|
111
|
+
type.versionable = false
|
112
|
+
|
113
|
+
type.add_property_definition(id: 'color',
|
114
|
+
localName: 'color',
|
115
|
+
queryName: 'color',
|
116
|
+
displayName: 'color',
|
117
|
+
description: 'color',
|
118
|
+
propertyType: 'string',
|
119
|
+
cardinality: 'single',
|
120
|
+
updatability: 'readwrite',
|
121
|
+
inherited: false,
|
122
|
+
required: false,
|
123
|
+
queryable: true,
|
124
|
+
orderable: true)
|
125
|
+
|
126
|
+
@repo.create_type(type)
|
127
|
+
@repo.type(type_id).tap do |t|
|
128
|
+
t.should be_a_kind_of YACCL::Model::Type
|
129
|
+
t.id.should eq type_id
|
130
|
+
end
|
131
|
+
@repo.delete_type(type_id)
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|