route_dog 2.3.1 → 2.4.2
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/README.md +20 -18
- data/Rakefile +5 -1
- data/VERSION +1 -1
- data/lib/route_dog/middleware/notifier.rb +5 -10
- data/lib/route_dog/railtie.rb +10 -7
- data/lib/route_dog/report.rb +89 -0
- data/lib/route_dog/templates/report.html.erb +51 -0
- data/lib/route_dog/templates/warning.html.erb +8 -0
- data/lib/route_dog.rb +12 -2
- data/lib/tasks/tasks.rake +2 -99
- data/route_dog.gemspec +102 -98
- data/test/integration/pages_controller_test.rb +14 -0
- data/test/mock_app/app/controllers/pages_controller.rb +9 -0
- data/test/mock_app/config/{route_dog.yml → middlewares_route_dog.yml} +0 -0
- data/test/mock_app/config/routes.rb +2 -0
- data/test/support/assertions.rb +1 -0
- data/test/unit/route_dog_test.rb +2 -2
- metadata +13 -6
    
        data/README.md
    CHANGED
    
    | @@ -3,23 +3,20 @@ RouteDog for Ruby on Rails | |
| 3 3 |  | 
| 4 4 | 
             
            **It only works in Rails 3 for now, Rails 2.3 support is comming.**
         | 
| 5 5 |  | 
| 6 | 
            -
            RouteDog  | 
| 6 | 
            +
            RouteDog does the following things for you:
         | 
| 7 7 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
            and collects the routes that you've called from your **Integration Tests** (See Note About Integration Tests).
         | 
| 8 | 
            +
            * Identify routes that has been defined in config/routes.rb but hasn't been implemented.
         | 
| 10 9 |  | 
| 11 | 
            -
             | 
| 10 | 
            +
            * Identify which routes of your application were never hitted by a Integration Test.
         | 
| 12 11 |  | 
| 13 | 
            -
             | 
| 12 | 
            +
            * Notify you which actions hasn't been tested while you are using your application by injecting html on the top of the page.
         | 
| 14 13 |  | 
| 15 14 |  | 
| 16 15 | 
             
            For What This Is Useful?
         | 
| 17 16 | 
             
            ------------------------
         | 
| 18 17 |  | 
| 19 | 
            -
            * It is useful to me :)
         | 
| 20 | 
            -
             | 
| 21 18 | 
             
            * Suppose that you get a contract to work in a project but that was not started by you, you know that it has some tests, also you have seen
         | 
| 22 | 
            -
            the coverage results but you want to live the experience using the application and seeing  | 
| 19 | 
            +
            the coverage results but you want to live the experience using the application and seeing which route is actually tested and which route don't.
         | 
| 23 20 |  | 
| 24 21 | 
             
            * You were a Rumble Guy that thought that tests were not necessary? ok, may be this is for you if you don't want to drop all your code.
         | 
| 25 22 |  | 
| @@ -42,7 +39,7 @@ If you are not using Bundler | |
| 42 39 |  | 
| 43 40 | 
             
            ### Get a report of defined, implemented and tested routes ###
         | 
| 44 41 |  | 
| 45 | 
            -
            Run your  | 
| 42 | 
            +
            Run your **Integration Tests** and then ask for a report
         | 
| 46 43 |  | 
| 47 44 | 
             
                rake route_dog:report
         | 
| 48 45 |  | 
| @@ -51,6 +48,18 @@ Run your *Integration Tests* and then call a report | |
| 51 48 |  | 
| 52 49 | 
             
            ### Browsing your application in Development ###
         | 
| 53 50 |  | 
| 51 | 
            +
            Create a file called route_dog.yml under your config directory.
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                ---
         | 
| 54 | 
            +
                watcher:
         | 
| 55 | 
            +
                  env:
         | 
| 56 | 
            +
                    - test
         | 
| 57 | 
            +
                notifier:
         | 
| 58 | 
            +
                  env:
         | 
| 59 | 
            +
                    - test
         | 
| 60 | 
            +
                    - development
         | 
| 61 | 
            +
             | 
| 62 | 
            +
             | 
| 54 63 | 
             
            This will be appended to your application response
         | 
| 55 64 |  | 
| 56 65 | 
             
            
         | 
| @@ -59,24 +68,17 @@ This will be appended to your application response | |
| 59 68 | 
             
            ### Clean collected tested routes ###
         | 
| 60 69 |  | 
| 61 70 | 
             
            This is useful if you had a test passing and then you remove the test from your codebase,
         | 
| 62 | 
            -
            very uncommon,  | 
| 71 | 
            +
            *very uncommon*, and it should not be treated as a passing test anymore, here is the command.
         | 
| 63 72 |  | 
| 64 73 | 
             
                rake route_dog:clean
         | 
| 65 74 |  | 
| 66 75 |  | 
| 67 | 
            -
            TODO
         | 
| 68 | 
            -
            ----
         | 
| 69 | 
            -
             | 
| 70 | 
            -
            * Rails 2.3 support.
         | 
| 71 | 
            -
            * Show Notifier warnings for other than regular html responses.
         | 
| 72 | 
            -
            * Generator to extract route_dog.yml config file, so you can disable the middlewares you don't want.
         | 
| 73 | 
            -
             | 
| 74 76 | 
             
            Notes
         | 
| 75 77 | 
             
            -----
         | 
| 76 78 |  | 
| 77 79 | 
             
            * Watcher middleware don't work with Controller Tests, it only works with Integration Tests.
         | 
| 78 80 |  | 
| 79 | 
            -
             | 
| 81 | 
            +
            Development
         | 
| 80 82 | 
             
            -----------
         | 
| 81 83 |  | 
| 82 84 | 
             
            If you are planning to contribute to this gem, please read the following advice.
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -22,10 +22,14 @@ rescue LoadError | |
| 22 22 | 
             
            end
         | 
| 23 23 |  | 
| 24 24 | 
             
            desc "Default: run tests"
         | 
| 25 | 
            -
            task :default => :test
         | 
| 25 | 
            +
            task :default => [:test, :report]
         | 
