mirror of
https://github.com/internetee/registry.git
synced 2025-08-03 08:22:05 +02:00
parent
3741e2d2a3
commit
58ae53b1e6
17 changed files with 264 additions and 13 deletions
|
@ -6,5 +6,13 @@ FactoryGirl.define do
|
|||
duration '1 year'
|
||||
operation_category Billing::Price.operation_categories.first
|
||||
zone
|
||||
|
||||
factory :unexpired_price do
|
||||
expire_time { Time.zone.now + 1.day }
|
||||
end
|
||||
|
||||
factory :expired_price do
|
||||
expire_time { Time.zone.now - 1.day }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,24 +1,22 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.feature 'Editing price in admin area', settings: false do
|
||||
given!(:price) { create(:price) }
|
||||
given!(:price) { create(:unexpired_price) }
|
||||
|
||||
background do
|
||||
sign_in_to_admin_area
|
||||
end
|
||||
|
||||
scenario 'updates price' do
|
||||
visit admin_prices_url
|
||||
visit admin_prices_path
|
||||
open_form
|
||||
submit_form
|
||||
|
||||
expect(page).to have_text(t('admin.billing.prices.update.updated'))
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def open_form
|
||||
click_link_or_button 'admin-edit-price-btn'
|
||||
find('.edit-price-btn').click
|
||||
end
|
||||
|
||||
def submit_form
|
||||
|
|
25
spec/features/admin/billing/prices/expire_spec.rb
Normal file
25
spec/features/admin/billing/prices/expire_spec.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.feature 'Expiring price in admin area', settings: false do
|
||||
given!(:price) { create(:unexpired_price) }
|
||||
|
||||
background do
|
||||
sign_in_to_admin_area
|
||||
end
|
||||
|
||||
scenario 'expires price' do
|
||||
visit admin_prices_path
|
||||
open_edit_form
|
||||
expire
|
||||
|
||||
expect(page).to have_text(t('admin.billing.prices.expire.expired'))
|
||||
end
|
||||
|
||||
def open_edit_form
|
||||
find('.edit-price-btn').click
|
||||
end
|
||||
|
||||
def expire
|
||||
click_link_or_button t('admin.billing.prices.edit.expire_btn')
|
||||
end
|
||||
end
|
33
spec/features/admin/billing/prices/list_spec.rb
Normal file
33
spec/features/admin/billing/prices/list_spec.rb
Normal file
|
@ -0,0 +1,33 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.feature 'Viewing prices in admin area', settings: false do
|
||||
given!(:unexpired_price) { create(:unexpired_price) }
|
||||
given!(:expired_price) { create(:expired_price) }
|
||||
|
||||
background do
|
||||
sign_in_to_admin_area
|
||||
end
|
||||
|
||||
describe 'search' do
|
||||
context 'when validity is not selected' do
|
||||
scenario 'shows unexpired prices' do
|
||||
visit admin_prices_path
|
||||
expect(page).to have_css('.price', count: 1)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when validity is given' do
|
||||
scenario 'filters by given validity' do
|
||||
visit admin_prices_path
|
||||
select 'unexpired', from: 'search_validity'
|
||||
submit_search_form
|
||||
|
||||
expect(page).to have_css('.price', count: 1)
|
||||
end
|
||||
end
|
||||
|
||||
def submit_search_form
|
||||
find('.price-search-form-search-btn').click
|
||||
end
|
||||
end
|
||||
end
|
|
@ -16,8 +16,6 @@ RSpec.feature 'New price in admin area', settings: false do
|
|||
expect(page).to have_text(t('admin.billing.prices.create.created'))
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def open_list
|
||||
click_link_or_button t('admin.menu.prices')
|
||||
end
|
||||
|
|
|
@ -3,6 +3,7 @@ require 'rails_helper'
|
|||
RSpec.describe Billing::Price do
|
||||
it { is_expected.to monetize(:price) }
|
||||
it { is_expected.to be_versioned }
|
||||
it { is_expected.to alias_attribute(:expire_time, :valid_to) }
|
||||
|
||||
it 'should have one version' do
|
||||
with_versioning do
|
||||
|
|
69
spec/models/concerns/billing/price/expirable_spec.rb
Normal file
69
spec/models/concerns/billing/price/expirable_spec.rb
Normal file
|
@ -0,0 +1,69 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Billing::Price do
|
||||
describe '::unexpired' do
|
||||
before :example do
|
||||
travel_to Time.zone.parse('05.07.2010 00:00')
|
||||
|
||||
create(:price, id: 1, expire_time: Time.zone.parse('04.07.2010 23:59'))
|
||||
create(:price, id: 2, expire_time: Time.zone.parse('05.07.2010 00:00'))
|
||||
create(:price, id: 3, expire_time: Time.zone.parse('05.07.2010 00:01'))
|
||||
end
|
||||
|
||||
it 'returns prices with expire time in the future ' do
|
||||
expect(described_class.unexpired.ids).to eq([2, 3])
|
||||
end
|
||||
end
|
||||
|
||||
describe '::expired' do
|
||||
before :example do
|
||||
travel_to Time.zone.parse('05.07.2010 00:00')
|
||||
|
||||
create(:price, id: 1, expire_time: Time.zone.parse('04.07.2010 23:59'))
|
||||
create(:price, id: 2, expire_time: Time.zone.parse('05.07.2010 00:00'))
|
||||
create(:price, id: 3, expire_time: Time.zone.parse('05.07.2010 00:01'))
|
||||
end
|
||||
|
||||
it 'returns prices with expire time in the past ' do
|
||||
expect(described_class.expired.ids).to eq([1])
|
||||
end
|
||||
end
|
||||
|
||||
describe '#expire', db: false do
|
||||
let(:price) { described_class.new(expire_time: Time.zone.parse('06.07.2010')) }
|
||||
|
||||
before :example do
|
||||
travel_to Time.zone.parse('05.07.2010 00:00')
|
||||
end
|
||||
|
||||
it 'expires price' do
|
||||
expect { price.expire }.to change { price.expired? }.from(false).to(true)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#expired?', db: false do
|
||||
subject(:expired) { domain.expired? }
|
||||
|
||||
before :example do
|
||||
travel_to Time.zone.parse('05.07.2010 00:00')
|
||||
end
|
||||
|
||||
context 'when expire time is in the past' do
|
||||
let(:domain) { described_class.new(expire_time: Time.zone.parse('04.07.2010 23:59')) }
|
||||
|
||||
specify { expect(expired).to be true }
|
||||
end
|
||||
|
||||
context 'when expire time is now' do
|
||||
let(:domain) { described_class.new(expire_time: Time.zone.parse('05.07.2010 00:00')) }
|
||||
|
||||
specify { expect(expired).to be false }
|
||||
end
|
||||
|
||||
context 'when expire time is in the future' do
|
||||
let(:domain) { described_class.new(expire_time: Time.zone.parse('05.07.2010 00:01')) }
|
||||
|
||||
specify { expect(expired).to be false }
|
||||
end
|
||||
end
|
||||
end
|
22
spec/requests/admin/billing/prices/expire_spec.rb
Normal file
22
spec/requests/admin/billing/prices/expire_spec.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'admin price expire', settings: false do
|
||||
before :example do
|
||||
sign_in_to_admin_area
|
||||
end
|
||||
|
||||
it 'expires price' do
|
||||
price = create(:unexpired_price)
|
||||
|
||||
expect { patch expire_admin_price_path(price); price.reload }
|
||||
.to change { price.expired? }.from(false).to(true)
|
||||
end
|
||||
|
||||
it 'redirects to :index' do
|
||||
price = create(:unexpired_price)
|
||||
|
||||
patch expire_admin_price_path(price)
|
||||
|
||||
expect(response).to redirect_to admin_prices_url
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue