Add model WikiDirectory

This commit is contained in:
Alex Braha Stoll 2016-12-26 13:07:40 -02:00
parent 8d8c5d9f61
commit b361a67fb0
3 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,13 @@
class WikiDirectory
include ActiveModel::Validations
attr_accessor :slug, :pages, :directories
validates :slug, presence: true
def initialize(slug, pages = [], directories = [])
@slug = slug
@pages = pages
@directories = directories
end
end

View File

@ -0,0 +1,6 @@
FactoryGirl.define do
factory :wiki_directory do
slug '/path_up_to/dir'
initialize_with { new(slug) }
end
end

View File

@ -0,0 +1,45 @@
require 'spec_helper'
RSpec.describe WikiDirectory, models: true do
describe 'validations' do
subject { build(:wiki_directory) }
it { is_expected.to validate_presence_of(:slug) }
end
describe '#initialize' do
context 'when there are pages and directories' do
let(:pages) { [build(:wiki_page)] }
let(:other_directories) { [build(:wiki_directory)] }
let(:directory) { WikiDirectory.new('/path_up_to/dir', pages, other_directories) }
it 'sets the slug attribute' do
expect(directory.slug).to eq('/path_up_to/dir')
end
it 'sets the pages attribute' do
expect(directory.pages).to eq(pages)
end
it 'sets the directories attribute' do
expect(directory.directories).to eq(other_directories)
end
end
context 'when there are no pages or directories' do
let(:directory) { WikiDirectory.new('/path_up_to/dir') }
it 'sets the slug attribute' do
expect(directory.slug).to eq('/path_up_to/dir')
end
it 'sets the pages attribute to an empty array' do
expect(directory.pages).to eq([])
end
it 'sets the directories attribute to an empty array' do
expect(directory.directories).to eq([])
end
end
end
end