Sha256: 129281dd9f6a561b60475f88599b47de341fe9d683dac390a6c5cd82fb6672af

Contents?: true

Size: 1.59 KB

Versions: 21

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

require "spec_helper"

describe Mongoid::Contextual::Aggregable::Memory do

  let(:criteria) do
    Band.all.tap do |crit|
      crit.documents = documents
    end
  end

  let(:context) do
    Mongoid::Contextual::Memory.new(criteria)
  end

  file = File.read(File.join(File.dirname(__FILE__), 'memory_table.yml'))
  table = if RUBY_VERSION.start_with?("2.5")
            YAML.safe_load(file, [BigDecimal])
          else
            YAML.safe_load(file, permitted_classes: [BigDecimal])
          end.deep_symbolize_keys.fetch(:sets)

  table.each do |name, spec|
    context "DB values are #{name}" do
      let(:documents) do
        spec[:values].map do |value|
          Band.create!({ name: 'Foobar', views: value, rating: value, sales: value, mojo: value })
        end
      end

      { integer: :views,
        float: :rating,
        big_decimal: :sales }.each do |type, field|

        %i[sum avg min max].each do |method|
          context "#{type.to_s.camelize} field :#{method}" do
            let(:expected) do
              spec.dig(:expected, type, method)
            end

            let(:result) do
              context.send(method, field)
            end

            it 'produces the expected result' do
              if result.is_a?(Integer)
                expect(result).to eq expected
              else
                expect(result).to be_within(0.001).of(expected)
              end
            end

            it 'produces the expected type' do
              expect(result).to be_a expected.class
            end
          end
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
mongoid-8.0.10 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.10 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.9 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.0.9 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.8 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.7 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.6 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.0.8 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.5 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.4 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.0.7 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.3 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.2 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.0.6 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.1 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.0.5 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.1.0 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.0.4 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.0.3 spec/mongoid/contextual/aggregable/memory_table_spec.rb
mongoid-8.0.2 spec/mongoid/contextual/aggregable/memory_table_spec.rb