| 26 26 |  | 
| 27 27 | 
             
            task :test => "route_dog:clean"
         | 
| 28 28 |  | 
| 29 | 
            +
            task :report do
         | 
| 30 | 
            +
              `cd test/mock_app && rake route_dog:report`
         | 
| 31 | 
            +
            end
         | 
| 32 | 
            +
             | 
| 29 33 | 
             
            Rake::TestTask.new do |t|
         | 
| 30 34 | 
             
              t.libs << "lib" << "test"
         | 
| 31 35 | 
             
              t.test_files = FileList["test/**/*_test.rb"]
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            2. | 
| 1 | 
            +
            2.4.2
         | 
| @@ -10,7 +10,7 @@ module RouteDog | |
| 10 10 |  | 
| 11 11 | 
             
                    status, headers, @response = @app.call(env)
         | 
| 12 12 |  | 
| 13 | 
            -
                    append_warning if !::RouteDog. | 
| 13 | 
            +
                    append_warning if !::RouteDog.route_tested_with_requirements?(identify_controller, identify_action, request_method)
         | 
| 14 14 |  | 
| 15 15 | 
             
                    [status, headers, @response]
         | 
| 16 16 | 
             
                  end
         | 
| @@ -19,21 +19,16 @@ module RouteDog | |
| 19 19 |  | 
| 20 20 | 
             
                  def append_warning
         | 
| 21 21 | 
             
                    @response.each do |part|
         | 
| 22 | 
            -
                      part.gsub!("<body>", "<body>#{ | 
| 22 | 
            +
                      part.gsub!("<body>", "<body>#{warning_template}")
         | 
| 23 23 | 
             
                    end
         | 
| 24 24 | 
             
                  end
         | 
| 25 25 |  | 
| 26 26 | 
             
                  def no_test_message
         | 
| 27 | 
            -
                    "The Route #{request_method.to_s.upcase} #{identify_controller.to_s}##{identify_action.to_s} -- Has Not  | 
| 27 | 
            +
                    "The Route #{request_method.to_s.upcase} #{identify_controller.to_s}##{identify_action.to_s} -- Has Not Integration Tests!"
         | 
| 28 28 | 
             
                  end
         | 
| 29 29 |  | 
| 30 | 
            -
                  def  | 
| 31 | 
            -
                     | 
| 32 | 
            -
                      <div style="display: block; height:70px;"></div>
         | 
| 33 | 
            -
                      <div id="route_dog_warning" style="display: block; width: 100%; height: 70px; text-align: center; margin:0; position:absolute; top:0; background: red; font-size: 18px; font-weight: bold">
         | 
| 34 | 
            -
                        <h1 style="color: #fff; font-size: 20px; margin: 20px 0 35px">#{no_test_message}</h1>
         | 
| 35 | 
            -
                      </div>
         | 
| 36 | 
            -
                    EOT
         | 
| 30 | 
            +
                  def warning_template
         | 
| 31 | 
            +
                    ERB.new(File.open(File.join(File.dirname(__FILE__), "..", "templates", "warning.html.erb")).read).result(binding)
         | 
| 37 32 | 
             
                  end
         | 
| 38 33 | 
             
                end
         | 
| 39 34 | 
             
              end
         | 
    
        data/lib/route_dog/railtie.rb
    CHANGED
    
    | @@ -1,27 +1,30 @@ | |
| 1 1 | 
             
            module RouteDog
         | 
| 2 2 | 
             
              class Railtie < Rails::Railtie
         | 
| 3 | 
            -
                attr_reader :route_dog_config
         | 
| 4 3 |  | 
| 5 4 | 
             
                rake_tasks do
         | 
| 6 5 | 
             
                  load "tasks/tasks.rake"
         | 
| 7 6 | 
             
                end
         | 
| 8 7 |  | 
| 9 8 | 
             
                initializer "route_dog.configure_rails_initialization" do |app|
         | 
| 10 | 
            -
                  load_route_dog_configuration
         | 
| 11 9 | 
             
                  setup_middlewares(app)
         | 
| 12 10 | 
             
                end
         | 
| 13 11 |  | 
| 14 12 | 
             
              private
         | 
| 15 13 |  | 
| 16 14 | 
             
                def setup_middlewares(app)
         | 
| 17 | 
            -
                   | 
| 18 | 
            -
             | 
| 15 | 
            +
                  if route_dog_configuration.fetch("watcher", {}).fetch("env", []).include?(Rails.env)
         | 
| 16 | 
            +
                    app.config.middleware.use RouteDog::Middleware::Watcher
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  if route_dog_configuration.fetch("notifier", {}).fetch("env", []).include?(Rails.env)
         | 
| 20 | 
            +
                    app.config.middleware.use RouteDog::Middleware::Notifier
         | 
| 21 | 
            +
                  end
         | 
| 19 22 | 
             
                end
         | 
| 20 23 |  | 
| 21 | 
            -
                def  | 
| 22 | 
            -
                   | 
| 24 | 
            +
                def route_dog_configuration
         | 
| 25 | 
            +
                  YAML.load_file(File.join(Rails.root, 'config', 'middlewares_route_dog.yml'))
         | 
| 23 26 | 
             
                rescue Errno::ENOENT
         | 
| 24 | 
            -
                   | 
| 27 | 
            +
                  {"watcher" => {"env" => ["test"]}, "notifier" => {"env" => ["development"]}}
         | 
| 25 28 | 
             
                end
         | 
| 26 29 | 
             
              end
         | 
| 27 30 | 
             
            end
         | 
| @@ -0,0 +1,89 @@ | |
| 1 | 
            +
            require 'ostruct'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module RouteDog
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              class Report
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def initialize
         | 
| 8 | 
            +
                  @defined_routes = Rails.application.routes.routes
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def generate
         | 
| 12 | 
            +
                  remove_not_user_routes!
         | 
| 13 | 
            +
                  map_routes_as_structs!
         | 
| 14 | 
            +
                  calculate_totals
         | 
| 15 | 
            +
                  save_report(template.result(binding))
         | 
| 16 | 
            +
                  open_report_in_browser
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def self.generate
         | 
| 20 | 
            +
                  self.new.generate
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                private
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def remove_not_user_routes!
         | 
| 26 | 
            +
                  @defined_routes.reject! { |r| r.path =~ %r{/rails/info/properties} } # Skip the route if it's internal info route
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                def template
         | 
| 30 | 
            +
                  ERB.new(File.open(File.join(File.dirname(__FILE__), "templates", "report.html.erb")).read)
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def map_routes_as_structs!
         | 
| 34 | 
            +
                  @defined_routes.map! do |route|
         | 
| 35 | 
            +
                    r = OpenStruct.new
         | 
| 36 | 
            +
                    r.verb = route.verb
         | 
| 37 | 
            +
                    r.path = route.path
         | 
| 38 | 
            +
                    r.action = RouteDog.action_string_for_route(route)
         | 
| 39 | 
            +
                    r.tested = RouteDog.route_tested?(route)
         | 
| 40 | 
            +
                    r.implemented = implemented_route?(route)
         | 
| 41 | 
            +
                    r
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                def calculate_totals
         | 
| 46 | 
            +
                  @implemented_routes_count = @defined_routes.select {|route| route.implemented }.size
         | 
| 47 | 
            +
                  @tested_routes_count      = @defined_routes.select {|route| route.tested }.size
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                def save_report(html_report)
         | 
| 51 | 
            +
                  File.open(report_file, "w+") do |file|
         | 
| 52 | 
            +
                    file.puts(html_report)
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  puts("The report was saved in: #{report_file}")
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                def open_report_in_browser
         | 
| 59 | 
            +
                  Launchy::Browser.run(report_file) if defined?(Launchy)
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                def report_file
         | 
| 63 | 
            +
                  File.join(Rails.root, "tmp", Rails.application.class.to_s.gsub(":", "").concat("RoutesReport.html").underscore)
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                def implemented_route?(route)
         | 
| 67 | 
            +
                  controller = find_or_instantiate_controller_for(route)
         | 
| 68 | 
            +
                  if route.requirements.has_key?(:action)
         | 
| 69 | 
            +
                    controller.respond_to?(route.requirements[:action])
         | 
| 70 | 
            +
                  else
         | 
| 71 | 
            +
                    controller.class.instance_methods(false).any?
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                def find_or_instantiate_controller_for(route)
         | 
| 76 | 
            +
                  requirements = route.requirements
         | 
| 77 | 
            +
                  @instantiated_controllers ||= {}
         | 
| 78 | 
            +
                  if @instantiated_controllers.has_key?(requirements[:controller])
         | 
| 79 | 
            +
                    @instantiated_controllers[requirements[:controller]]
         | 
| 80 | 
            +
                  else
         | 
| 81 | 
            +
                    begin
         | 
| 82 | 
            +
                      @instantiated_controllers[requirements[:controller]] = RouteDog.constantize_controller_str(requirements[:controller]).new
         | 
| 83 | 
            +
                    rescue
         | 
| 84 | 
            +
                      false
         | 
| 85 | 
            +
                    end
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
            end
         | 
| @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            <html>
         | 
| 2 | 
            +
              <head>
         | 
| 3 | 
            +
                <style type="text/css">
         | 
| 4 | 
            +
                  html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre,
         | 
| 5 | 
            +
                  a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp,
         | 
| 6 | 
            +
                  small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset,
         | 
| 7 | 
            +
                  form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
         | 
| 8 | 
            +
                  margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent;}
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  body { margin: 0; padding: 0; font:15.34px helvetica,arial,freesans,clean,sans-serif; }
         | 
