mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
73 lines
2.0 KiB
Ruby
73 lines
2.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Spree::Admin::TaxonsController do
|
|
render_views
|
|
|
|
let!(:taxon) { create(:taxon, name: "Ruby") }
|
|
let!(:taxon2) { create(:taxon, name: "Rails") }
|
|
let(:valid_attributes) { attributes_for(:taxon) }
|
|
|
|
before do
|
|
allow(controller).to receive(:spree_current_user) { current_api_user }
|
|
end
|
|
|
|
describe 'admin user' do
|
|
let(:current_api_user) { build(:admin_user) }
|
|
|
|
it "can view all taxons" do
|
|
spree_get :index
|
|
|
|
expect(response).to have_http_status :ok
|
|
end
|
|
|
|
it "open taxon edit form" do
|
|
spree_get :edit, { id: taxon.id }
|
|
|
|
expect(response).to have_http_status :ok
|
|
end
|
|
|
|
it "open taxon edit form" do
|
|
spree_get :new
|
|
|
|
expect(response).to have_http_status :ok
|
|
end
|
|
|
|
context "create" do
|
|
it "persist data with valid attributes" do
|
|
spree_post :create, valid_attributes
|
|
|
|
expect(Spree::Taxon.last.name).to eq valid_attributes[:name]
|
|
expect(response).to have_http_status :found
|
|
end
|
|
|
|
it "returns error with invalid attributes" do
|
|
spree_post :create, { name: '' }
|
|
|
|
expect(Spree::Taxon.count).to eq 2
|
|
expect(response).to have_http_status :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
context "update" do
|
|
let!(:new_taxon) { create(:taxon, valid_attributes) }
|
|
it "persist data with valid attributes" do
|
|
spree_post :update, id: new_taxon.id,
|
|
taxon: valid_attributes.merge({ name: 'Taxon name updated' })
|
|
|
|
expect(new_taxon.reload.name).to eq 'Taxon name updated'
|
|
expect(response).to have_http_status :found
|
|
end
|
|
|
|
it "returns error with invalid attributes" do
|
|
spree_post :update, id: new_taxon.id,
|
|
taxon: { **valid_attributes, name: '' }
|
|
|
|
expect(new_taxon.reload.name).to eq valid_attributes[:name]
|
|
expect(response).to have_http_status :unprocessable_entity
|
|
end
|
|
end
|
|
end
|
|
end
|