0

ユーザーのサインアップ/ログインにSorcerygemを使用しています。

このgemの機能の1つは、require_login認証するコントローラーのbefore_filterです。

アプリがログインした後、アプリの名前空間を作成しdashboardました。たとえば、/dashboard/reportsまたは/dashboard/employeesなど。

ルートファイル:

# Dashboard                                                
namespace :dashboard do                                      
  # Recent Activity                                          
  get '' => redirect('/dashboard/recent-activity')           
  get 'recent-activity' => 'activities#index', :as => 'root' 
  # Other dashboard controllers and actions
end  

before_filterを、次の名前の独自のコントローラーに抽出しました。

「app/controllers / dashboard/base_controller.rb」

class Dashboard::BaseController < ApplicationController

  before_filter :require_login

end

私がやりたいのは、ある種のテストで、ダッシュボードフォルダー(またはダッシュボード名前空間)内に作成した新しいコントローラーが、から継承することを100%確認することです。Dashboard::BaseController

たとえば、私のアクティビティコントローラなど:

class Dashboard::ActivitiesController < Dashboard::BaseController

数か月以内にコントローラーを作成し、誤ってApplicationControllerから継承させたくありませんが、ログイン機能はありません。

RSpecを使用しています

4

1 に答える 1

1

これを自分で解決したとは、自分の目が信じられないほどです....

require 'spec_helper'

describe Dashboard::BaseController do

  it "is the superclass of every dashboard namespaced controller" do
    Rails.application.eager_load!
    ApplicationController.descendants.each do |controller|
      if controller.to_s.include?("Dashboard::") && controller.to_s != "Dashboard::BaseController"
        expect(controller.superclass.to_s).to eq("Dashboard::BaseController")      
      end
    end
  end

end    
于 2013-03-09T06:10:44.940 に答える