Add the has_many_polymorphs plugin
[cs356-p2-videostore.git] / vendor / plugins / has_many_polymorphs / test / integration / app / generators / commenting_generator_test.rb
1 require File.dirname(__FILE__) + '/../test_helper'
2 require 'fileutils'
3
4 class CommentingGeneratorTest < Test::Unit::TestCase
5
6   def test_ensure_comments_dont_exist
7     # make sure the comments are already defined
8     assert_equal false, Object.send(:const_defined?, :Comment)
9     assert_equal false, Object.send(:const_defined?, :Commenting)
10   end
11
12   def test_ensure_files_exist_after_generator_runs
13     run_generator
14
15     # make sure the files are there
16     for generated_file in generated_files do
17       assert File.exists?(File.expand_path(generated_file))
18     end
19   end
20
21   def test_classes_exist_with_associations
22     run_generator
23     assert_nothing_raised { Commenting }
24     assert_nothing_raised { Comment }
25     citation = Citation.find(:first)
26     assert !citation.nil?
27     assert citation.respond_to?(:comments)
28     user = User.find(:first)
29     assert !user.nil?
30     assert user.respond_to?(:comments)
31   end
32
33   def teardown
34     Object.send(:remove_const, :Comment) if Object.send(:const_defined?, :Comment)
35     Object.send(:remove_const, :Commenting) if Object.send(:const_defined?, :Commenting)
36     remove_all_generated_files
37     remove_require_for_commenting_extensions
38   end
39
40   def generated_files    
41     generated_files = [File.join(File.dirname(__FILE__), '..', '..', 'app', 'models', 'comment.rb')]
42     generated_files << File.join(File.dirname(__FILE__), '..', '..', 'app', 'models', 'commenting.rb')
43     generated_files << File.join(File.dirname(__FILE__), '..', '..', 'test', 'unit', 'commenting_test.rb')
44     generated_files << File.join(File.dirname(__FILE__), '..', '..', 'test', 'unit', 'comment_test.rb')
45     generated_files << File.join(File.dirname(__FILE__), '..', '..', 'lib', 'commenting_extensions.rb')
46     generated_files << File.join(File.dirname(__FILE__), '..', '..', 'test', 'fixtures', 'comments.yml')
47     generated_files << File.join(File.dirname(__FILE__), '..', '..', 'test', 'fixtures', 'commentings.yml')
48   end
49
50   def remove_all_generated_files
51     for generated_file in generated_files do
52       if File.exists?(generated_file)
53         assert FileUtils.rm(generated_file)
54       end
55     end
56   end
57
58   def run_migrate
59     `rake db:migrate RAILS_ENV=test`
60   end
61
62   def run_generator
63     command = File.join(File.dirname(__FILE__), '..', '..', 'script', 'generate')
64     `#{command} commenting Citation User`
65     run_migrate
66   end
67
68   def remove_require_for_commenting_extensions  
69     environment = File.join(File.dirname(__FILE__), '..', '..', 'config', 'environment.rb')
70     new_environment = ''
71     if File.exists?(environment)
72       if (open(environment) { |file| file.grep(/Rails/).any? })
73         IO.readlines(environment).each do |line|
74           new_environment += line unless line.match(/commenting_extensions/i)
75         end
76         File.open(environment, "w+") do |f|
77           f.pos = 0
78           f.print new_environment
79         end
80       end
81     end
82   end
83 end