| 11 | 
            +
                  #header { background: red; color: #fff; display: block; height: 70px; }
         | 
| 12 | 
            +
                  h1 { font-size: 18px; padding: 10px 0 0 25px; }
         | 
| 13 | 
            +
                  table#routes { width: 100%; padding: 40px 25px 0; }
         | 
| 14 | 
            +
                  table#routes th, table#routes td { text-align: left; padding: 5px; }
         | 
| 15 | 
            +
                  table#routes tr:nth-child(odd) { background: #eee;}
         | 
| 16 | 
            +
                  div#route_stats {}
         | 
| 17 | 
            +
                  span.yes { color: green; font-weight: bold }
         | 
| 18 | 
            +
                  span.no { color: red; font-weight: bold }
         | 
| 19 | 
            +
                  div#route_stats { background: #444; color: #fff; height: 30px; position: absolute; top: 50px; width: 100%; border-bottom: solid 4px #666 }
         | 
| 20 | 
            +
                  div#route_stats p { padding: 10px 0 0 25px; }
         | 
| 21 | 
            +
                  div#route_stats span { margin: 0 50px 0 10px; color: #fff; font-weight: bold; }
         | 
| 22 | 
            +
                  div#route_stats span.zero_routes { background: #666; padding: 2px; 5px; }
         | 
| 23 | 
            +
                </style>
         | 
| 24 | 
            +
              </head>
         | 
| 25 | 
            +
              <body>
         | 
| 26 | 
            +
                <div id="header">
         | 
| 27 | 
            +
                  <h1>Route Dog - <%= Rails.application.class.to_s.gsub(/::/, ' ') %> - Routes Report</h1>
         | 
| 28 | 
            +
                </div>
         | 
| 29 | 
            +
                <table id="routes">
         | 
| 30 | 
            +
                <tr><th>Method</th><th>Path</th><th>Action</th><th>Implemented</th><th>Tested</th></tr>
         | 
| 31 | 
            +
                <% @defined_routes.each do |route| %>
         | 
| 32 | 
            +
                  <tr>
         | 
| 33 | 
            +
                    <td><%= route.verb %></td>
         | 
| 34 | 
            +
                    <td><%= route.path %></td>
         | 
| 35 | 
            +
                    <td><%= route.action %></td>
         | 
| 36 | 
            +
                    <td><%= route.implemented ? "<span class='yes'>YES</span>" : "<span class='no'>NO</span>" %></td>
         | 
