diff --git a/packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_collection.rb b/packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_collection.rb index c0fa45057..e8e4ec10f 100644 --- a/packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_collection.rb +++ b/packages/forest_admin_agent/lib/forest_admin_agent/utils/schema/generator_collection.rb @@ -11,7 +11,7 @@ def self.build_schema(collection) icon: nil, integration: nil, isReadOnly: collection.schema[:fields].all? { |_k, field| field.type != 'Column' || field.is_read_only }, - isSearchable: true, + isSearchable: collection.schema[:searchable], isVirtual: false, name: collection.name, onlyForRelationships: false, diff --git a/packages/forest_admin_datasource_customizer/lib/forest_admin_datasource_customizer/decorators/search/search_collection_decorator.rb b/packages/forest_admin_datasource_customizer/lib/forest_admin_datasource_customizer/decorators/search/search_collection_decorator.rb index 85f27ffae..c696d829f 100644 --- a/packages/forest_admin_datasource_customizer/lib/forest_admin_datasource_customizer/decorators/search/search_collection_decorator.rb +++ b/packages/forest_admin_datasource_customizer/lib/forest_admin_datasource_customizer/decorators/search/search_collection_decorator.rb @@ -13,10 +13,13 @@ def initialize(child_collection, datasource) def disable_search @disabled_search = true + mark_schema_as_dirty end def replace_search(replacer) @replacer = replacer + @disabled_search = false + mark_schema_as_dirty end def refine_schema(sub_schema) diff --git a/packages/forest_admin_datasource_customizer/spec/lib/forest_admin_datasource_customizer/collection_customizer_spec.rb b/packages/forest_admin_datasource_customizer/spec/lib/forest_admin_datasource_customizer/collection_customizer_spec.rb index b669c5f37..08b03568d 100644 --- a/packages/forest_admin_datasource_customizer/spec/lib/forest_admin_datasource_customizer/collection_customizer_spec.rb +++ b/packages/forest_admin_datasource_customizer/spec/lib/forest_admin_datasource_customizer/collection_customizer_spec.rb @@ -201,6 +201,22 @@ module ForestAdminDatasourceCustomizer end end + context 'when using disable_search' do + it 'calls the search decorator and disable the search' do + stack = @datasource_customizer.stack + stack.apply_queued_customizations({}) + allow(stack.search).to receive(:get_collection).with('book').and_return(@datasource_customizer.stack.search.get_collection('book')) + + customizer = described_class.new(@datasource_customizer, @datasource_customizer.stack, 'book') + customizer.disable_search + stack.apply_queued_customizations({}) + + search_collection = @datasource_customizer.stack.search.get_collection('book') + + expect(search_collection.schema[:searchable]).to be(false) + end + end + context 'when using disable_count' do it 'disables count on the collection' do customizer = described_class.new(@datasource_customizer, @datasource_customizer.stack, 'book') diff --git a/packages/forest_admin_datasource_customizer/spec/lib/forest_admin_datasource_customizer/decorators/search/search_collection_decorator_spec.rb b/packages/forest_admin_datasource_customizer/spec/lib/forest_admin_datasource_customizer/decorators/search/search_collection_decorator_spec.rb index 6ae0a9d0f..24a926505 100644 --- a/packages/forest_admin_datasource_customizer/spec/lib/forest_admin_datasource_customizer/decorators/search/search_collection_decorator_spec.rb +++ b/packages/forest_admin_datasource_customizer/spec/lib/forest_admin_datasource_customizer/decorators/search/search_collection_decorator_spec.rb @@ -69,6 +69,59 @@ module Search datasource.add_collection(collection_address) end + context 'when disable search' do + it 'mark schema as dirty' do + collection = build_collection( + schema: { + fields: { 'foo' => build_column(filter_operators: [Operators::EQUAL]) } + } + ) + search_collection_decorator = described_class.new(collection, datasource) + search_collection_decorator.disable_search + + expect(search_collection_decorator.last_schema).to be_nil + end + + it 'sets the schema not searchable' do + collection = build_collection( + schema: { + fields: { 'foo' => build_column(filter_operators: [Operators::EQUAL]) } + } + ) + search_collection_decorator = described_class.new(collection, datasource) + unsearchable_schema = { searchable: true } + expect(search_collection_decorator.refine_schema(unsearchable_schema)).to eq({ searchable: true }) + search_collection_decorator.disable_search + expect(search_collection_decorator.refine_schema(unsearchable_schema)).to eq({ searchable: false }) + end + end + + context 'when replace search' do + it 'mark schema as dirty' do + collection = build_collection( + schema: { + fields: { 'foo' => build_column(filter_operators: [Operators::EQUAL]) } + } + ) + search_collection_decorator = described_class.new(collection, datasource) + search_collection_decorator.replace_search(proc {}) + + expect(search_collection_decorator.last_schema).to be_nil + end + + it 'sets the schema searchable' do + collection = build_collection( + schema: { + fields: { 'foo' => build_column(filter_operators: [Operators::EQUAL]) } + } + ) + search_collection_decorator = described_class.new(collection, datasource) + search_collection_decorator.replace_search(proc {}) + + expect(search_collection_decorator.schema[:searchable]).to be(true) + end + end + context 'when refine_schema' do it 'sets the schema searchable' do collection = build_collection( @@ -80,21 +133,6 @@ module Search unsearchable_schema = { searchable: false } expect(search_collection_decorator.refine_schema(unsearchable_schema)).to eq({ searchable: true }) end - - context 'when disable search' do - it 'sets the schema not searchable' do - collection = build_collection( - schema: { - fields: { 'foo' => build_column(filter_operators: [Operators::EQUAL]) } - } - ) - search_collection_decorator = described_class.new(collection, datasource) - unsearchable_schema = { searchable: true } - expect(search_collection_decorator.refine_schema(unsearchable_schema)).to eq({ searchable: true }) - search_collection_decorator.disable_search - expect(search_collection_decorator.refine_schema(unsearchable_schema)).to eq({ searchable: false }) - end - end end context 'when refine_filter' do diff --git a/packages/forest_admin_datasource_mongoid/spec/dummy/log/test.log b/packages/forest_admin_datasource_mongoid/spec/dummy/log/test.log new file mode 100644 index 000000000..e69de29bb diff --git a/packages/forest_admin_datasource_mongoid/spec/dummy/tmp/local_secret.txt b/packages/forest_admin_datasource_mongoid/spec/dummy/tmp/local_secret.txt new file mode 100644 index 000000000..02d7af44b --- /dev/null +++ b/packages/forest_admin_datasource_mongoid/spec/dummy/tmp/local_secret.txt @@ -0,0 +1 @@ +8eb0fd19608c3e5609086db683b5d6b9b6861f62399a439f5107f2fcdc2dfd0acdf09efc62589584064b83444a80a9fb88a6d4c8288df4a4f9f87404b05e1e96 \ No newline at end of file