Project

General

Profile

Download (3.63 KB) Statistics
| Branch: | Tag: | Revision:
require "test_helper"

class StatisticsTest < ActiveSupport::TestCase
def setup
User.current = users :admin
end

test 'it should return list of statistics objects' do
refute_empty Statistics.charts(nil, nil)
end

test 'it should include an Operating System stat' do
os = Statistics.charts(nil, nil).detect {|s| s.id == 'operatingsystem'}
assert_equal "operatingsystem", os.id
data = { :id => "operatingsystem", :title => "OS Distribution", :url => "/statistics/operatingsystem", :search => "/hosts?search=os_title=~VAL~" }
assert_equal data, os.metadata
end

test 'it should set taxonomies as API paramaters according to current context' do
os = Statistics.charts(taxonomies(:empty_organization).id, nil).detect {|s| s.id == 'operatingsystem'}
data = { :id => "operatingsystem", :title => "OS Distribution", :url => "/statistics/operatingsystem?organization_id=#{taxonomies(:empty_organization).id}", :search => "/hosts?search=os_title=~VAL~" }
assert_equal data, os.metadata

os = Statistics.charts(nil, taxonomies(:location1).id).detect {|s| s.id == 'operatingsystem'}
data = { :id => "operatingsystem", :title => "OS Distribution", :url => "/statistics/operatingsystem?location_id=#{taxonomies(:location1).id}", :search => "/hosts?search=os_title=~VAL~" }
assert_equal data, os.metadata

os = Statistics.charts(taxonomies(:empty_organization).id, taxonomies(:location1).id).detect {|s| s.id == 'operatingsystem'}
data = { :id => "operatingsystem", :title => "OS Distribution", :url => "/statistics/operatingsystem?location_id=#{taxonomies(:location1).id}&organization_id=#{taxonomies(:empty_organization).id}", :search => "/hosts?search=os_title=~VAL~" }
assert_equal data, os.metadata
end

test 'it should initialize a base statistics object' do
stat = Statistics::Base.new(:count_by => :hostgroup)
assert_equal :hostgroup, stat.count_by
assert_equal 'hostgroup', stat.id
assert_equal '/statistics/hostgroup', stat.url
assert_raise(NotImplementedError) { stat.calculate }
end

test 'it should initialize a fact counter statistics object' do
stat = Statistics::CountFacts.new(:count_by => 'uptime')
assert_kind_of Array, stat.calculate
end

test 'it should initialize a fact counter statistics object with units' do
stat = Statistics::CountFacts.new(:count_by => 'uptime', :unit => ['%s core', '%s cores'])
assert_equal ['%s core', '%s cores'], stat.unit
assert_kind_of Array, stat.calculate
end

test 'it should initialize a host counter statistics object' do
stat = Statistics::CountHosts.new(:count_by => :compute_resource)
assert_kind_of Array, stat.calculate
end

test 'it should fail to calculate a puppet class counter statistics object without an id' do
assert_raise(ArgumentError) { Statistics::CountPuppetClasses.new() }
end

test 'it should initialize a puppet class counter statistics object' do
stat = Statistics::CountPuppetClasses.new(:id => :classes)
assert_equal '/statistics/classes', stat.url
assert_kind_of Array, stat.calculate
end

test 'it should fail to calculate a Fact class counter statistics object without count_by' do
assert_raise(ArgumentError) { Statistics::CountNumericalFactPair.new() }
end

test 'it should initialize a fact pair counter statistics object' do
stat = Statistics::CountNumericalFactPair.new(:count_by => :memory)
assert_equal 'memorysize', stat.send(:total_name)
assert_equal 'memoryfree', stat.send(:used_name)
calc = stat.calculate
assert_kind_of Array, calc
assert_equal 'free memory', calc[0][:label]
assert_equal 'used memory', calc[1][:label]
end
end
(65-65/67)