Skip to content

Commit

Permalink
Refactor content_pages_controller a bit and begin to test
Browse files Browse the repository at this point in the history
  • Loading branch information
akofink committed Aug 16, 2013
1 parent 66426d4 commit 38b0fe8
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 69 deletions.
1 change: 1 addition & 0 deletions .rspec
@@ -0,0 +1 @@
--color
34 changes: 10 additions & 24 deletions app/models/content_page.rb
@@ -1,52 +1,39 @@
require 'redcloth'

class ContentPage < ActiveRecord::Base

validates_presence_of :name
validates_uniqueness_of :name
attr_accessor :content_html


def self.find_for_permission(p_ids)
if p_ids and p_ids.length > 0
return find(:all,
:conditions => ['permission_id in (?)', p_ids],
:order => 'name')
else
return Array.new
end
where('permission_id in (?)', p_ids)
.order(:name)
end


def url
return "/#{self.name}"
"/#{self.name}"
end


def markup_style
if not @markup_style and self.markup_style_id and self.markup_style_id > 0
@markup_style = MarkupStyle.find(self.markup_style_id)
if !@markup_style && markup_style_id && markup_style_id > 0
@markup_style = MarkupStyle.find markup_style_id
end
return @markup_style
end


def before_save
self.content_cache = self.markup_content
self.content_cache = markup_content
end


def content_html
if self.content_cache and self.content_cache.length > 0
return self.content_cache.html_safe
if content_cache && content_cache.length > 0
content_cache.html_safe
else
return self.markup_content.html_safe
markup_content.html_safe
end
end


protected

def markup_content
markup = self.markup_style
if markup and markup.name
Expand All @@ -62,5 +49,4 @@ def markup_content
end
return content_html
end

end
23 changes: 23 additions & 0 deletions spec/models/content_page_spec.rb
@@ -0,0 +1,23 @@
require 'spec_helper'

describe ContentPage do
let(:content_page) { ContentPage.new }

describe 'validations' do
it 'has a name' do
content_page.should_not be_valid
end

it 'has a unique name' do
ContentPage.create(name: 'foo').should be_valid
ContentPage.new(name: 'foo').should_not be_valid
end
end

describe '#url' do
it 'formats the url by preceeding the name with a slash' do
content_page.should_receive(:name).and_return 'foo'
content_page.url.should == '/foo'
end
end
end
74 changes: 29 additions & 45 deletions spec/spec_helper.rb
@@ -1,54 +1,38 @@
# This file is copied to ~/spec when you run 'ruby script/generate rspec'
# from the project root directory.
# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path(File.join(File.dirname(__FILE__),'..','config','environment'))
require 'spec/autorun'
require 'spec/rails'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'

# Uncomment the next line to use webrat's matchers
#require 'webrat/integrations/rspec-rails'
# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

# Requires supporting files with custom matchers and macros, etc,
# in ./support/ and its subdirectories.
Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}

Spec::Runner.configure do |config|
# If you're not using ActiveRecord you should remove these
# lines, delete config/database.yml and disable :active_record
# in your config/boot.rb
config.use_transactional_fixtures = true
config.use_instantiated_fixtures = false
config.fixture_path = RAILS_ROOT + '/spec/fixtures/'

# == Fixtures
#
# You can declare fixtures for each example_group like this:
# describe "...." do
# fixtures :table_a, :table_b
#
# Alternatively, if you prefer to declare them only once, you can
# do so right here. Just uncomment the next line and replace the fixture
# names with your fixtures.
#
# config.global_fixtures = :table_a, :table_b
#
# If you declare global fixtures, be aware that they will be declared
# for all of your examples, even those that don't use them.
#
# You can also declare which fixtures to use (for example fixtures for test/fixtures):
#
# config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
RSpec.configure do |config|
# ## Mock Framework
#
# == Mock Framework
#
# RSpec uses its own mocking framework by default. If you prefer to
# use mocha, flexmock or RR, uncomment the appropriate line:
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
#
# config.mock_with :mocha
# config.mock_with :flexmock
# config.mock_with :rr
#
# == Notes
#
# For more information take a look at Spec::Runner::Configuration and Spec::Runner

# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
config.fixture_path = "#{::Rails.root}/spec/fixtures"

# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
config.use_transactional_fixtures = true

# If true, the base class of anonymous controllers will be inferred
# automatically. This will be the default behavior in future versions of
# rspec-rails.
config.infer_base_class_for_anonymous_controllers = false

# Run specs in random order to surface order dependencies. If you find an
# order dependency and want to debug it, you can fix the order by providing
# the seed, which is printed after each run.
# --seed 1234
config.order = "random"
end

0 comments on commit 38b0fe8

Please sign in to comment.