File: spec_helper.rb

package info (click to toggle)
ruby-simple-navigation 4.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 488 kB
  • ctags: 255
  • sloc: ruby: 3,693; makefile: 3
file content (70 lines) | stat: -rw-r--r-- 2,014 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
require 'initializers/have_css_matcher'
require 'initializers/memfs'
require 'initializers/coveralls'
require 'initializers/rails'
require 'initializers/rspec'
require 'capybara/rspec'

if defined? Rails
  require 'fake_app/rails_app'
  require 'rspec/rails'

  Capybara.app = RailsApp::Application

  RSpec.configure do |config|
    config.before do
      SimpleNavigation.config_files.clear
      setup_adapter_for :rails
    end
  end
end

def setup_adapter_for(framework, context = double(:context))
  if framework == :rails
    allow(context).to receive_messages(view_context: ActionView::Base.new)
  end

  allow(SimpleNavigation).to receive_messages(framework: framework)
  SimpleNavigation.load_adapter
  SimpleNavigation.init_adapter_from(context)
end

def select_an_item(item)
  allow(item).to receive_messages(selected?: true)
end

def setup_container(dom_id, dom_class)
  container = SimpleNavigation::ItemContainer.new(1)
  container.dom_id = dom_id
  container.dom_class = dom_class
  container
end

def setup_navigation(dom_id, dom_class)
  setup_adapter_for :rails
  container = setup_container(dom_id, dom_class)
  setup_items(container)
  container
end

# FIXME: adding the :link option for the list renderer messes up the other
#        renderers
def setup_items(container)
  container.item :users, 'Users', '/users', html: { id: 'users_id' }, link_html: { id: 'users_link_id' }
  container.item :invoices, 'Invoices', '/invoices' do |invoices|
    invoices.item :paid, 'Paid', '/invoices/paid'
    invoices.item :unpaid, 'Unpaid', '/invoices/unpaid'
  end
  container.item :accounts, 'Accounts', '/accounts', html: { style: 'float:right' }
  container.item :miscellany, 'Miscellany'

  container.items.each do |item|
    allow(item).to receive_messages(selected?: false, selected_by_condition?: false)

    if item.sub_navigation
      item.sub_navigation.items.each do |item|
        allow(item).to receive_messages(selected?: false, selected_by_condition?: false)
      end
    end
  end
end