Sha256: c36a99bb0d3093420d7987829291cafa14627a17d9e2ed71dba6865a99d8adbe

Contents?: true

Size: 1.97 KB

Versions: 1

Compression:

Stored size: 1.97 KB

Contents

require 'spec_helper'
require 'opal/sprockets'

describe Opal::Sprockets do
  let(:env) { Sprockets::Environment.new }
  before { Opal.paths.each { |path| env.append_path path } }

  describe '.load_asset' do
    it 'loads the main asset' do
      code = described_class.load_asset('console')
      expect(code).to include('Opal.load("console");')
    end

    it 'marks as loaded stubs and all non-opal assets' do
      allow(Opal::Config).to receive(:stubbed_files) { %w[foo bar] }

      code = described_class.load_asset('baz')
      expect(code).to include('Opal.loaded(["foo","bar"].concat(OpalLoaded || []));')
      expect(code).to include('Opal.load("baz");')
    end

    it 'tries to load an asset if it is registered as opal module' do
      code = described_class.load_asset('foo')
      expect(code).to include('Opal.load("foo");')
    end

    it 'warns the user that passing an env is not needed, only once' do
      expect(described_class).to receive(:warn).once
      described_class.load_asset('foo', env)
      described_class.load_asset('foo', env)
      described_class.load_asset('foo', env)
      described_class.load_asset('foo', 'bar', env)
      described_class.load_asset('foo', 'bar', env)
    end

    it 'accepts multiple names' do
      code = described_class.load_asset('foo', 'bar')
      expect(code).to include('Opal.load("foo");')
      expect(code).to include('Opal.load("bar");')
    end

    it 'detects deprecated env with multiple names' do
      code = described_class.load_asset('foo', 'bar', env)
      expect(code).to eq([
        'Opal.loaded(OpalLoaded || []);',
        'Opal.load("foo");',
        'Opal.load("bar");',
      ].join("\n"))
    end
  end

  describe '.javascript_include_tag' do
    it 'works with trailing / in the prefix' do
      code = described_class.javascript_include_tag('corelib/runtime', prefix: '/', sprockets: env, debug: false)
      expect(code).to include('src="/corelib/runtime.')
      expect(code).not_to include('//')
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
opal-sprockets-0.4.5.1.0.3.7 spec/sprockets_spec.rb