require 'helper' require_relative 'aws_billing_backend' class ConstructorAwsBillingReportsTest < Minitest::Test def setup AwsBillingReports::BackendFactory.select(MockAwsBillingReports::Empty) end def test_empty_params_ok assert AwsBillingReports.new end def test_rejects_unrecognized_params assert_raises(ArgumentError) { AwsBillingReports.new(unrecognized_param: 1) } end end class EmptyAwsBillingReportsTest < Minitest::Test def setup AwsBillingReports::BackendFactory.select(MockAwsBillingReports::Empty) end def test_search_miss_reports_empty refute AwsBillingReports.new.exists? end end class BasicAwsBillingReportsTest < Minitest::Test def setup AwsBillingReports::BackendFactory.select(MockAwsBillingReports::Basic) end def test_search_hit_via_empty_filter assert AwsBillingReports.new.exists? end def test_search_hit_properties assert AwsBillingReports.new.report_names.include?('inspec1') end def test_where_hit abr = AwsBillingReports.new.where { report_name =~ /inspec.*/ } assert_includes abr.time_units, 'daily' assert_includes abr.compressions, 'zip' assert_includes abr.s3_buckets, 'inspec1-s3-bucket' end end class PaginatedAwsBillingReportsTest < Minitest::Test def setup AwsBillingReports::BackendFactory.select(MockAwsBillingReports::Paginated) end def test_paginated_search_hit_via_scalar assert AwsBillingReports.new.report_names.include?('inspec12') end def test_paginated_search_miss_via_scalar refute AwsBillingReports.new.report_names.include?('non-existent') end end