Project

General

Profile

« Previous | Next » 

Revision 87234768

Added by Kamil Szubrycht about 5 years ago

Fixes #26297 - graphql: add Host queries

View differences:

test/graphql/queries/compute_resource_query_test.rb
require 'test_helper'
class Queries::ComputeResourceQueryTest < ActiveSupport::TestCase
test 'fetching compute resource attributes' do
hosts = FactoryBot.create_list(:host, 2)
compute_resource = FactoryBot.create(:vmware_cr, uuid: 'Solutions', hosts: hosts)
FactoryBot.create(:compute_profile, :with_compute_attribute, compute_resource: compute_resource)
Queries::AuthorizedModelQuery.any_instance.expects(:find_by_global_id).returns(compute_resource)
query = <<-GRAPHQL
class Queries::ComputeResourceQueryTest < GraphQLQueryTestCase
let(:query) do
<<-GRAPHQL
query (
$id: String!
) {
......
}
}
GRAPHQL
end
compute_resource_global_id = Foreman::GlobalId.encode('ComputeResource', compute_resource.id)
variables = { id: compute_resource_global_id }
context = { current_user: FactoryBot.create(:user, :admin) }
let(:hosts) { FactoryBot.create_list(:host, 2) }
let(:compute_resource) { FactoryBot.create(:vmware_cr, uuid: 'Solutions', hosts: hosts) }
result = ForemanGraphqlSchema.execute(query, variables: variables, context: context)
expected = {
'computeResource' => {
'id' => compute_resource_global_id,
'createdAt' => compute_resource.created_at.utc.iso8601,
'updatedAt' => compute_resource.updated_at.utc.iso8601,
'name' => compute_resource.name,
'description' => compute_resource.description,
'url' => compute_resource.url,
'provider' => compute_resource.provider,
'providerFriendlyName' => compute_resource.provider_friendly_name,
'computeAttributes' => {
'totalCount' => compute_resource.compute_attributes.count,
'edges' => compute_resource.compute_attributes.sort_by(&:id).map do |ca|
{
'node' => {
'id' => Foreman::GlobalId.for(ca)
}
}
end
},
'hosts' => {
'totalCount' => compute_resource.hosts.count,
'edges' => compute_resource.hosts.sort_by(&:id).map do |host|
{
'node' => {
'id' => Foreman::GlobalId.encode('Host', host.id)
}
}
end
}
}
}
let(:global_id) { Foreman::GlobalId.encode('ComputeResource', compute_resource.id) }
let(:variables) {{ id: global_id }}
let(:data) { result['data']['computeResource'] }
setup do
FactoryBot.create(:compute_profile, :with_compute_attribute, compute_resource: compute_resource)
end
test 'fetching compute resource attributes' do
Queries::AuthorizedModelQuery.any_instance.expects(:find_by_global_id).returns(compute_resource)
assert_empty result['errors']
assert_equal expected, result['data']
assert_equal global_id, data['id']
assert_equal compute_resource.created_at.utc.iso8601, data['createdAt']
assert_equal compute_resource.updated_at.utc.iso8601, data['updatedAt']
assert_equal compute_resource.name, data['name']
assert_equal compute_resource.description, data['description']
assert_equal compute_resource.url, data['url']
assert_equal compute_resource.provider, data['provider']
assert_equal compute_resource.provider_friendly_name, data['providerFriendlyName']
assert_collection compute_resource.compute_attributes, data['computeAttributes']
assert_collection compute_resource.hosts, data['hosts'], type_name: 'Host'
end
end

Also available in: Unified diff