Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: base resource overriding #3077

Merged
merged 23 commits into from
Aug 5, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
2 changes: 1 addition & 1 deletion lib/avo.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def init
Avo::Current.error_manager = Avo::ErrorManager.build
# Check rails version issues only on NON Production environments
unless Rails.env.production?
check_rails_version_issues
check_rails_version_issues
display_menu_editor_warning
end
Avo::Current.resource_manager = Avo::Resources::ResourceManager.build
Expand Down
4 changes: 4 additions & 0 deletions lib/avo/engine.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ class Engine < ::Rails::Engine
Rails.autoloaders.main.push_dir(avo_directory, namespace: Avo)
app.config.watchable_dirs[avo_directory] = [:rb]
end

Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
# Autoload app/avo from engine's path
# Necessary, for example, for Avo::BaseResource
Rails.autoloaders.main.push_dir Avo::Engine.root.join("app", "avo").to_s, namespace: Avo
end

initializer "avo.reloader" do |app|
Expand Down
2 changes: 1 addition & 1 deletion spec/features/avo/breadcrumbs_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.feature "Breadcrumbs", type: :feature do
let!(:project) { create :project }
Expand Down
2 changes: 1 addition & 1 deletion spec/features/avo/field_setter_missing_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.feature "FieldSetterMissings", type: :feature do
let!(:person) { create :person }
Expand Down
2 changes: 1 addition & 1 deletion spec/features/avo/fields_meta_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.describe Avo::EventsController, type: :controller do
it "finds the meta value as a hash" do
Expand Down
2 changes: 1 addition & 1 deletion spec/features/avo/fields_methods_for_views_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.feature "Fields methods for each view", type: :feature do
let!(:links) { create_list :course_link, 3 }
Expand Down
2 changes: 1 addition & 1 deletion spec/features/avo/native_fields_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.feature "NativeFields", type: :feature do
let(:city) { create :city, is_capital: true }
Expand Down
2 changes: 1 addition & 1 deletion spec/features/avo/record_selector_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.feature "RecordSelectors", type: :feature do
let!(:comment) { create :comment }
Expand Down
2 changes: 1 addition & 1 deletion spec/features/avo/release_fish_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.feature Avo::Actions::ReleaseFish, type: :feature do
let(:fish) { create :fish }
Expand Down
2 changes: 1 addition & 1 deletion spec/features/avo/resource_controls_placement_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.feature "ResourceControlsPlacement", type: :feature do
let!(:comment) { create :comment }
Expand Down
37 changes: 37 additions & 0 deletions spec/features/avo/resource_extension_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
require "rails_helper"

RSpec.feature "Resource extension", type: :feature do
Avo::Resources::CourseLink.define_method :test_base_resource_extension do
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
some_extended_method
end

it "no extension" do
expect(TestBuddy).not_to receive(:hi).with("Extension successfully")
expect { Avo::Resources::CourseLink.new.test_base_resource_extension }.to raise_error(NameError)
end

it "with extension" do
begin
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
file_path = Rails.root.join("app/avo/base_resource.rb")
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
FileUtils.mkdir_p(File.dirname(file_path))
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
File.open(file_path, "w") do |file|
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
file.write <<~RUBY
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
module Avo
class BaseResource < Avo::Resources::Base
def some_extended_method
TestBuddy.hi("Extension successfully")
end
end
end
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
RUBY
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
end

load file_path

expect(TestBuddy).to receive(:hi).with("Extension successfully").at_least :once
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
expect { Avo::Resources::CourseLink.new.test_base_resource_extension }.not_to raise_error(NameError)
ensure
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
File.delete(file_path) if File.exist?(file_path)
end
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
Paul-Bob marked this conversation as resolved.
Show resolved Hide resolved
end
end
2 changes: 1 addition & 1 deletion spec/features/avo/resource_name_urls_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.feature "ResourceNameUrls", type: :feature do
let!(:user) { create :user, first_name: 'John MMM' }
Expand Down
2 changes: 1 addition & 1 deletion spec/features/avo/select_field_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.feature "Select", type: :feature do
let(:project) { create :project }
Expand Down
2 changes: 1 addition & 1 deletion spec/system/avo/avo_sidebars_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rails_helper'
require "rails_helper"

RSpec.describe "Sidebars", type: :system do
it "is open by default" do
Expand Down
2 changes: 1 addition & 1 deletion spec/system/avo/create_via_belongs_to_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true

require 'rails_helper'
require "rails_helper"

RSpec.describe 'Create Via Belongs to', type: :system do
describe 'edit' do
Expand Down
2 changes: 1 addition & 1 deletion spec/system/avo/has_many_through_field_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# require 'rails_helper'
# require "rails_helper"

# RSpec.describe 'HasManyField', type: :system do
# let!(:user) { create :user }
Expand Down
2 changes: 1 addition & 1 deletion spec/system/avo/has_one_field_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# require 'rails_helper'
# require "rails_helper"

# RSpec.describe 'HasOneField', type: :system do
# let!(:user) { create :user }
Expand Down
2 changes: 1 addition & 1 deletion spec/system/avo/markdown_field_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# require 'rails_helper'
# require "rails_helper"

# RSpec.describe 'MarkdownField', type: :system do
# describe 'without value' do
Expand Down
Loading