place 0.1.0

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.
@@ -0,0 +1,50 @@
1
+
2
+ $: << File.join(File.dirname(__FILE__), '.')
3
+ require 'helper.rb'
4
+
5
+ class TimePointTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ base = File.expand_path(File.join(File.dirname(__FILE__), 'repo'))
9
+ Place.setup(base)
10
+ Place.gather!
11
+ @prj = Project.find_by_name('P')
12
+ end
13
+
14
+ def teardown
15
+ Ohm.flush
16
+ end
17
+
18
+ def test_environment
19
+ assert_not_nil @prj
20
+ assert_equal 2, @prj.timepoints.all.size
21
+ end
22
+
23
+ def test_retrieving
24
+ @prj.timepoints.all.each do |tp|
25
+ assert_not_nil tp.url
26
+ assert_not_nil tp.tid
27
+ assert_not_nil tp.name
28
+ assert_not_nil tp.time
29
+ end
30
+ end
31
+
32
+ def test_belongs_to_project
33
+ tp = @prj.timepoints.all.first
34
+ assert_not_nil tp
35
+ assert_not_nil tp.project
36
+ assert_equal @prj, tp.project
37
+ end
38
+
39
+ def test_workitems
40
+ # TODO a timepoint has workitems
41
+ end
42
+
43
+ def test_find_by_tid
44
+ tp = @prj.timepoints.all.first
45
+ assert_equal tp, TimePoint.find_by_tid(tp.tid)
46
+
47
+ assert_nil TimePoint.find_by_tid('fooz none')
48
+ assert_nil TimePoint.find_by_tid(nil)
49
+ end
50
+ end
data/test/test_user.rb ADDED
@@ -0,0 +1,51 @@
1
+
2
+ $: << File.join(File.dirname(__FILE__), '.')
3
+ require 'helper.rb'
4
+
5
+ class UserTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ Place.setup(File.expand_path(File.join(File.dirname(__FILE__), 'repo')))
9
+ Place.gather!
10
+ end
11
+
12
+ def teardown
13
+ Ohm.flush
14
+ end
15
+
16
+ def test_collecting
17
+ assert_equal 2, User.all.size
18
+ end
19
+
20
+ def test_find_by_name
21
+ assert_not_nil User.find_by_name('alice')
22
+ assert_nil User.find_by_name('foo')
23
+ end
24
+
25
+ def test_watches
26
+ User.all.each{|u| u.retrieve_watches }
27
+
28
+ User.all.each do |u|
29
+ assert u.watches.size > 0
30
+ end
31
+ end
32
+
33
+ def test_author_of
34
+ alice = User.find_by_name('alice')
35
+ assert_equal 5, alice.author_of.size
36
+ assert alice.author_of.map{|wi| wi.wid}.include?('P-1')
37
+ end
38
+
39
+ def test_participations
40
+ alice = User.find_by_name('alice')
41
+ assert_not_nil alice.participations
42
+ assert_equal 1, alice.participations.size
43
+
44
+ prj = Project.find_by_name('P')
45
+ assert_not_nil prj
46
+ assert_equal prj, alice.participations.first.project
47
+
48
+ roles = alice.participations.first.roles
49
+ assert roles.include?('project_admin')
50
+ end
51
+ end
@@ -0,0 +1,172 @@
1
+
2
+ $: << File.join(File.dirname(__FILE__), '.')
3
+ require 'helper.rb'
4
+
5
+ class WorkItemTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ Place.setup(File.expand_path(File.join(File.dirname(__FILE__), 'repo')))
9
+ Place.gather!
10
+ end
11
+
12
+ def teardown
13
+ Ohm.flush
14
+ end
15
+
16
+ def test_environment
17
+ assert WorkItem.all.size > 0
18
+ WorkItem.all.each do |wi|
19
+ assert_not_nil wi.url
20
+ assert_not_nil wi.wid
21
+ assert_not_nil wi.type
22
+ assert_not_nil wi.fields
23
+ end
24
+ end
25
+
26
+
27
+ def test_project
28
+ p = Project.find_by_prefix('P')
29
+ assert_not_nil p
30
+
31
+ wi = p.workitems.all.first
32
+ assert_not_nil wi
33
+
34
+ assert_equal p, wi.project
35
+ end
36
+
37
+
38
+ def test_fields
39
+ p = Project.find_by_prefix('P')
40
+ assert_not_nil p
41
+
42
+ wi = p.workitems.all.first
43
+ assert_not_nil wi
44
+ assert_not_nil wi[:type]
45
+ assert_not_nil wi.type
46
+
47
+ assert_nil wi[:foo]
48
+ wi[:foo] = 'bar'
49
+ assert_equal 'bar', wi[:foo]
50
+ end
51
+
52
+ def test_find_by_wid
53
+ wi = WorkItem.find_by_wid 'P-1'
54
+ assert_not_nil wi
55
+ assert_equal 'task', wi[:type]
56
+ assert_equal 'task', wi.type
57
+ end
58
+
59
+ def test_find_by_type
60
+ assert_equal 7, WorkItem.find_by_type(:task).size
61
+ assert_equal 1, WorkItem.find_by_type(:pr).size
62
+
63
+ wi = WorkItem.find_by_type(:task).first
64
+ assert_equal 'task', wi.type
65
+
66
+ wi = WorkItem.find_by_type(:foo).first
67
+ assert_nil wi
68
+ end
69
+
70
+ def test_author
71
+ u = User.find_by_name('alice')
72
+ assert_not_nil u
73
+
74
+ wi = WorkItem.find_by_wid('P-1')
75
+ assert_not_nil wi
76
+
77
+ assert_not_nil wi.author
78
+ assert_equal wi.author, u
79
+ end
80
+
81
+ def test_assignees
82
+ # no assignee
83
+ wi = WorkItem.find_by_wid('P-4')
84
+ assert_equal 0, wi.assignees.size
85
+
86
+ # single assignee
87
+ wi = WorkItem.find_by_wid('P-1')
88
+ assert_equal 1, wi.assignees.size
89
+
90
+ # more than one assignee
91
+ wi = WorkItem.find_by_wid('P-3')
92
+ assert wi.assignees.size > 1
93
+ end
94
+
95
+ def test_links
96
+ p3 = WorkItem.find_by_wid('P-3')
97
+ assert_not_nil p3
98
+
99
+ assert_equal 2, p3.links_in.size
100
+
101
+ p3.links_in.map{|l| l.from.wid}.each do |wid|
102
+ assert ['P-5', 'P-6'].include?(wid)
103
+ end
104
+
105
+ p3.links_out.map{|l| l.to.wid}.each do |wid|
106
+ assert ['P-1'].include?(wid)
107
+ end
108
+
109
+ p7 = WorkItem.find_by_wid('P-7')
110
+ assert_not_nil p7
111
+ assert_equal 0, p7.links_in.size
112
+ assert_equal 0, p7.links_out.size
113
+ end
114
+
115
+ def test_watches
116
+ # no watches
117
+ wi = WorkItem.find_by_wid('P-4')
118
+ assert_equal 0, wi.watches.size
119
+
120
+ # one watches
121
+ wi = WorkItem.find_by_wid('P-2')
122
+ assert_equal 1, wi.watches.size
123
+
124
+ # more tha one watches
125
+ wi = WorkItem.find_by_wid('P-1')
126
+ assert wi.watches.size > 1
127
+ end
128
+
129
+ def test_workrecords
130
+ # every workitems has (at least empty) workrecords
131
+ WorkItem.all.each do |wi|
132
+ assert_not_nil wi.workrecords
133
+ end
134
+
135
+ # one workrecord
136
+ p3 = WorkItem.find_by_wid('P-3')
137
+ assert_equal 1, p3.workrecords.size
138
+
139
+ # more workrecords
140
+ p6 = WorkItem.find_by_wid('P-6')
141
+ assert_equal 2, p6.workrecords.size
142
+ end
143
+
144
+ def test_comments
145
+ # every workitems has (at least empty) comments
146
+ WorkItem.all.each do |wi|
147
+ assert_not_nil wi.comments
148
+ end
149
+
150
+ # no comments
151
+ p3 = WorkItem.find_by_wid('P-3')
152
+ assert_equal 0, p3.comments.size
153
+
154
+ # more comments
155
+ p6 = WorkItem.find_by_wid('P-6')
156
+ assert_equal 2, p6.comments.size
157
+ end
158
+
159
+ def test_total_on_timeSpent
160
+ p1 = WorkItem.find_by_wid('P-1')
161
+ assert_equal 1, p1['timeSpent']
162
+
163
+ p3 = WorkItem.find_by_wid('P-3')
164
+ assert_equal 2, p3['timeSpent']
165
+
166
+ p6 = WorkItem.find_by_wid('P-6')
167
+ assert_equal 4, p6['timeSpent']
168
+
169
+ assert_equal 7, p1.total_on('timeSpent')
170
+ end
171
+
172
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: place
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Carlo Pecchia
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-07-21 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: json
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: ohm
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: nokogiri
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :runtime
62
+ version_requirements: *id003
63
+ description: " Extract information from Polarion and turns it into easy manageable ruby objects.\n\
64
+ \t\n\
65
+ \tThose objects are stored via Redis.\n"
66
+ email:
67
+ - info@carlopecchia.eu
68
+ executables: []
69
+
70
+ extensions: []
71
+
72
+ extra_rdoc_files: []
73
+
74
+ files:
75
+ - Changelog
76
+ - LICENSE
77
+ - README.markdown
78
+ - Technical.markdown
79
+ - Rakefile
80
+ - lib/place.rb
81
+ - lib/place/project.rb
82
+ - lib/place/link.rb
83
+ - lib/place/participation.rb
84
+ - lib/place/user.rb
85
+ - lib/place/time_point.rb
86
+ - lib/place/work_item.rb
87
+ - lib/place/work_record.rb
88
+ - lib/place/comment.rb
89
+ - place.gemspec
90
+ - test/test_project.rb
91
+ - test/helper.rb
92
+ - test/test_workitem.rb
93
+ - test/test_time_point.rb
94
+ - test/test_place.rb
95
+ - test/test_comment.rb
96
+ - test/test_user.rb
97
+ - examples/sample-1.rb
98
+ has_rdoc: true
99
+ homepage: http://github.com/carlopecchia/place
100
+ licenses: []
101
+
102
+ post_install_message:
103
+ rdoc_options: []
104
+
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ hash: 3
113
+ segments:
114
+ - 0
115
+ version: "0"
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ requirements: []
126
+
127
+ rubyforge_project:
128
+ rubygems_version: 1.3.7
129
+ signing_key:
130
+ specification_version: 3
131
+ summary: "Polarion LACE: Polarion items access in Ruby"
132
+ test_files: []
133
+