| 37 | 
            +
                    <td><%= route.tested ? "<span class='yes'>YES</span>" : "<span class='no'>NO</span>" %></td>
         | 
| 38 | 
            +
                <% end %>
         | 
| 39 | 
            +
                </table>
         | 
| 40 | 
            +
                <div id="route_stats">
         | 
| 41 | 
            +
                  <p>
         | 
| 42 | 
            +
                    <strong>Defined:</strong> <span class="value"><%= @defined_routes.size %></span>
         | 
| 43 | 
            +
                    <strong>Implemented:</strong> <span class="value"><%= @implemented_routes_count %></span>
         | 
| 44 | 
            +
                    <strong>Tested:</strong> <span class="value"><%= @tested_routes_count %></span>
         | 
| 45 | 
            +
                    <% if @tested_routes_count == 0 %>
         | 
| 46 | 
            +
                      <span class="zero_routes">You have 0 routes tested, may be you should run your Integrational Tests First!</span>
         | 
| 47 | 
            +
                    <% end %>
         | 
| 48 | 
            +
                  <p>
         | 
| 49 | 
            +
                </div>
         | 
| 50 | 
            +
              </body>
         | 
| 51 | 
            +
            </html>
         | 
| @@ -0,0 +1,8 @@ | |
| 1 | 
            +
            <div style="display: block; height:70px;"></div>
         | 
| 2 | 
            +
            <div id="route_dog_warning"
         | 
| 3 | 
            +
                 style="display: block; width: 100%; height: 70px;
         | 
| 4 | 
            +
                        text-align: center; margin:0; position:absolute;
         | 
| 5 | 
            +
                        top:0; background: red; font-size: 18px;
         | 
| 6 | 
            +
                        font-weight: bold">
         | 
| 7 | 
            +
              <div style="display:block; color: #fff; font-size: 20px; margin: 20px 0 35px"><%= no_test_message %></div>
         | 
| 8 | 
            +
            </div>
         | 
    
        data/lib/route_dog.rb
    CHANGED
    
    | @@ -1,9 +1,10 @@ | |
| 1 1 | 
             
            require 'route_dog/middleware'
         | 
| 2 | 
            +
            require 'route_dog/report'
         | 
| 2 3 | 
             
            require 'route_dog/railtie' if defined?(Rails)
         | 
| 3 4 |  | 
| 4 5 | 
             
            module RouteDog
         | 
| 5 6 | 
             
              def self.config_file
         | 
