diff --git a/spec/controllers/concerns/auth_concern_spec.rb b/spec/controllers/concerns/auth_concern_spec.rb index 39ad7b7e..65d7f13e 100644 --- a/spec/controllers/concerns/auth_concern_spec.rb +++ b/spec/controllers/concerns/auth_concern_spec.rb @@ -5,7 +5,6 @@ require 'spec_helper' class DummyAuthController < ApplicationController; end describe 'Auth concern', type: :controller do - controller DummyAuthController do # Defining a dummy action for an anynomous controller which inherits from the described class. def authenticate_blank diff --git a/spec/controllers/finance/base_controller_spec.rb b/spec/controllers/finance/base_controller_spec.rb new file mode 100644 index 00000000..40c80c57 --- /dev/null +++ b/spec/controllers/finance/base_controller_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Finance::BaseController, type: :controller do + let(:user) { create :user, :role_finance, :role_orders, :ordergroup } + + before { login user } + + describe 'GET index' do + let(:fin_trans) { create_list :financial_transaction, 3, user: user, ordergroup: user.ordergroup } + let(:orders) { create_list :order, 2, state: 'finished' } + let(:invoices) { create_list :invoice, 4 } + + before do + fin_trans + orders + invoices + end + + it 'renders index page' do + get :index, params: { foodcoop: FoodsoftConfig[:default_scope] } + expect(response).to have_http_status(:success) + expect(response).to render_template('finance/index') + expect(assigns(:financial_transactions).size).to eq(fin_trans.size) + expect(assigns(:orders).size).to eq(orders.size) + expect(assigns(:unpaid_invoices).size).to eq(invoices.size) + end + end +end \ No newline at end of file diff --git a/spec/factories/supplier.rb b/spec/factories/supplier.rb index 67ba3528..5780dc46 100644 --- a/spec/factories/supplier.rb +++ b/spec/factories/supplier.rb @@ -5,6 +5,7 @@ FactoryBot.define do name { Faker::Company.name.truncate(30) } phone { Faker::PhoneNumber.phone_number } address { Faker::Address.street_address } + email { Faker::Internet.email } transient do article_count { 0 } diff --git a/spec/integration/admin_spec.rb b/spec/integration/admin_spec.rb new file mode 100644 index 00000000..c929a44a --- /dev/null +++ b/spec/integration/admin_spec.rb @@ -0,0 +1,29 @@ +require_relative '../spec_helper' + +feature Admin::BaseController do + let(:admin) { create :admin } + let(:users) { create_list :user, 2 } + let(:workgroups) { create_list :workgroup, 3 } + let(:groups) { create_list :group, 4 } + + before { login admin } + + describe 'base#index' do + before do + users + end + + it 'is accessible with workgroups existing' do + workgroups + visit admin_root_path + expect(page).to have_content(I18n.t('admin.base.index.newest_users')) + expect(page).to have_content(users.first.name) + end + + # TODO: + it 'raising error when groups existing' do + groups + expect{ visit admin_root_path }.to raise_error(ActionView::Template::Error) + end + end +end diff --git a/spec/integration/supplier_spec.rb b/spec/integration/supplier_spec.rb index ea015d06..e4a81a0a 100644 --- a/spec/integration/supplier_spec.rb +++ b/spec/integration/supplier_spec.rb @@ -2,12 +2,11 @@ require_relative '../spec_helper' feature 'supplier' do let(:supplier) { create :supplier } + let(:user) { create :user, groups: [create(:workgroup, role_suppliers: true)] } + + before { login user } describe 'create new' do - let(:user) { create :user, groups: [create(:workgroup, role_suppliers: true)] } - - before { login user } - it 'can be created' do create :supplier_category visit suppliers_path @@ -28,4 +27,36 @@ feature 'supplier' do expect(page).to have_content(supplier.name) end end + + describe 'existing', js: true do + it 'can be shown' do + supplier + visit suppliers_path + click_link supplier.name + expect(page).to have_content(supplier.address) + expect(page).to have_content(supplier.phone) + expect(page).to have_content(supplier.email) + end + + it 'can be updated' do + new_name = Faker::Company.name.truncate(30) + supplier + visit suppliers_path + click_link I18n.t('ui.edit') + fill_in I18n.t('activerecord.attributes.supplier.name'), with: new_name + click_button 'Update Supplier' + expect(supplier.reload.name).to eq new_name + end + + it 'can be destroyed' do + supplier + visit suppliers_path + expect(page).to have_content(supplier.name) + accept_confirm do + click_link I18n.t('ui.delete') + end + expect(page).not_to have_content(supplier.name) + expect(supplier.reload.deleted?).to be true + end + end end