mardi 7 juillet 2015

RSpec test failing for routes that accept id param

I'm trying to test the ArticlesController in my Rails applications. All of the routes that do not accept params are passing. But all of the routes that expect an id param are failing.

Failures:

  1) ArticlesController should find article by id
     Failure/Error: get :info, id: @article[:id]
     ActionController::UrlGenerationError:
       No route matches {:action=>"info", :controller=>"articles", :id=>"60"}
     # ./spec/controllers/articles_controller_spec.rb:26:in `block (2 levels) in <top (required)>'

  2) ArticlesController should export folder
     Failure/Error: get :export_folder, id: @article[:id]
     ActionController::UrlGenerationError:
       No route matches {:action=>"export_folder", :controller=>"articles", :id=>"60"}
     # ./spec/controllers/articles_controller_spec.rb:56:in `block (2 levels) in <top (required)>'

  3) ArticlesController should export an article by id
     Failure/Error: get :export, id: @article[:id]
     ActionController::UrlGenerationError:
       No route matches {:action=>"export", :controller=>"articles", :id=>"60"}
     # ./spec/controllers/articles_controller_spec.rb:50:in `block (2 levels) in <top (required)>'

config/routes.rb

namespace :articles do
    get 'list'
    get 'trendlist'
    get 'show/:id', to: 'articles#show'
    get 'index'
    get 'info/:id', to: 'articles#info'
    get 'export/:id', to: 'articles#export'
    get 'view/:id', to: 'articles#view'
    get 'favorite/:id', to: 'articles#favorite'
    get 'trending'
    get 'deleted'
    get 'csv/:id', to: 'articles#csv'
    get 'export_folder/:id', to: 'articles#export_folder'
  end

spec/controllers/articles_controller.rb

require 'spec_helper'

describe ArticlesController do
  before(:all) do
    Article.destroy_all
    Comfy::Cms::Layout.destroy_all
    Comfy::Cms::Site.destroy_all
    site = FactoryGirl.create(:cms_site)
    layout = FactoryGirl.create(:cms_layout, site_id: site[:id])
    @article = FactoryGirl.create(:cms_page, layout_id: layout[:id], site_id: site[:id])
  end

  it 'should index articles' do
    get :index
    expect(response.response_code).to eq(200)
    expect(response.headers).to include( 'Content-Type' => 'application/json; charset=utf-8')
  end

  its 'should list articles' do
    get :list
    expect(response.response_code).to eq(200)
    expect(response.headers).to include( 'Content-Type' => 'text/html; charset=utf-8')
  end

  it 'should find article by id' do
    get :info, id: @article[:id]
    expect(response.response_code).to eq(200)
    expect(response.headers).to include( 'Content-Type' => 'application/json; charset=utf-8')
  end

  it 'should list deleted articles' do
    get :deleted
    expect(response.response_code).to eq(200)
    expect(response.headers).to include( 'Content-Type' => 'application/json; charset=utf-8')
  end

  it 'should list trending articles' do
    get :trending
    expect(response.response_code).to eq(200)
    expect(response.headers).to include( 'Content-Type' => 'application/json; charset=utf-8')
  end

  it 'should update trending articles' do
    get :trendlist
    expect(response.response_code).to eq(200)
    expect(response.headers).to include( 'Content-Type' => 'text/html; charset=utf-8')
  end

  it 'should export an article by id' do
    get :export, id: @article[:id]
    expect(response.response_code).to eq(200)
    expect(response.headers).to include( 'Content-Type' => 'text/csv; charset=utf-8')
  end

  it 'should export folder' do
    get :export_folder, id: @article[:id]
    response.response_code.should eq(200)
    expect(response.headers).to include( 'Content-Type' => 'text/html; charset=utf-8')
  end
end

rake routes

Prefix Verb   URI Pattern                                                               Controller#Action
                                        tags GET    /tags(.:format)                                                           tags#index
                               articles_list GET    /articles/list(.:format)                                                  articles#list
                          articles_trendlist GET    /articles/trendlist(.:format)                                             articles#trendlist
                                    articles GET    /articles/show/:id(.:format)                                              articles/articles#show
                              articles_index GET    /articles/index(.:format)                                                 articles#index
                                             GET    /articles/info/:id(.:format)                                              articles/articles#info
                                             GET    /articles/export/:id(.:format)                                            articles/articles#export
                                             GET    /articles/view/:id(.:format)                                              articles/articles#view
                                             GET    /articles/favorite/:id(.:format)                                          articles/articles#favorite
                           articles_trending GET    /articles/trending(.:format)                                              articles#trending
                            articles_deleted GET    /articles/deleted(.:format)                                               articles#deleted
                                             GET    /articles/csv/:id(.:format)                                               articles/articles#csv
                                             GET    /articles/export_folder/:id(.:format)                                     articles/articles#export_folder

Aucun commentaire:

Enregistrer un commentaire