dm-visualizer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ class Post
2
+
3
+ include DataMapper::Resource
4
+
5
+ property :id, Serial
6
+
7
+ property :title, String
8
+
9
+ property :body, Text
10
+
11
+ belongs_to :user
12
+
13
+ has 0..n, :comments
14
+
15
+ end
@@ -0,0 +1,11 @@
1
+ class User
2
+
3
+ include DataMapper::Resource
4
+
5
+ property :id, Serial
6
+
7
+ property :name, String
8
+
9
+ has 0..n, :posts
10
+
11
+ end
@@ -0,0 +1,19 @@
1
+ require 'dm-visualizer/project'
2
+
3
+ shared_examples_for "a Ruby project" do
4
+ it "should add the include directories to the $LOAD_PATH" do
5
+ @project.activate!
6
+
7
+ @project.include_dirs.all? { |dir|
8
+ $LOAD_PATH.include?(dir)
9
+ }.should == true
10
+ end
11
+
12
+ it "should remove the include directories to the $LOAD_PATH" do
13
+ @project.deactivate!
14
+
15
+ @project.include_dirs.all? { |dir|
16
+ $LOAD_PATH.include?(dir)
17
+ }.should == false
18
+ end
19
+ end
@@ -0,0 +1,47 @@
1
+ require 'dm-visualizer/project'
2
+
3
+ require 'spec_helper'
4
+ require 'helpers/project'
5
+ require 'project_examples'
6
+
7
+ describe DataMapper::Visualizer::Project do
8
+ include Helpers::Project
9
+
10
+ context "library" do
11
+ before(:all) do
12
+ @dir = project_dir('library')
13
+ @project = DataMapper::Visualizer::Project.new(
14
+ :include => [File.join(@dir,'lib')],
15
+ :require => ['blog']
16
+ )
17
+ end
18
+
19
+ it_should_behave_like "a Ruby project"
20
+
21
+ it "should require the specified paths" do
22
+ @project.load!
23
+
24
+ Object.const_defined?('Blog').should == true
25
+ end
26
+ end
27
+
28
+ context "rails" do
29
+ before(:all) do
30
+ @dir = project_dir('rails')
31
+ @project = DataMapper::Visualizer::Project.new(
32
+ :include => [@dir],
33
+ :require_all => ['app/models/*.rb']
34
+ )
35
+ end
36
+
37
+ it_should_behave_like "a Ruby project"
38
+
39
+ it "should require all paths that match the specified glob patterns" do
40
+ @project.load!
41
+
42
+ Object.const_defined?('User').should == true
43
+ Object.const_defined?('Post').should == true
44
+ Object.const_defined?('Comment').should == true
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+
3
+ gem 'rspec', '~> 1.3.0'
4
+
5
+ require 'spec'
6
+ require 'dm-visualizer/version'
@@ -0,0 +1,92 @@
1
+ require 'dm-visualizer/visualization'
2
+
3
+ require 'spec_helper'
4
+ require 'helpers/project'
5
+
6
+ describe DataMapper::Visualizer::Visualization do
7
+ include Helpers::Project
8
+
9
+ it "should detect which inflector DataMapper is using" do
10
+ DataMapper::Visualizer::Visualization::Inflector.should_not be_nil
11
+ end
12
+
13
+ describe "defaults" do
14
+ before(:all) do
15
+ @vis = DataMapper::Visualizer::Visualization.new(
16
+ :include => [File.join(project_dir('library'),'lib')],
17
+ :require => ['blog']
18
+ )
19
+ end
20
+
21
+ it "should return the class names of Classes" do
22
+ @vis.class_name(Blog::User).should == 'User'
23
+ end
24
+
25
+ it "should return the class names of Objects" do
26
+ @vis.class_name(Blog::Post.body).should == 'Property'
27
+ end
28
+
29
+ it "should return the names of properties" do
30
+ @vis.property_name(Blog::Post.body).should == 'body'
31
+ end
32
+
33
+ it "should return the names of models" do
34
+ @vis.model_name(Blog::User).should == 'User'
35
+ end
36
+ end
37
+
38
+ describe "repository names" do
39
+ before(:all) do
40
+ @vis = DataMapper::Visualizer::Visualization.new(
41
+ :include => [File.join(project_dir('library'),'lib')],
42
+ :require => ['blog'],
43
+ :repository_names => {:default => 'blogdb'}
44
+ )
45
+ end
46
+
47
+ it "should map the DataMapper repository names" do
48
+ @vis.model_repository_name(Blog::User).should == 'blogdb'
49
+ end
50
+ end
51
+
52
+ describe "Schema naming convention" do
53
+ before(:all) do
54
+ @vis = DataMapper::Visualizer::Visualization.new(
55
+ :include => [File.join(project_dir('library'),'lib')],
56
+ :require => ['blog'],
57
+ :repository_names => {:default => 'blogdb'},
58
+ :naming => :schema
59
+ )
60
+ end
61
+
62
+ it "should return the database and table names for a model name" do
63
+ @vis.model_name(Blog::User).should == 'blogdb.blog_users'
64
+ end
65
+ end
66
+
67
+ describe "full names" do
68
+ before(:all) do
69
+ @vis = DataMapper::Visualizer::Visualization.new(
70
+ :include => [File.join(project_dir('library'),'lib')],
71
+ :require => ['blog'],
72
+ :full_names => true
73
+ )
74
+ end
75
+
76
+ it "should not demodulize the names of Classes" do
77
+ @vis.class_name(Blog::User).should == 'Blog::User'
78
+ end
79
+
80
+ it "should not demodulize the names of Objects" do
81
+ @vis.class_name(Blog::Post.body).should == 'DataMapper::Property'
82
+ end
83
+
84
+ it "should not demodulize property type names" do
85
+ @vis.property_type_name(Blog::Post.body).should == 'DataMapper::Types::Text'
86
+ end
87
+
88
+ it "should not demodulize model names" do
89
+ @vis.model_name(Blog::User).should == 'Blog::User'
90
+ end
91
+ end
92
+ end
metadata ADDED
@@ -0,0 +1,189 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dm-visualizer
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
+ - Postmodern
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-05-27 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: ruby-graphviz
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 47
30
+ segments:
31
+ - 0
32
+ - 9
33
+ - 10
34
+ version: 0.9.10
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: dm-core
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 51
46
+ segments:
47
+ - 0
48
+ - 10
49
+ - 2
50
+ version: 0.10.2
51
+ type: :runtime
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: thor
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 35
62
+ segments:
63
+ - 0
64
+ - 13
65
+ - 4
66
+ version: 0.13.4
67
+ type: :runtime
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ hash: 27
78
+ segments:
79
+ - 1
80
+ - 3
81
+ - 0
82
+ version: 1.3.0
83
+ type: :development
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: yard
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ hash: 13
94
+ segments:
95
+ - 0
96
+ - 5
97
+ - 3
98
+ version: 0.5.3
99
+ type: :development
100
+ version_requirements: *id005
101
+ description: DataMapper Visualizer is both a library and a command-line utility for visualizing the Models, Properties and Relationships defined in a DataMapper based Ruby project.
102
+ email: postmodern.mod3@gmail.com
103
+ executables: []
104
+
105
+ extensions: []
106
+
107
+ extra_rdoc_files:
108
+ - ChangeLog.md
109
+ - LICENSE.txt
110
+ - README.md
111
+ files:
112
+ - .gitignore
113
+ - .specopts
114
+ - .yardopts
115
+ - ChangeLog.md
116
+ - LICENSE.txt
117
+ - README.md
118
+ - Rakefile
119
+ - VERSION
120
+ - dm-visualizer.gemspec
121
+ - lib/dm-visualizer.rb
122
+ - lib/dm-visualizer/graphviz.rb
123
+ - lib/dm-visualizer/project.rb
124
+ - lib/dm-visualizer/rake/graphviz_task.rb
125
+ - lib/dm-visualizer/rake/rails/graphviz_task.rb
126
+ - lib/dm-visualizer/rake/rails/tasks.rb
127
+ - lib/dm-visualizer/rake/task.rb
128
+ - lib/dm-visualizer/visualization.rb
129
+ - spec/dm_visualizer_spec.rb
130
+ - spec/helpers/project.rb
131
+ - spec/helpers/projects/library/lib/blog.rb
132
+ - spec/helpers/projects/library/lib/blog/comment.rb
133
+ - spec/helpers/projects/library/lib/blog/post.rb
134
+ - spec/helpers/projects/library/lib/blog/user.rb
135
+ - spec/helpers/projects/rails/app/models/comment.rb
136
+ - spec/helpers/projects/rails/app/models/post.rb
137
+ - spec/helpers/projects/rails/app/models/user.rb
138
+ - spec/project_examples.rb
139
+ - spec/project_spec.rb
140
+ - spec/spec_helper.rb
141
+ - spec/visualization_spec.rb
142
+ has_rdoc: yard
143
+ homepage: http://github.com/postmodern/dm-visualizer
144
+ licenses:
145
+ - MIT
146
+ post_install_message:
147
+ rdoc_options:
148
+ - --charset=UTF-8
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ hash: 3
157
+ segments:
158
+ - 0
159
+ version: "0"
160
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ hash: 3
166
+ segments:
167
+ - 0
168
+ version: "0"
169
+ requirements: []
170
+
171
+ rubyforge_project:
172
+ rubygems_version: 1.3.7
173
+ signing_key:
174
+ specification_version: 3
175
+ summary: Visualizes the Models, Properties and Relationships defined in a DataMapper based Ruby project.
176
+ test_files:
177
+ - spec/project_spec.rb
178
+ - spec/spec_helper.rb
179
+ - spec/visualization_spec.rb
180
+ - spec/project_examples.rb
181
+ - spec/helpers/project.rb
182
+ - spec/helpers/projects/library/lib/blog.rb
183
+ - spec/helpers/projects/library/lib/blog/post.rb
184
+ - spec/helpers/projects/library/lib/blog/user.rb
185
+ - spec/helpers/projects/library/lib/blog/comment.rb
186
+ - spec/helpers/projects/rails/app/models/post.rb
187
+ - spec/helpers/projects/rails/app/models/user.rb
188
+ - spec/helpers/projects/rails/app/models/comment.rb
189
+ - spec/dm_visualizer_spec.rb