mongoid-slug 6.0.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +20 -20
- data/README.md +392 -336
- data/lib/mongoid/slug/criteria.rb +111 -107
- data/lib/mongoid/slug/{index.rb → index_builder.rb} +69 -45
- data/lib/mongoid/slug/railtie.rb +11 -9
- data/lib/mongoid/slug/slug_id_strategy.rb +5 -3
- data/lib/mongoid/slug/unique_slug.rb +172 -173
- data/lib/mongoid/slug/version.rb +7 -5
- data/lib/mongoid/slug.rb +333 -328
- data/lib/mongoid_slug.rb +4 -2
- data/lib/tasks/mongoid_slug.rake +17 -19
- metadata +13 -173
- data/spec/models/alias.rb +0 -6
- data/spec/models/article.rb +0 -9
- data/spec/models/artist.rb +0 -8
- data/spec/models/artwork.rb +0 -10
- data/spec/models/author.rb +0 -15
- data/spec/models/author_polymorphic.rb +0 -15
- data/spec/models/book.rb +0 -12
- data/spec/models/book_polymorphic.rb +0 -12
- data/spec/models/caption.rb +0 -17
- data/spec/models/entity.rb +0 -11
- data/spec/models/friend.rb +0 -7
- data/spec/models/incorrect_slug_persistence.rb +0 -9
- data/spec/models/integer_id.rb +0 -9
- data/spec/models/magazine.rb +0 -7
- data/spec/models/page.rb +0 -9
- data/spec/models/page_localize.rb +0 -9
- data/spec/models/page_slug_localized.rb +0 -9
- data/spec/models/page_slug_localized_custom.rb +0 -10
- data/spec/models/page_slug_localized_history.rb +0 -9
- data/spec/models/partner.rb +0 -7
- data/spec/models/person.rb +0 -12
- data/spec/models/relationship.rb +0 -8
- data/spec/models/string_id.rb +0 -9
- data/spec/models/subject.rb +0 -7
- data/spec/models/without_slug.rb +0 -5
- data/spec/mongoid/criteria_spec.rb +0 -207
- data/spec/mongoid/index_spec.rb +0 -33
- data/spec/mongoid/slug_spec.rb +0 -1169
- data/spec/shared/indexes.rb +0 -41
- data/spec/spec_helper.rb +0 -61
- data/spec/tasks/mongoid_slug_rake_spec.rb +0 -73
    
        data/spec/shared/indexes.rb
    DELETED
    
    | @@ -1,41 +0,0 @@ | |
| 1 | 
            -
            shared_context 'with an index' do |key|
         | 
| 2 | 
            -
              if Mongoid::Compatibility::Version.mongoid3?
         | 
| 3 | 
            -
                let(:index) { subject.index_options[key] }
         | 
| 4 | 
            -
                let(:index_keys) { key }
         | 
| 5 | 
            -
                let(:index_options) { index }
         | 
| 6 | 
            -
              else
         | 
| 7 | 
            -
                let(:index) { subject.index_specifications.detect { |spec| spec.key == key } }
         | 
| 8 | 
            -
                let(:index_keys) { index.key }
         | 
| 9 | 
            -
                let(:index_options) { index.options }
         | 
| 10 | 
            -
              end
         | 
| 11 | 
            -
            end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            shared_examples 'has an index' do |key, options|
         | 
| 14 | 
            -
              include_context 'with an index', key
         | 
| 15 | 
            -
             | 
| 16 | 
            -
              it "has a #{[key, options].compact.join(', ')} index" do
         | 
| 17 | 
            -
                expect(index).not_to be_nil
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              it 'has the correct order of keys' do
         | 
| 21 | 
            -
                expect(index_keys.keys).to eq key.keys
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              it 'has the correct order of key values' do
         | 
| 25 | 
            -
                expect(index_keys.values).to eq key.values
         | 
| 26 | 
            -
              end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
              it 'matches option values' do
         | 
| 29 | 
            -
                options.each_pair do |name, value|
         | 
