From c0ccf5f09a1bf35fe26e177747a0e804669370b2 Mon Sep 17 00:00:00 2001 From: Diego Araújo Date: Tue, 17 Dec 2013 16:57:11 -0200 Subject: [PATCH] Reading group entity. --- app/models/reading.rb | 4 ++++ app/models/reading_group.rb | 12 ++++++++++++ spec/factories/reading_groups.rb | 4 ++-- spec/models/reading_group_spec.rb | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ spec/models/reading_spec.rb | 5 +++++ 5 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 app/models/reading.rb create mode 100644 app/models/reading_group.rb create mode 100644 spec/models/reading_group_spec.rb create mode 100644 spec/models/reading_spec.rb diff --git a/app/models/reading.rb b/app/models/reading.rb new file mode 100644 index 0000000..a34edc8 --- /dev/null +++ b/app/models/reading.rb @@ -0,0 +1,4 @@ +class Reading < KalibroGem::Entities::Reading + include KalibroRecord + +end diff --git a/app/models/reading_group.rb b/app/models/reading_group.rb new file mode 100644 index 0000000..b5e92a6 --- /dev/null +++ b/app/models/reading_group.rb @@ -0,0 +1,12 @@ +require "validators/kalibro_uniqueness_validator.rb" + +class ReadingGroup < KalibroGem::Entities::ReadingGroup + include KalibroRecord + + attr_accessor :name + validates :name, presence: true, kalibro_uniqueness: true + + def readings + Reading.readings_of(self.id) + end +end diff --git a/spec/factories/reading_groups.rb b/spec/factories/reading_groups.rb index b36e671..d69e554 100644 --- a/spec/factories/reading_groups.rb +++ b/spec/factories/reading_groups.rb @@ -1,7 +1,7 @@ FactoryGirl.define do - factory :reading_group, class: KalibroGem::Entities::ReadingGroup do + factory :reading_group do id 1 name "Mussum" description "Cacildis!" end -end \ No newline at end of file +end diff --git a/spec/models/reading_group_spec.rb b/spec/models/reading_group_spec.rb new file mode 100644 index 0000000..5a135f2 --- /dev/null +++ b/spec/models/reading_group_spec.rb @@ -0,0 +1,75 @@ +require 'spec_helper' + +describe ReadingGroup do + describe 'methods' do + describe 'persisted?' do + before :each do + @subject = FactoryGirl.build(:reading_group) + ReadingGroup.expects(:exists?).with(@subject.id).returns(false) + end + + it 'should return false' do + @subject.persisted?.should eq(false) + end + end + + describe 'update' do + before :each do + @qt = FactoryGirl.build(:reading_group) + @qt_params = Hash[FactoryGirl.attributes_for(:reading_group).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers + end + + context 'with valid attributes' do + before :each do + @qt.expects(:save).returns(true) + end + + it 'should return true' do + @qt.update(@qt_params).should eq(true) + end + end + + context 'with invalid attributes' do + before :each do + @qt.expects(:save).returns(false) + end + + it 'should return false' do + @qt.update(@qt_params).should eq(false) + end + end + end + + describe 'readings' do + subject { FactoryGirl.build(:reading_group) } + let(:reading) { FactoryGirl.build(:reading) } + + it 'should call readings_of on the Reading model' do + Reading.expects(:readings_of).with(subject.id).returns([reading]) + + subject.readings.should include(reading) + end + end + end + + describe 'validations' do + subject {FactoryGirl.build(:reading_group)} + context 'active model validations' do + before :each do + ReadingGroup.expects(:all).at_least_once.returns([]) + end + it { should validate_presence_of(:name) } + end + + context 'kalibro validations' do + before :each do + ReadingGroup.expects(:request).returns(42) + end + + it 'should validate uniqueness' do + KalibroUniquenessValidator.any_instance.expects(:validate_each).with(subject, :name, subject.name) + subject.save + end + end + end +end diff --git a/spec/models/reading_spec.rb b/spec/models/reading_spec.rb new file mode 100644 index 0000000..566ef2f --- /dev/null +++ b/spec/models/reading_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' + +describe Reading do + +end -- libgit2 0.21.2