Skip to content

Commit

Permalink
Use latest method, create history repository method for all setting c…
Browse files Browse the repository at this point in the history
…hanges and update table
  • Loading branch information
davydovanton committed Feb 19, 2018
1 parent fce43c5 commit 7e56303
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 10 deletions.
2 changes: 1 addition & 1 deletion apps/admin/controllers/settings/index.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class Index
expose :settings

def call(params)
@settings = SettingRepository.new.for_display
@settings = SettingRepository.new.latest
end
end
end
2 changes: 1 addition & 1 deletion apps/admin/controllers/settings/new.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class New
expose :settings

def call(params)
@settings = SettingRepository.new.for_display
@settings = SettingRepository.new.latest
end
end
end
2 changes: 1 addition & 1 deletion apps/web/views/application_layout.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def faq_page_class
private

def settings
@settings ||= SettingRepository.new.for_display
@settings ||= SettingRepository.new.latest
end
end
end
Expand Down
5 changes: 5 additions & 0 deletions db/migrations/20180219121313_add_created_at_to_settings.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Hanami::Model.migration do
change do
add_column :settings, :created_at, DateTime, null: false
end
end
9 changes: 8 additions & 1 deletion lib/contributors/repositories/setting_repository.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
class SettingRepository < Hanami::Repository
def for_display
def history
settings
.order{ created_at.desc }
.map_to(Setting)
.to_a
end

def latest
settings
.order{ created_at.desc }
.limit(1).map_to(Setting)
Expand Down
29 changes: 23 additions & 6 deletions spec/contributors/repositories/setting_repository_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,40 @@

after { repo.clear }

describe '#for_display' do
describe '#latest' do
context 'when settings exist in db' do
before { repo.create(title: 'Hanami') }

it { expect(repo.for_display).to be_a Setting }
it { expect(repo.for_display.title).to eq 'Hanami' }
it { expect(repo.latest).to be_a Setting }
it { expect(repo.latest.title).to eq 'Hanami' }

context 'and settings more than one' do
before { repo.create(title: 'Hanami latest') }

it { expect(repo.for_display.title).to eq 'Hanami latest' }
it { expect(repo.latest.title).to eq 'Hanami latest' }
end
end

context 'when settings exist in db' do
it { expect(repo.for_display).to be_a Setting }
it { expect(repo.for_display.title).to eq nil }
it { expect(repo.latest).to be_a Setting }
it { expect(repo.latest.title).to eq nil }
end
end

describe '#history' do
context 'when settings exist in db' do
before do
repo.create(title: 'Hanami #1')
repo.create(title: 'Hanami #2')
end

it { expect(repo.history).to be_a Array }
it { expect(repo.history).to all(be_a Setting) }
it { expect(repo.history.map(&:title)).to eq ['Hanami #2', 'Hanami #1'] }
end

context 'when settings not exist in db' do
it { expect(repo.history).to eq [] }
end
end
end

0 comments on commit 7e56303

Please sign in to comment.