mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Merge pull request #5544 from luisramos0/api_ctrl
[Spree 2.1] Fix specs in Api::EnterprisesController and Api::ShopsController
This commit is contained in:
@@ -1,95 +1,93 @@
|
||||
require 'spec_helper'
|
||||
|
||||
module Api
|
||||
describe EnterprisesController, type: :controller do
|
||||
include AuthenticationWorkflow
|
||||
render_views
|
||||
describe Api::EnterprisesController, type: :controller do
|
||||
include AuthenticationWorkflow
|
||||
render_views
|
||||
|
||||
let(:enterprise) { create(:distributor_enterprise) }
|
||||
let(:enterprise) { create(:distributor_enterprise) }
|
||||
|
||||
context "as an enterprise owner" do
|
||||
let(:enterprise_owner) { create_enterprise_user enterprise_limit: 10 }
|
||||
let!(:enterprise) { create(:distributor_enterprise, owner: enterprise_owner) }
|
||||
context "as an enterprise owner" do
|
||||
let(:enterprise_owner) { create_enterprise_user enterprise_limit: 10 }
|
||||
let!(:enterprise) { create(:distributor_enterprise, owner: enterprise_owner) }
|
||||
|
||||
before do
|
||||
allow(controller).to receive(:spree_current_user) { enterprise_owner }
|
||||
end
|
||||
|
||||
describe "creating an enterprise" do
|
||||
let(:australia) { Spree::Country.find_by(name: 'Australia') }
|
||||
let(:new_enterprise_params) do
|
||||
{
|
||||
name: 'name', contact_name: 'Sheila', address_attributes: {
|
||||
address1: '123 Abc Street',
|
||||
city: 'Northcote',
|
||||
zipcode: '3070',
|
||||
state_id: australia.states.first,
|
||||
country_id: australia.id
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it "creates as sells=any when it is not a producer" do
|
||||
spree_post :create, { enterprise: new_enterprise_params }
|
||||
expect(response).to be_success
|
||||
|
||||
enterprise = Enterprise.last
|
||||
expect(enterprise.sells).to eq('any')
|
||||
end
|
||||
|
||||
it "saves all user ids submitted" do
|
||||
manager1 = create(:user)
|
||||
manager2 = create(:user)
|
||||
spree_post :create, {
|
||||
enterprise: new_enterprise_params.
|
||||
merge({ user_ids: [enterprise_owner.id, manager1.id, manager2.id] })
|
||||
}
|
||||
expect(response).to be_success
|
||||
|
||||
enterprise = Enterprise.last
|
||||
expect(enterprise.user_ids).to match_array([enterprise_owner.id, manager1.id, manager2.id])
|
||||
end
|
||||
end
|
||||
before do
|
||||
allow(controller).to receive(:spree_current_user) { enterprise_owner }
|
||||
end
|
||||
|
||||
context "as an enterprise manager" do
|
||||
let(:enterprise_manager) { create_enterprise_user }
|
||||
|
||||
before do
|
||||
enterprise_manager.enterprise_roles.build(enterprise: enterprise).save
|
||||
allow(controller).to receive(:spree_current_user) { enterprise_manager }
|
||||
describe "creating an enterprise" do
|
||||
let(:australia) { Spree::Country.find_by(name: 'Australia') }
|
||||
let(:new_enterprise_params) do
|
||||
{
|
||||
name: 'name', contact_name: 'Sheila', address_attributes: {
|
||||
address1: '123 Abc Street',
|
||||
city: 'Northcote',
|
||||
zipcode: '3070',
|
||||
state_id: australia.states.first.id,
|
||||
country_id: australia.id
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
describe "submitting a valid image" do
|
||||
before do
|
||||
allow(Enterprise)
|
||||
.to receive(:find_by).with({ permalink: enterprise.id.to_s }) { enterprise }
|
||||
allow(enterprise).to receive(:update_attributes).and_return(true)
|
||||
end
|
||||
it "creates as sells=any when it is not a producer" do
|
||||
api_post :create, { enterprise: new_enterprise_params }
|
||||
expect(response).to be_success
|
||||
|
||||
it "I can update enterprise image" do
|
||||
spree_post :update_image, logo: 'a logo', id: enterprise.id
|
||||
expect(response).to be_success
|
||||
end
|
||||
enterprise = Enterprise.last
|
||||
expect(enterprise.sells).to eq('any')
|
||||
end
|
||||
|
||||
it "saves all user ids submitted" do
|
||||
manager1 = create(:user)
|
||||
manager2 = create(:user)
|
||||
api_post :create, {
|
||||
enterprise: new_enterprise_params.
|
||||
merge({ user_ids: [enterprise_owner.id, manager1.id, manager2.id] })
|
||||
}
|
||||
expect(response).to be_success
|
||||
|
||||
enterprise = Enterprise.last
|
||||
expect(enterprise.user_ids).to match_array([enterprise_owner.id, manager1.id, manager2.id])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "as an non-managing user" do
|
||||
let(:non_managing_user) { create_enterprise_user }
|
||||
context "as an enterprise manager" do
|
||||
let(:enterprise_manager) { create_enterprise_user }
|
||||
|
||||
before do
|
||||
enterprise_manager.enterprise_roles.build(enterprise: enterprise).save
|
||||
allow(controller).to receive(:spree_current_user) { enterprise_manager }
|
||||
end
|
||||
|
||||
describe "submitting a valid image" do
|
||||
before do
|
||||
allow(Enterprise)
|
||||
.to receive(:find_by).with({ permalink: enterprise.id.to_s }) { enterprise }
|
||||
allow(controller).to receive(:spree_current_user) { non_managing_user }
|
||||
allow(enterprise).to receive(:update_attributes).and_return(true)
|
||||
end
|
||||
|
||||
describe "submitting a valid image" do
|
||||
before { allow(enterprise).to receive(:update_attributes).and_return(true) }
|
||||
it "I can update enterprise image" do
|
||||
api_post :update_image, logo: 'a logo', id: enterprise.id
|
||||
expect(response).to be_success
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "I can't update enterprise image" do
|
||||
spree_post :update_image, logo: 'a logo', id: enterprise.id
|
||||
assert_unauthorized!
|
||||
end
|
||||
context "as an non-managing user" do
|
||||
let(:non_managing_user) { create_enterprise_user }
|
||||
|
||||
before do
|
||||
allow(Enterprise)
|
||||
.to receive(:find_by).with({ permalink: enterprise.id.to_s }) { enterprise }
|
||||
allow(controller).to receive(:spree_current_user) { non_managing_user }
|
||||
end
|
||||
|
||||
describe "submitting a valid image" do
|
||||
before { allow(enterprise).to receive(:update_attributes).and_return(true) }
|
||||
|
||||
it "I can't update enterprise image" do
|
||||
api_post :update_image, logo: 'a logo', id: enterprise.id
|
||||
assert_unauthorized!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,45 +2,43 @@
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
module Api
|
||||
describe ShopsController, type: :controller do
|
||||
include AuthenticationWorkflow
|
||||
render_views
|
||||
describe Api::ShopsController, type: :controller do
|
||||
include AuthenticationWorkflow
|
||||
render_views
|
||||
|
||||
context "as a non-authenticated user" do
|
||||
let!(:hub) {
|
||||
create(:distributor_enterprise, with_payment_and_shipping: true, name: 'Shopfront Test Hub')
|
||||
}
|
||||
let!(:producer) { create(:supplier_enterprise, name: 'Shopfront Test Producer') }
|
||||
let!(:category) { create(:taxon, name: 'Fruit') }
|
||||
let!(:product) { create(:product, supplier: producer, primary_taxon: category ) }
|
||||
let!(:relationship) { create(:enterprise_relationship, parent: hub, child: producer) }
|
||||
let!(:closed_hub1) { create(:distributor_enterprise) }
|
||||
let!(:closed_hub2) { create(:distributor_enterprise) }
|
||||
context "as a non-authenticated user" do
|
||||
let!(:hub) {
|
||||
create(:distributor_enterprise, with_payment_and_shipping: true, name: 'Shopfront Test Hub')
|
||||
}
|
||||
let!(:producer) { create(:supplier_enterprise, name: 'Shopfront Test Producer') }
|
||||
let!(:category) { create(:taxon, name: 'Fruit') }
|
||||
let!(:product) { create(:product, supplier: producer, primary_taxon: category ) }
|
||||
let!(:relationship) { create(:enterprise_relationship, parent: hub, child: producer) }
|
||||
let!(:closed_hub1) { create(:distributor_enterprise) }
|
||||
let!(:closed_hub2) { create(:distributor_enterprise) }
|
||||
|
||||
before do
|
||||
allow(controller).to receive(:spree_current_user) { nil }
|
||||
before do
|
||||
allow(controller).to receive(:spree_current_user) { nil }
|
||||
end
|
||||
|
||||
describe "#show" do
|
||||
it "returns shopfront data for an enterprise" do
|
||||
spree_get :show, id: producer.id
|
||||
|
||||
expect(json_response['name']).to eq 'Shopfront Test Producer'
|
||||
expect(json_response['hubs'][0]['name']).to eq 'Shopfront Test Hub'
|
||||
expect(json_response['supplied_taxons'][0]['name']).to eq 'Fruit'
|
||||
end
|
||||
end
|
||||
|
||||
describe "#show" do
|
||||
it "returns shopfront data for an enterprise" do
|
||||
spree_get :show, id: producer.id
|
||||
describe "#closed_shops" do
|
||||
it "returns data for all closed shops" do
|
||||
spree_get :closed_shops, nil
|
||||
|
||||
expect(json_response['name']).to eq 'Shopfront Test Producer'
|
||||
expect(json_response['hubs'][0]['name']).to eq 'Shopfront Test Hub'
|
||||
expect(json_response['supplied_taxons'][0]['name']).to eq 'Fruit'
|
||||
end
|
||||
end
|
||||
expect(json_response).not_to match hub.name
|
||||
|
||||
describe "#closed_shops" do
|
||||
it "returns data for all closed shops" do
|
||||
spree_get :closed_shops, nil
|
||||
|
||||
expect(json_response).not_to match hub.name
|
||||
|
||||
response_ids = json_response.map { |shop| shop['id'] }
|
||||
expect(response_ids).to contain_exactly(closed_hub1.id, closed_hub2.id)
|
||||
end
|
||||
response_ids = json_response.map { |shop| shop['id'] }
|
||||
expect(response_ids).to contain_exactly(closed_hub1.id, closed_hub2.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user