Sha256: a66d9c8253bae3d589b117fd725b9de83c1b89d9220b15152b014de3a46c52e9

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

module SubscriptionHelpers
  def subscribe_to(
    schema: NulogyMessageBusProducer::Specs::TestSchema,
    subscription_id: SecureRandom.uuid,
    **query_args
  )
    gql = subscription_query(subscription_id: subscription_id, **query_args)

    expect do
      gql_response = execute_graphql(gql, schema)
      expect(gql_response).to eq(data: {})
    end.to change(NulogyMessageBusProducer::Subscription, :count).by(1)

    NulogyMessageBusProducer::Subscription.find(subscription_id)
  end

  def subscription_query(
    event_type: "testCreated",
    query: "foo { id }",
    subscription_id: SecureRandom.uuid,
    subscription_group_id: SecureRandom.uuid,
    topic_name: "some_topic"
  )
    <<~GRAPHQL
      subscription {
        #{event_type} (
          subscriptionId: "#{subscription_id}",
          subscriptionGroupId: "#{subscription_group_id}",
          topicName: "#{topic_name}"
        ) {
          #{query}
        }
      }
    GRAPHQL
  end

  def execute_graphql(query, schema, variables: {}, context: {})
    response = schema.execute(
      query,
      variables: variables,
      context: context,
      operation_name: nil
    )

    response.to_h.deep_symbolize_keys
  end

  def trigger_event(event_type, root_object)
    schema = NulogyMessageBusProducer::Specs::TestSchema
    NulogyMessageBusProducer.trigger_event(schema, event_type, root_object)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
nulogy_message_bus_producer-3.3.0 spec/support/subscription_helpers.rb
nulogy_message_bus_producer-3.2.1 spec/support/subscription_helpers.rb
nulogy_message_bus_producer-3.2.0 spec/support/subscription_helpers.rb