| 30 | 
            -
                  expect(index_options[name]).to eq(value)
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
            end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
            shared_examples 'does not have an index' do |key|
         | 
| 36 | 
            -
              include_context 'with an index', key
         | 
| 37 | 
            -
             | 
| 38 | 
            -
              it "does not have the #{key} index" do
         | 
| 39 | 
            -
                expect(index).to be nil
         | 
| 40 | 
            -
              end
         | 
| 41 | 
            -
            end
         | 
    
        data/spec/spec_helper.rb
    DELETED
    
    | @@ -1,61 +0,0 @@ | |
| 1 | 
            -
            require 'bundler/setup'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'rspec'
         | 
| 4 | 
            -
            require 'uuid'
         | 
| 5 | 
            -
            require 'awesome_print'
         | 
| 6 | 
            -
            require 'active_support'
         | 
| 7 | 
            -
            require 'active_support/deprecation'
         | 
| 8 | 
            -
            require 'mongoid'
         | 
| 9 | 
            -
            require 'rspec/its'
         | 
| 10 | 
            -
            require 'mongoid/compatibility'
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            require File.expand_path '../lib/mongoid/slug', __dir__
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            module Mongoid
         | 
| 15 | 
            -
              module Slug
         | 
| 16 | 
            -
                module UuidIdStrategy
         | 
| 17 | 
            -
                  def self.call(id)
         | 
| 18 | 
            -
                    id =~ /\A([0-9a-fA-F]){8}-(([0-9a-fA-F]){4}-){3}([0-9a-fA-F]){12}\z/
         | 
| 19 | 
            -
                  end
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
            end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            def database_id
         | 
| 25 | 
            -
              ENV['CI'] ? "mongoid_slug_#{Process.pid}" : 'mongoid_slug_test'
         | 
| 26 | 
            -
            end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
            Mongoid.configure do |config|
         | 
| 29 | 
            -
              config.connect_to database_id
         | 
| 30 | 
            -
            end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
            %w[models shared].each do |dir|
         | 
| 33 | 
            -
              Dir["./spec/#{dir}/*.rb"].each { |f| require f }
         | 
| 34 | 
            -
            end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
            I18n.available_locales = %i[en nl]
         | 
| 37 | 
            -
             | 
| 38 | 
            -
            RSpec.configure do |c|
         | 
| 39 | 
            -
              c.raise_errors_for_deprecations!
         | 
| 40 | 
            -
             | 
| 41 | 
            -
              c.before :all do
         | 
| 42 | 
            -
                Mongoid.logger.level = Logger::INFO
         | 
| 43 | 
            -
                Mongo::Logger.logger.level = Logger::INFO if Mongoid::Compatibility::Version.mongoid5_or_newer?
         | 
| 44 | 
            -
              end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
              c.before(:each) do
         | 
| 47 | 
            -
                Author.create_indexes
         | 
| 48 | 
            -
                Book.create_indexes
         | 
| 49 | 
            -
                AuthorPolymorphic.create_indexes
         | 
| 50 | 
            -
                BookPolymorphic.create_indexes
         | 
| 51 | 
            -
                Mongoid::IdentityMap.clear if defined?(Mongoid::IdentityMap)
         | 
| 52 | 
            -
              end
         | 
| 53 | 
            -
             | 
| 54 | 
            -
              c.after(:each) do
         | 
| 55 | 
            -
                if Mongoid::Compatibility::Version.mongoid3? || Mongoid::Compatibility::Version.mongoid4?
         | 
| 56 | 
            -
                  Mongoid.default_session.drop
         | 
| 57 | 
            -
                else
         | 
| 58 | 
            -
                  Mongoid::Clients.default.database.drop
         | 
| 59 | 
            -
                end
         | 
| 60 | 
            -
              end
         | 
| 61 | 
            -
            end
         | 
| @@ -1,73 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
            require 'rake'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            describe 'mongoid_slug:set' do
         | 
| 5 | 
            -
              before :all do
         | 