| 6 | 
            -
                File.join(Rails.root, ' | 
| 7 | 
            +
                File.join(Rails.root, 'tmp', 'route_dog_routes.yml')
         | 
| 7 8 | 
             
              end
         | 
| 8 9 |  | 
| 9 10 | 
             
              def self.load_watched_routes
         | 
| @@ -17,7 +18,7 @@ module RouteDog | |
| 17 18 | 
             
              end
         | 
| 18 19 |  | 
| 19 20 | 
             
              # When method.nil? it respond to all methods.
         | 
| 20 | 
            -
              def self. | 
| 21 | 
            +
              def self.route_tested_with_requirements?(controller, action, method)
         | 
| 21 22 | 
             
                begin
         | 
| 22 23 | 
             
                  available_methods = load_watched_routes[controller.to_s.downcase][action.to_s.downcase]
         | 
| 23 24 | 
             
                  method.nil? ? available_methods.any? : available_methods.include?(method.to_s.downcase)
         | 
| @@ -26,7 +27,16 @@ module RouteDog | |
| 26 27 | 
             
                end
         | 
| 27 28 | 
             
              end
         | 
| 28 29 |  | 
| 30 | 
            +
              def self.route_tested?(route)
         | 
| 31 | 
            +
                requirements = route.requirements
         | 
| 32 | 
            +
                route_tested_with_requirements?(requirements[:controller], requirements[:action], route.verb)
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 29 35 | 
             
              def self.constantize_controller_str(controller)
         | 
| 30 36 | 
             
                controller.split("/").map{|c| c.split("_").map{|cc| cc.capitalize}.join }.join("::").concat("Controller").constantize
         | 
| 31 37 | 
             
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              def self.action_string_for_route(route)
         | 
| 40 | 
            +
                "#{route.requirements[:controller]}##{route.requirements[:action]}"
         | 
| 41 | 
            +
              end
         | 
| 32 42 | 
             
            end
         | 
    
        data/lib/tasks/tasks.rake
    CHANGED
    
    | @@ -7,110 +7,13 @@ end | |
| 7 7 | 
             
            namespace :route_dog do
         | 
| 8 8 | 
             
              desc "Clean Tested Routes File"
         | 
| 9 9 | 
             
              task :clean do
         | 
| 10 | 
            -
                File.delete("test/mock_app/ | 
| 10 | 
            +
                File.delete("test/mock_app/tmp/route_dog_routes.yml") if File.exists? "test/mock_app/tmp/route_dog_routes.yml"
         | 
| 11 11 | 
             
                puts "\nRoute Dog tested routes definition file deleted."
         | 
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              desc "Create A Html Report Of The Routes Defined, Tested And Used"
         | 
| 15 15 | 
             
              task :report => :environment do
         | 
| 16 16 | 
             
                puts "\nCreate A Html Report Of The Routes Defined, Tested And Used\n"
         | 
| 17 | 
            -
                 | 
| 18 | 
            -
                @tested_routes = []
         | 
| 19 | 
            -
                @defined_routes = Rails.application.routes.routes
         | 
| 20 | 
            -
                @defined_routes.reject! { |r| r.path =~ %r{/rails/info/properties} } # Skip the route if it's internal info route
         | 
| 21 | 
            -
                save_and_open_report_in_browser(ERB.new(report_template).result(binding))
         | 
| 17 | 
            +
                RouteDog::Report.generate
         | 
| 22 18 | 
             
              end
         | 
| 23 19 | 
             
            end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
            def save_and_open_report_in_browser(html_report)
         | 
| 26 | 
            -
              path = File.join(Rails.root, "tmp", Rails.application.class.to_s.gsub(":", "").concat("RoutesReport.html").underscore)
         | 
| 27 | 
            -
              File.open(path, "w+") {|file| file.puts(html_report) }
         | 
| 28 | 
            -
              defined?(Launchy) ? Launchy::Browser.run(path) : puts("The report was saved in: #{path}")
         | 
| 29 | 
            -
            end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            def implemented_route?(route)
         | 
| 32 | 
            -
              if find_or_instantiate_controller_for(route).respond_to?(route.requirements[:action])
         | 
| 33 | 
            -
                @implemented_routes << route
         | 
| 34 | 
            -
                true
         | 
| 35 | 
            -
              else
         | 
| 36 | 
            -
                false
         | 
| 37 | 
            -
              end
         | 
| 38 | 
            -
            end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
            def tested_route?(route)
         | 
| 41 | 
            -
              requirements = route.requirements
         | 
| 42 | 
            -
              if RouteDog.route_tested?(requirements[:controller], requirements[:action], route.verb)
         | 
| 43 | 
            -
                @tested_routes << route
         | 
| 44 | 
            -
                true
         | 
| 45 | 
            -
              else
         | 
| 46 | 
            -
                false
         | 
| 47 | 
            -
              end
         | 
| 48 | 
            -
            end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
            def find_or_instantiate_controller_for(route)
         | 
| 51 | 
            -
              requirements = route.requirements
         | 
| 52 | 
            -
              @instantiated_controllers ||= {}
         | 
| 53 | 
            -
              if @instantiated_controllers.has_key?(requirements[:controller])
         | 
| 54 | 
            -
                @instantiated_controllers[requirements[:controller]]
         | 
| 55 | 
            -
              else
         | 
| 56 | 
            -
                begin
         | 
| 57 | 
            -
                  @instantiated_controllers[requirements[:controller]] = RouteDog.constantize_controller_str(requirements[:controller]).new
         | 
| 58 | 
            -
                rescue
         | 
| 59 | 
            -
                  false
         | 
| 60 | 
            -
                end
         | 
| 61 | 
            -
              end
         | 
| 62 | 
            -
            end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
            def report_template
         | 
| 65 | 
            -
              <<-EOT
         | 
| 66 | 
            -
                <html>
         | 
| 67 | 
            -
                  <head>
         | 
| 68 | 
            -
                    <style type="text/css">
         | 
| 69 | 
            -
                      html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre,
         | 
| 70 | 
            -
                      a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp,
         | 
| 71 | 
            -
                      small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset,
         | 
| 72 | 
            -
                      form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
         | 
| 73 | 
            -
                      margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent;}
         | 
| 74 | 
            -
             | 
| 75 | 
            -
                      body { margin: 0; padding: 0; font:15.34px helvetica,arial,freesans,clean,sans-serif; }
         | 
| 76 | 
            -
                      #header { background: red; color: #fff; display: block; height: 70px; }
         | 
| 77 | 
            -
                      h1 { font-size: 18px; padding: 10px 0 0 25px; }
         | 
| 78 | 
            -
                      table#routes { width: 100%; padding: 40px 25px 0; }
         | 
| 79 | 
            -
                      table#routes th, table#routes td { text-align: left; padding: 5px; }
         | 
| 80 | 
            -
                      table#routes tr:nth-child(odd) { background: #eee;}
         | 
| 81 | 
            -
                      div#route_stats {}
         | 
| 82 | 
            -
                      span.yes { color: green; font-weight: bold }
         | 
| 83 | 
            -
                      span.no { color: red; font-weight: bold }
         | 
| 84 | 
            -
                      div#route_stats { background: #444; color: #fff; height: 30px; position: absolute; top: 50px; width: 100%; border-bottom: solid 4px #666 }
         | 
| 85 | 
            -
                      div#route_stats p { padding: 10px 0 0 25px; }
         | 
| 86 | 
            -
                      div#route_stats span { margin: 0 50px 0 10px; color: #fff; font-weight: bold; }
         | 
| 87 | 
            -
                      div#route_stats span.zero_routes { background: #666; padding: 2px; 5px; }
         | 
| 88 | 
            -
                    </style>
         | 
| 89 | 
            -
                  </head>
         | 
| 90 | 
            -
                  <body>
         | 
| 91 | 
            -
                    <div id="header">
         | 
| 92 | 
            -
                      <h1>Route Dog - <%= Rails.application.class.to_s.gsub(/::/, ' ') %> - Routes Report</h1>
         | 
| 93 | 
            -
                    </div>
         | 
| 94 | 
            -
                    <table id="routes">
         | 
| 95 | 
            -
                    <tr><th>Method</th><th>Path</th><th>Action</th><th>Implemented</th><th>Tested</th></tr>
         | 
| 96 | 
            -
                    <% @defined_routes.each do |route| %>
         | 
| 97 | 
            -
                      <tr>
         | 
| 98 | 
            -
                        <td><%= route.verb %></td>
         | 
| 99 | 
            -
                        <td><%= route.path %></td>
         | 
| 100 | 
            -
                        <td><%= route.requirements[:controller] + '#' + route.requirements[:action] %></td>
         | 
| 101 | 
            -
                        <td><%= implemented_route?(route) ? "<span class='yes'>YES</span>" : "<span class='no'>NO</span>" %></td>
         | 
| 102 | 
            -
                        <td><%= tested_route?(route) ? "<span class='yes'>YES</span>" : "<span class='no'>NO</span>" %></td>
         | 
| 103 | 
            -
                    <% end %>
         | 
| 104 | 
            -
                    </table>
         | 
| 105 | 
            -
                    <div id="route_stats">
         | 
| 106 | 
            -
                      <p>
         | 
| 107 | 
            -
                        <strong>Defined:</strong> <span class="value"><%= @defined_routes.size %></span>
         | 
| 108 | 
            -
                        <strong>Implemented:</strong> <span class="value"><%= @implemented_routes.size %></span>
         | 
| 109 | 
            -
                        <strong>Tested:</strong> <span class="value"><%= @tested_routes.size %></span>
         | 
| 110 | 
            -
                          <% if @tested_routes.size == 0 %><span class="zero_routes">You have 0 routes tested, may be you should run your Integrational Tests First!</span><% end %>
         | 
| 111 | 
            -
                      <p>
         | 
| 112 | 
            -
                    </div>
         | 
| 113 | 
            -
                  </body>
         | 
| 114 | 
            -
                </html>
         | 
| 115 | 
            -
              EOT
         | 
| 116 | 
            -
            end
         | 
    
        data/route_dog.gemspec
    CHANGED
    
    | @@ -1,124 +1,128 @@ | |
| 1 1 | 
             
            # Generated by jeweler
         | 
| 2 2 | 
             
            # DO NOT EDIT THIS FILE DIRECTLY
         | 
| 3 | 
            -
            # Instead, edit Jeweler::Tasks in Rakefile, and run  | 
| 3 | 
            +
            # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
         | 
| 4 4 | 
             
            # -*- encoding: utf-8 -*-
         | 
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{route_dog}
         | 
| 8 | 
            -
              s.version = "2.2 | 
| 8 | 
            +
              s.version = "2.4.2"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Alvaro Gil"]
         | 
| 12 | 
            -
              s.date = %q{ | 
| 12 | 
            +
              s.date = %q{2011-04-14}
         | 
| 13 13 | 
             
              s.description = %q{Watch and Notify your not tested routes of a RoR Application, it also has a simple report about Routes defines, used and tested}
         | 
| 14 14 | 
             
              s.email = %q{zevarito@gmail.com}
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| 16 16 | 
             
                "LICENSE",
         | 
| 17 | 
            -
             | 
| 17 | 
            +
                "README.md"
         | 
| 18 18 | 
             
              ]
         | 
| 19 19 | 
             
              s.files = [
         | 
| 20 | 
            -
                " | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 20 | 
            +
                "LICENSE",
         | 
| 21 | 
            +
                "README.md",
         | 
| 22 | 
            +
                "Rakefile",
         | 
| 23 | 
            +
                "VERSION",
         | 
| 24 | 
            +
                "lib/route_dog.rb",
         | 
| 25 | 
            +
                "lib/route_dog/middleware.rb",
         | 
| 26 | 
            +
                "lib/route_dog/middleware/notifier.rb",
         | 
| 27 | 
            +
                "lib/route_dog/middleware/route_dog.rb",
         | 
| 28 | 
            +
                "lib/route_dog/middleware/watcher.rb",
         | 
| 29 | 
            +
                "lib/route_dog/railtie.rb",
         | 
| 30 | 
            +
                "lib/route_dog/report.rb",
         | 
| 31 | 
            +
                "lib/route_dog/templates/report.html.erb",
         | 
| 32 | 
            +
                "lib/route_dog/templates/warning.html.erb",
         | 
| 33 | 
            +
                "lib/tasks/tasks.rake",
         | 
| 34 | 
            +
                "route_dog.gemspec",
         | 
| 35 | 
            +
                "test/integration/pages_controller_test.rb",
         | 
| 36 | 
            +
                "test/integration/products_controller_test.rb",
         | 
| 37 | 
            +
                "test/integration/sessions_controller_test.rb",
         | 
| 38 | 
            +
                "test/integration/users_controller_test.rb",
         | 
| 39 | 
            +
                "test/mock_app/.gitignore",
         | 
| 40 | 
            +
                "test/mock_app/Gemfile",
         | 
| 41 | 
            +
                "test/mock_app/Rakefile",
         | 
| 42 | 
            +
                "test/mock_app/app/controllers/admin/blogs/posts_controller.rb",
         | 
| 43 | 
            +
                "test/mock_app/app/controllers/admin/project_settings_controller.rb",
         | 
| 44 | 
            +
                "test/mock_app/app/controllers/admin/users_controller.rb",
         | 
| 45 | 
            +
                "test/mock_app/app/controllers/application_controller.rb",
         | 
| 46 | 
            +
                "test/mock_app/app/controllers/pages_controller.rb",
         | 
| 47 | 
            +
                "test/mock_app/app/controllers/products_controller.rb",
         | 
| 48 | 
            +
                "test/mock_app/app/controllers/project_settings_controller.rb",
         | 
| 49 | 
            +
                "test/mock_app/app/controllers/sessions_controller.rb",
         | 
| 50 | 
            +
                "test/mock_app/app/controllers/users_controller.rb",
         | 
| 51 | 
            +
                "test/mock_app/app/helpers/application_helper.rb",
         | 
| 52 | 
            +
                "test/mock_app/app/views/layouts/application.html.erb",
         | 
| 53 | 
            +
                "test/mock_app/app/views/users/index.html.erb",
         | 
| 54 | 
            +
                "test/mock_app/config.ru",
         | 
| 55 | 
            +
                "test/mock_app/config/application.rb",
         | 
| 56 | 
            +
                "test/mock_app/config/boot.rb",
         | 
| 57 | 
            +
                "test/mock_app/config/database.yml",
         | 
| 58 | 
            +
                "test/mock_app/config/environment.rb",
         | 
| 59 | 
            +
                "test/mock_app/config/environments/development.rb",
         | 
| 60 | 
            +
                "test/mock_app/config/environments/production.rb",
         | 
| 61 | 
            +
                "test/mock_app/config/environments/test.rb",
         | 
| 62 | 
            +
                "test/mock_app/config/initializers/backtrace_silencers.rb",
         | 
| 63 | 
            +
                "test/mock_app/config/initializers/inflections.rb",
         | 
| 64 | 
            +
                "test/mock_app/config/initializers/mime_types.rb",
         | 
| 65 | 
            +
                "test/mock_app/config/initializers/secret_token.rb",
         | 
| 66 | 
            +
                "test/mock_app/config/initializers/session_store.rb",
         | 
| 67 | 
            +
                "test/mock_app/config/locales/en.yml",
         | 
| 68 | 
            +
                "test/mock_app/config/middlewares_route_dog.yml",
         | 
| 69 | 
            +
                "test/mock_app/config/routes.rb",
         | 
| 70 | 
            +
                "test/mock_app/db/seeds.rb",
         | 
| 71 | 
            +
                "test/mock_app/public/404.html",
         | 
| 72 | 
            +
                "test/mock_app/public/422.html",
         | 
| 73 | 
            +
                "test/mock_app/public/500.html",
         | 
| 74 | 
            +
                "test/mock_app/public/favicon.ico",
         | 
| 75 | 
            +
                "test/mock_app/public/images/rails.png",
         | 
| 76 | 
            +
                "test/mock_app/public/index.html",
         | 
| 77 | 
            +
                "test/mock_app/public/javascripts/application.js",
         | 
| 78 | 
            +
                "test/mock_app/public/javascripts/controls.js",
         | 
| 79 | 
            +
                "test/mock_app/public/javascripts/dragdrop.js",
         | 
| 80 | 
            +
                "test/mock_app/public/javascripts/effects.js",
         | 
| 81 | 
            +
                "test/mock_app/public/javascripts/prototype.js",
         | 
| 82 | 
            +
                "test/mock_app/public/javascripts/rails.js",
         | 
| 83 | 
            +
                "test/mock_app/public/robots.txt",
         | 
| 84 | 
            +
                "test/mock_app/public/stylesheets/.gitkeep",
         | 
| 85 | 
            +
                "test/mock_app/tmp/.gitignore",
         | 
| 86 | 
            +
                "test/support/assertions.rb",
         | 
| 87 | 
            +
                "test/test_helper.rb",
         | 
| 88 | 
            +
                "test/unit/route_dog_test.rb"
         | 
| 86 89 | 
             
              ]
         | 
| 87 90 | 
             
              s.homepage = %q{http://github.com/zevarito/route_dog}
         | 
| 88 | 
            -
              s.rdoc_options = ["--charset=UTF-8"]
         | 
| 89 91 | 
             
              s.require_paths = ["lib"]
         | 
| 90 92 | 
             
              s.rubyforge_project = %q{routedog}
         | 
| 91 93 | 
             
              s.rubygems_version = %q{1.3.7}
         | 
| 92 94 | 
             
              s.summary = %q{Watch and Notify your not tested routes of a RoR Application}
         | 
| 93 95 | 
             
              s.test_files = [
         | 
| 96 | 
            +
                "test/integration/pages_controller_test.rb",
         | 
| 94 97 | 
             
                "test/integration/products_controller_test.rb",
         | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
             | 
| 116 | 
            -
             | 
| 117 | 
            -
             | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 98 | 
            +
                "test/integration/sessions_controller_test.rb",
         | 
| 99 | 
            +
                "test/integration/users_controller_test.rb",
         | 
| 100 | 
            +
                "test/mock_app/app/controllers/admin/blogs/posts_controller.rb",
         | 
| 101 | 
            +
                "test/mock_app/app/controllers/admin/project_settings_controller.rb",
         | 
| 102 | 
            +
                "test/mock_app/app/controllers/admin/users_controller.rb",
         | 
| 103 | 
            +
                "test/mock_app/app/controllers/application_controller.rb",
         | 
| 104 | 
            +
                "test/mock_app/app/controllers/pages_controller.rb",
         | 
| 105 | 
            +
                "test/mock_app/app/controllers/products_controller.rb",
         | 
| 106 | 
            +
                "test/mock_app/app/controllers/project_settings_controller.rb",
         | 
| 107 | 
            +
                "test/mock_app/app/controllers/sessions_controller.rb",
         | 
| 108 | 
            +
                "test/mock_app/app/controllers/users_controller.rb",
         | 
| 109 | 
            +
                "test/mock_app/app/helpers/application_helper.rb",
         | 
| 110 | 
            +
                "test/mock_app/config/application.rb",
         | 
| 111 | 
            +
                "test/mock_app/config/boot.rb",
         | 
| 112 | 
            +
                "test/mock_app/config/environment.rb",
         | 
| 113 | 
            +
                "test/mock_app/config/environments/development.rb",
         | 
| 114 | 
            +
                "test/mock_app/config/environments/production.rb",
         | 
| 115 | 
            +
                "test/mock_app/config/environments/test.rb",
         | 
| 116 | 
            +
                "test/mock_app/config/initializers/backtrace_silencers.rb",
         | 
| 117 | 
            +
                "test/mock_app/config/initializers/inflections.rb",
         | 
| 118 | 
            +
                "test/mock_app/config/initializers/mime_types.rb",
         | 
| 119 | 
            +
                "test/mock_app/config/initializers/secret_token.rb",
         | 
| 120 | 
            +
                "test/mock_app/config/initializers/session_store.rb",
         | 
| 121 | 
            +
                "test/mock_app/config/routes.rb",
         | 
| 122 | 
            +
                "test/mock_app/db/seeds.rb",
         | 
| 123 | 
            +
                "test/support/assertions.rb",
         | 
| 124 | 
            +
                "test/test_helper.rb",
         | 
| 125 | 
            +
                "test/unit/route_dog_test.rb"
         | 
| 122 126 | 
             
              ]
         | 
| 123 127 |  | 
| 124 128 | 
             
              if s.respond_to? :specification_version then
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            require File.expand_path(File.dirname(__FILE__) + '/../test_helper.rb')
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class PagesControllerTest < ActionController::IntegrationTest
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              def setup
         | 
| 6 | 
            +
                @controller = PagesController.new
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              context "Hiting routes" do
         | 
| 10 | 
            +
                test "Hit a route with an unespecified action" do
         | 
| 11 | 
            +
                  get "/pages/home"
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| 
            File without changes
         | 
    
        data/test/support/assertions.rb
    CHANGED
    
    | @@ -22,6 +22,7 @@ end | |
| 22 22 |  | 
| 23 23 | 
             
            def assert_notify_for(controller, action, method = :get)
         | 
| 24 24 | 
             
              html_notification = Nokogiri::HTML(response.body).search('div#route_dog_warning')
         | 
| 25 | 
            +
              assert html_notification.text =~ /Has Not Integration Tests/
         | 
| 25 26 | 
             
              assert html_notification.any?, "Expected {:controller => :#{controller}, :action => :#{action}, :method => :#{method}} Notify That The Route Has Not Tests"
         | 
| 26 27 | 
             
            end
         | 
| 27 28 |  | 
    
        data/test/unit/route_dog_test.rb
    CHANGED
    
    | @@ -31,12 +31,12 @@ class RouteDogTest < Test::Unit::TestCase | |
| 31 31 |  | 
| 32 32 | 
             
                test "identify routes that respond to get method" do
         | 
| 33 33 | 
             
                  write_tested_routes_yaml("products" => {"index" => ["get"]})
         | 
| 34 | 
            -
                  assert_equal true, RouteDog. | 
| 34 | 
            +
                  assert_equal true, RouteDog.route_tested_with_requirements?(:products, :index, :get)
         | 
| 35 35 | 
             
                end
         | 
| 36 36 |  | 
| 37 37 | 
             
                test "identify routes that respond to any method" do
         | 
| 38 38 | 
             
                  write_tested_routes_yaml("products" => {"index" => ["get"]})
         | 
| 39 | 
            -
                  assert_equal true, RouteDog. | 
| 39 | 
            +
                  assert_equal true, RouteDog.route_tested_with_requirements?(:products, :index, nil)
         | 
| 40 40 | 
             
                end
         | 
| 41 41 | 
             
              end
         | 
| 42 42 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: route_dog
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 27
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 2
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 2. | 
| 8 | 
            +
              - 4
         | 
| 9 | 
            +
              - 2
         | 
| 10 | 
            +
              version: 2.4.2
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Alvaro Gil
         | 
| @@ -15,7 +15,7 @@ autorequire: | |
| 15 15 | 
             
            bindir: bin
         | 
| 16 16 | 
             
            cert_chain: []
         | 
| 17 17 |  | 
| 18 | 
            -
            date: 2011-04- | 
| 18 | 
            +
            date: 2011-04-14 00:00:00 -03:00
         | 
| 19 19 | 
             
            default_executable: 
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -101,8 +101,12 @@ files: | |
| 101 101 | 
             
            - lib/route_dog/middleware/route_dog.rb
         | 
| 102 102 | 
             
            - lib/route_dog/middleware/watcher.rb
         | 
| 103 103 | 
             
            - lib/route_dog/railtie.rb
         | 
| 104 | 
            +
            - lib/route_dog/report.rb
         | 
| 105 | 
            +
            - lib/route_dog/templates/report.html.erb
         | 
| 106 | 
            +
            - lib/route_dog/templates/warning.html.erb
         | 
| 104 107 | 
             
            - lib/tasks/tasks.rake
         | 
| 105 108 | 
             
            - route_dog.gemspec
         | 
| 109 | 
            +
            - test/integration/pages_controller_test.rb
         | 
| 106 110 | 
             
            - test/integration/products_controller_test.rb
         | 
| 107 111 | 
             
            - test/integration/sessions_controller_test.rb
         | 
| 108 112 | 
             
            - test/integration/users_controller_test.rb
         | 
| @@ -113,6 +117,7 @@ files: | |
| 113 117 | 
             
            - test/mock_app/app/controllers/admin/project_settings_controller.rb
         | 
| 114 118 | 
             
            - test/mock_app/app/controllers/admin/users_controller.rb
         | 
| 115 119 | 
             
            - test/mock_app/app/controllers/application_controller.rb
         | 
| 120 | 
            +
            - test/mock_app/app/controllers/pages_controller.rb
         | 
| 116 121 | 
             
            - test/mock_app/app/controllers/products_controller.rb
         | 
| 117 122 | 
             
            - test/mock_app/app/controllers/project_settings_controller.rb
         | 
| 118 123 | 
             
            - test/mock_app/app/controllers/sessions_controller.rb
         | 
| @@ -134,7 +139,7 @@ files: | |
| 134 139 | 
             
            - test/mock_app/config/initializers/secret_token.rb
         | 
| 135 140 | 
             
            - test/mock_app/config/initializers/session_store.rb
         | 
| 136 141 | 
             
            - test/mock_app/config/locales/en.yml
         | 
| 137 | 
            -
            - test/mock_app/config/ | 
| 142 | 
            +
            - test/mock_app/config/middlewares_route_dog.yml
         | 
| 138 143 | 
             
            - test/mock_app/config/routes.rb
         | 
| 139 144 | 
             
            - test/mock_app/db/seeds.rb
         | 
| 140 145 | 
             
            - test/mock_app/public/404.html
         | 
| @@ -190,6 +195,7 @@ signing_key: | |
| 190 195 | 
             
            specification_version: 3
         | 
| 191 196 | 
             
            summary: Watch and Notify your not tested routes of a RoR Application
         | 
| 192 197 | 
             
            test_files: 
         | 
| 198 | 
            +
            - test/integration/pages_controller_test.rb
         | 
| 193 199 | 
             
            - test/integration/products_controller_test.rb
         | 
| 194 200 | 
             
            - test/integration/sessions_controller_test.rb
         | 
| 195 201 | 
             
            - test/integration/users_controller_test.rb
         | 
| @@ -197,6 +203,7 @@ test_files: | |
| 197 203 | 
             
            - test/mock_app/app/controllers/admin/project_settings_controller.rb
         | 
| 198 204 | 
             
            - test/mock_app/app/controllers/admin/users_controller.rb
         | 
| 199 205 | 
             
            - test/mock_app/app/controllers/application_controller.rb
         | 
| 206 | 
            +
            - test/mock_app/app/controllers/pages_controller.rb
         | 
| 200 207 | 
             
            - test/mock_app/app/controllers/products_controller.rb
         | 
| 201 208 | 
             
            - test/mock_app/app/controllers/project_settings_controller.rb
         | 
| 202 209 | 
             
            - test/mock_app/app/controllers/sessions_controller.rb
         |