Sha256: ac8afa6747a22be97ffc58d03da8fe0a74371a29c45031678023a8e3832ad02c

Contents?: true

Size: 1.97 KB

Versions: 5

Compression:

Stored size: 1.97 KB

Contents

require File.join(File.dirname(__FILE__), '../test_helper')

describe HammerCLI::Output::RecordCollection do
  let(:data) { [1, 2, 3] }
  let(:meta) { { :total => 6, :page => 2, :per_page => 3, :subtotal => 5,
          :search => 'name~=xx', :sort_by => 'name', :sort_order => 'ASC' } }
  let(:set) { HammerCLI::Output::RecordCollection.new(data, meta) }

  it "should keep records and its meta data" do
    _(set).must_equal data
    _(set.meta.total).must_equal 6
    _(set.meta.subtotal).must_equal 5
    _(set.meta.total).must_equal 6
    _(set.meta.page).must_equal 2
    _(set.meta.per_page).must_equal 3
    _(set.meta.search).must_equal 'name~=xx'
    _(set.meta.sort_by).must_equal 'name'
    _(set.meta.sort_order).must_equal 'ASC'
  end

  it "should wrap the data into list" do
    record = { :key => :value, :key2 => :value }
    rs = HammerCLI::Output::RecordCollection.new(record)
    _(rs).must_be_kind_of Array
  end

  it "sould accept MetaData as option" do
    metadata = HammerCLI::Output::MetaData.new(meta)
    set = HammerCLI::Output::RecordCollection.new(data, :meta => metadata)
    _(set.meta).must_equal metadata
    _(set.meta.total).must_equal 6
  end
end

describe HammerCLI::Output::MetaData do

  let(:meta) { HammerCLI::Output::MetaData.new(:total => "6", :page => "2", :per_page => "3", :subtotal => "5") }

  it "converts numeric metadata to numbers" do
    _(meta.total).must_equal 6
    _(meta.page).must_equal 2
    _(meta.per_page).must_equal 3
    _(meta.subtotal).must_equal 5
  end

  describe "pagination_set?" do
    let(:pagination_data) { { :total => 6, :page => 2, :per_page => 3, :subtotal => 5 } }

    it "can tell if pagination data are set" do
      _(meta.pagination_set?).must_equal true
    end

    it "can tell if pagination data are not set" do
      pagination_data.keys.each do |key|
        meta = HammerCLI::Output::MetaData.new(pagination_data.clone.reject { |k| k == key })
        _(meta.pagination_set?).must_equal false
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
hammer_cli-3.13.0 test/unit/output/record_collection_test.rb
hammer_cli-3.12.0 test/unit/output/record_collection_test.rb
hammer_cli-3.10.0 test/unit/output/record_collection_test.rb
hammer_cli-3.9.0 test/unit/output/record_collection_test.rb
hammer_cli-3.8.0 test/unit/output/record_collection_test.rb