Sha256: 16c152c8505cdf645b9e4b47b1769254b135c43d93fd0a649fae3c33fa4bcbe6

Contents?: true

Size: 1.51 KB

Versions: 3

Compression:

Stored size: 1.51 KB

Contents

require 'spec_helper'

describe 'Generating sql based on our DSL' do

  # it 'should work' do
  #   Order.create!(:order_number => 32)
  #   datatable = OrdersIndex.new
  #   params = {}
  #   json = datatable.query(params).json
  #   json['aaRecords'][0][0].should == 32
  # end

  it 'should select two fields' do
    class OrdersSimple < Datatable::Base
      set_model Order 

      column :order_number
      column :memo
    end

    orders = Order.arel_table
    OrdersSimple.to_sql.should == Order.select(orders[:order_number]).select(orders[:memo]).to_sql
    OrdersSimple.relation.should == Order.select(orders[:order_number]).select(orders[:memo])
  end

  it 'should handle a simple join' do
    class OrdersSimple < Datatable::Base
      set_model Order 

      column :memo

      join :customer
    end

    orders = Order.arel_table
    OrdersSimple.to_sql.should == Order.select(orders[:memo]).joins(:customer).to_sql
    OrdersSimple.relation.should == Order.select(orders[:memo]).joins(:customer)
  end

  it 'should handle a join with an inner column' do
    class OrdersSimple < Datatable::Base
      set_model Order 

      column :memo

      join :customer do
        column :first_name
      end

    end

    orders = Order.arel_table
    customers = Arel::Table.new(:customers)
    OrdersSimple.to_sql.should == Order.select(orders[:memo]).joins(:customer).select(customers[:first_name]).to_sql
    OrdersSimple.relation.should == Order.select(orders[:memo]).joins(:customer).select(customers[:first_name])
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
datatable-0.1.1alpha4 example_app/spec/datatables/active_record_dsl_spec.rb
datatable-0.1.1alpha1 example_app/spec/datatables/active_record_dsl_spec.rb
datatable-0.1.0alpha2 example_app/spec/datatables/active_record_dsl_spec.rb