Testing with shopify_app /
shopify_app is a great Gem to quickly build a Shopify App with Rails. It handles all the verifications, authorizations, webhook, and more; leaving you to focus on developing your app. This post is to serve as a quick tip on how to unit-test your app with the Gem.
                Other than the install page, most likely your app will require a shop to be logged in for all routes.
                shopify_app, upon installation will create a fixture file in
                test/fixtures/shops.yml of your Rails application.
              
                Inspecting it you will see it’s filled with one shop, regular-shop.myshopify.com, and a
                simple token. When running bundle exec rake test (after migrations are done for a test
                environment of course), it will populate the shop database table with the fixture data in
                shop.yml.
              
                Now that we have a shop we can “log into”, let’s create a support module for the unit tests. Create a
                file called shopify_session_support.rb inside test/support.
              
# test/support/shopify_session_support.rb
module ShopifySessionSupport
  # Make this module concernable
  extend ActiveSupport::Concern
  included do
    # On include, tell TestCase to use this setup block
    setup do
      # Set the shop to the test shop from fixtures
      # The key is `:shopify` and `:shopify_domain` which shopify_app needs
      # See: https://github.com/Shopify/shopify_app/blob/c7e50247a72a52b1d1e4d9009ba997196a64e7e8/lib/shopify_app/login_protection.rb#L22
      session[:shopify]        = shops(:regular_shop).id
      session[:shopify_domain] = shops(:regular_shop).shopify_domain
    end
  end
end
              
                Next, include your new support module in test_helper.rb before class
                ActiveSupport::TestCase with:
              
# Include support modules
Dir[Rails.root.join('test/support/**/*.rb')].each { |f| require f }
              
                Finally, in any of your controller tests where you require an authenticated shop, simply add
                include ShopifySessionSupport to your class as such:
              
# ...
class ImageControllerTest < ActionController::TestCase
  include ShopifySessionSupport
  # ...
end
              
                Running bundle exec rake test should now pass your tests with the shop.