dm-visualizer 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,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