| 6 | 
            -
                load File.expand_path('../../lib/tasks/mongoid_slug.rake', __dir__)
         | 
| 7 | 
            -
                Rake::Task.define_task(:environment)
         | 
| 8 | 
            -
              end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              context 'when models parameter is passed' do
         | 
| 11 | 
            -
                before :all do
         | 
| 12 | 
            -
                  UninitalizedSlugFirst = Class.new do
         | 
| 13 | 
            -
                    include Mongoid::Document
         | 
| 14 | 
            -
                    field :name, type: String
         | 
| 15 | 
            -
                    store_in collection: 'uninitalized_slug_first'
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                  UninitalizedSlugSecond = Class.new do
         | 
| 18 | 
            -
                    include Mongoid::Document
         | 
| 19 | 
            -
                    field :name, type: String
         | 
| 20 | 
            -
                    store_in collection: 'uninitalized_slug_second'
         | 
| 21 | 
            -
                  end
         | 
| 22 | 
            -
                end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                it 'goes though all documents of passed models and sets slug if not already set' do
         | 
| 25 | 
            -
                  uninitalized_slug1 = UninitalizedSlugFirst.create(name: 'uninitalized-slug1')
         | 
| 26 | 
            -
                  uninitalized_slug2 = UninitalizedSlugSecond.create(name: 'uninitalized-slug2')
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                  UninitalizedSlugFirst.class_eval do
         | 
| 29 | 
            -
                    include Mongoid::Slug
         | 
| 30 | 
            -
                    slug :name
         | 
| 31 | 
            -
                  end
         | 
| 32 | 
            -
                  UninitalizedSlugSecond.class_eval do
         | 
| 33 | 
            -
                    include Mongoid::Slug
         | 
| 34 | 
            -
                    slug :name
         | 
| 35 | 
            -
                  end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                  expect(uninitalized_slug1.slugs).to be_nil
         | 
| 38 | 
            -
                  expect(uninitalized_slug2.slugs).to be_nil
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                  Rake::Task['mongoid_slug:set'].reenable
         | 
| 41 | 
            -
                  Rake::Task['mongoid_slug:set'].invoke('UninitalizedSlugFirst')
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                  expect(uninitalized_slug1.reload.slugs).to eq(['uninitalized-slug1'])
         | 
| 44 | 
            -
                  expect(uninitalized_slug2.reload.slugs).to be nil
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
              end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
              context 'when models parameter is not passed' do
         | 
| 49 | 
            -
                before :all do
         | 
| 50 | 
            -
                  UninitalizedSlugThird = Class.new do
         | 
| 51 | 
            -
                    include Mongoid::Document
         | 
| 52 | 
            -
                    field :name, type: String
         | 
| 53 | 
            -
                    store_in collection: 'uninitalized_slug_third'
         | 
| 54 | 
            -
                  end
         | 
| 55 | 
            -
                end
         | 
| 56 | 
            -
             | 
| 57 | 
            -
                it 'goes though all documents and sets slug if not already set' do
         | 
| 58 | 
            -
                  uninitalized_slug3 = UninitalizedSlugThird.create(name: 'uninitalized-slug3')
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                  UninitalizedSlugThird.class_eval do
         | 
| 61 | 
            -
                    include Mongoid::Slug
         | 
| 62 | 
            -
                    slug :name
         | 
| 63 | 
            -
                  end
         | 
| 64 | 
            -
             | 
| 65 | 
            -
                  expect(uninitalized_slug3.slugs).to be_nil
         | 
| 66 | 
            -
             | 
| 67 | 
            -
                  Rake::Task['mongoid_slug:set'].reenable
         | 
| 68 | 
            -
                  Rake::Task['mongoid_slug:set'].invoke
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                  expect(uninitalized_slug3.reload.slugs).to eq(['uninitalized-slug3'])
         | 
| 71 | 
            -
                end
         | 
| 72 | 
            -
              end
         | 
| 73 | 
            -
            end
         |