sandoz.bbmb.ch 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.travis.yml +26 -0
  4. data/Gemfile +12 -0
  5. data/History.txt +6 -0
  6. data/LICENSE +339 -0
  7. data/Rakefile +21 -0
  8. data/doc/index.rbx +14 -0
  9. data/doc/resources/activex/BbmbBarcodeReader.CAB +0 -0
  10. data/doc/resources/activex/BbmbBarcodeReader2.CAB +0 -0
  11. data/doc/resources/bbmb.css +301 -0
  12. data/doc/resources/errors/appdown.html +14 -0
  13. data/doc/resources/javascript/bcreader.js +131 -0
  14. data/doc/resources/javascript/order.js +65 -0
  15. data/doc/resources/javascript/widget/ContentToggler.js +60 -0
  16. data/doc/resources/javascript/widget/__package__.js +2 -0
  17. data/doc/resources/javascript/widget/templates/ContentToggler.html +4 -0
  18. data/doc/resources/logo.png +0 -0
  19. data/lib/bbmb/html/util/lookandfeel.rb +202 -0
  20. data/lib/bbmb/sandoz.rb +4 -0
  21. data/lib/bbmb/sandoz/html/state/viral/customer.rb +25 -0
  22. data/lib/bbmb/sandoz/version.rb +5 -0
  23. data/lib/bbmb/util/csv_importer.rb +123 -0
  24. data/readme.md +28 -0
  25. data/sandoz.bbmb.ch.gemspec +45 -0
  26. data/test/rcov +2 -0
  27. data/test/selenium.rb +1687 -0
  28. data/test/selenium/selenium-server.jar +0 -0
  29. data/test/selenium/test_current_order.rb +336 -0
  30. data/test/selenium/test_customer.rb +363 -0
  31. data/test/selenium/test_customers.rb +92 -0
  32. data/test/selenium/test_favorites.rb +257 -0
  33. data/test/selenium/test_favorites_result.rb +81 -0
  34. data/test/selenium/test_history.rb +112 -0
  35. data/test/selenium/test_login.rb +112 -0
  36. data/test/selenium/test_orders.rb +111 -0
  37. data/test/selenium/test_result.rb +157 -0
  38. data/test/selenium/unit.rb +146 -0
  39. data/test/stub/http_server.rb +140 -0
  40. data/test/stub/persistence.rb +58 -0
  41. data/test/suite.rb +15 -0
  42. data/test/util/data/Artikel.TXT +50 -0
  43. data/test/util/data/Kunden.TXT +14 -0
  44. data/test/util/test_csv_importer.rb +136 -0
  45. metadata +414 -0
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestLogin -- bbmb.ch -- 21.09.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require "selenium/unit"
7
+
8
+ module BBMB
9
+ module Selenium
10
+ class TestLogin < Test::Unit::TestCase
11
+ include Selenium::TestCase
12
+ def test_login
13
+ open "/"
14
+ assert_equal "BBMB", get_title
15
+ assert is_text_present("Willkommen bei Sandoz")
16
+ assert_equal "Email", get_text("//label[@for='email']")
17
+ assert is_element_present("email")
18
+ assert_equal "Passwort", get_text("//label[@for='pass']")
19
+ assert is_element_present("pass")
20
+ assert_match Regexp.new(BBMB.config.http_server),
21
+ get_attribute("//form[@name='login']@action")
22
+ assert is_element_present("//input[@name='login']")
23
+ end
24
+ def test_login__fail_unknown_user
25
+ open "/"
26
+ assert_equal "BBMB", get_title
27
+ @auth.should_receive(:login).and_return { raise Yus::UnknownEntityError }
28
+ type "email", "unknown@bbmb.ch"
29
+ type "pass", "secret"
30
+ click "//input[@type='submit']"
31
+ wait_for_page_to_load "30000"
32
+ assert_equal "BBMB", get_title
33
+ assert_equal "error", get_attribute("//label[@for='email']@class")
34
+ end
35
+ def test_login__fail_wrong_password
36
+ open "/"
37
+ assert_equal "BBMB", get_title
38
+ @auth.should_receive(:login).and_return { raise Yus::AuthenticationError }
39
+ type "email", "unknown@bbmb.ch"
40
+ type "pass", "secret"
41
+ click "//input[@type='submit']"
42
+ wait_for_page_to_load "30000"
43
+ assert_equal "BBMB", get_title
44
+ assert_equal "error", get_attribute("//label[@for='pass']@class")
45
+ end
46
+ def test_login__force_home
47
+ open "/"
48
+ assert_equal "BBMB", get_title
49
+ open "/de/home"
50
+ assert is_text_present("Willkommen bei Sandoz")
51
+ assert is_element_present("email")
52
+ assert is_element_present("pass")
53
+ assert is_element_present("//input[@name='login']")
54
+ end
55
+ def test_logout__clean
56
+ @auth.should_ignore_missing
57
+ @persistence.should_receive(:all).and_return([])
58
+ user = login_admin
59
+ assert is_element_present("link=Abmelden")
60
+ assert_equal "Abmelden", get_text("link=Abmelden")
61
+ click "link=Abmelden"
62
+ wait_for_page_to_load "30000"
63
+ assert_equal "BBMB", get_title
64
+ assert_equal "Email", get_text("//label[@for='email']")
65
+ assert is_element_present("email")
66
+ assert_equal "Passwort", get_text("//label[@for='pass']")
67
+ assert is_element_present("pass")
68
+ open "/de/customers"
69
+ # session is now invalid, we stay in login-mask
70
+ assert_equal "BBMB", get_title
71
+ assert_equal "Email", get_text("//label[@for='email']")
72
+ assert is_element_present("email")
73
+ assert_equal "Passwort", get_text("//label[@for='pass']")
74
+ assert is_element_present("pass")
75
+ end
76
+ def test_logout__timeout
77
+ @auth.should_ignore_missing
78
+ @persistence.should_receive(:all).and_return([])
79
+ user = login_admin
80
+ user.should_receive(:expired?).and_return(true)
81
+ user.should_receive(:logout)
82
+ refresh
83
+ wait_for_page_to_load "30000"
84
+ assert_equal "BBMB", get_title
85
+ assert is_element_present("email")
86
+ assert is_element_present("pass")
87
+ end
88
+ def test_logout__disconnect
89
+ @auth.should_ignore_missing
90
+ @persistence.should_receive(:all).and_return([])
91
+ user = login_admin
92
+ user.should_receive(:expired?).and_return { raise DRb::DRbError }
93
+ refresh
94
+ wait_for_page_to_load "30000"
95
+ assert_equal "BBMB", get_title
96
+ assert is_element_present("email")
97
+ assert is_element_present("pass")
98
+ end
99
+ def test_new_customer_form
100
+ open "/"
101
+ assert_equal "BBMB", get_title
102
+ assert_equal "Neuer Kunde", get_text("//label[@for='new_customer']")
103
+ assert_equal <<-EOS.strip, get_text("//a[@name='new_customer']")
104
+ Bestellen Sie jetzt online. Wir richten für Sie den spezifisch auf Ihre Praxis zugeschnittenen, benutzerfreundlichen E-Shop ein!
105
+ Unser Kundenservice oder unsere Aussendienstmitarbeiter beraten Sie gerne!
106
+ EOS
107
+ assert_match Regexp.new("^mailto:"),
108
+ get_attribute("//a[@name='new_customer']@href")
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestOrders -- bbmb.ch -- 05.10.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'selenium/unit'
7
+
8
+ module BBMB
9
+ module Selenium
10
+ class TestOrders < Test::Unit::TestCase
11
+ include Selenium::TestCase
12
+ def setup_customer
13
+ BBMB.persistence.should_ignore_missing
14
+ customer = BBMB::Model::Customer.new('007')
15
+ customer.organisation = 'Test-Customer'
16
+ customer.instance_variable_set('@email', 'test.customer@bbmb.ch')
17
+ customer.plz = '7777'
18
+ @persistence.should_receive(:all).and_return { |klass|
19
+ assert_equal(BBMB::Model::Customer, klass)
20
+ [customer]
21
+ }
22
+ product1 = BBMB::Model::Product.new('1')
23
+ product1.description.de = "Product 1"
24
+ product1.price = Util::Money.new(11.10)
25
+ product2 = BBMB::Model::Product.new('2')
26
+ product2.description.de = "Product 2"
27
+ product2.price = Util::Money.new(12.20)
28
+ product3 = BBMB::Model::Product.new('3')
29
+ product3.description.de = "Product 3"
30
+ product3.price = Util::Money.new(13.30)
31
+ order = customer.current_order
32
+ order.add(2, product1)
33
+ order.add(3, product2)
34
+ order.priority = 41
35
+ order.shipping = 50
36
+ order.reference = "Réf. N°"
37
+ order.comment = "Freetext"
38
+ customer.commit_order!
39
+ order = customer.current_order
40
+ order.add(5, product2)
41
+ order.add(7, product3)
42
+ customer.commit_order!
43
+ customer
44
+ end
45
+ def test_archive__admin
46
+ customer = setup_customer
47
+ user = login_admin
48
+ @selenium.click "link=Test-Customer"
49
+ @selenium.wait_for_page_to_load "30000"
50
+ assert_equal "BBMB | Kunde", @selenium.get_title
51
+
52
+ assert @selenium.is_element_present("link=Sfr. 262.90")
53
+ @selenium.click "link=Sfr. 262.90"
54
+ @selenium.wait_for_page_to_load "30000"
55
+ assert_equal "BBMB | Archiv", @selenium.get_title
56
+ assert @selenium.is_text_present(Date.today.strftime('%d.%m.%Y'))
57
+ assert @selenium.is_text_present("108.80")
58
+ assert @selenium.is_text_present("154.10")
59
+
60
+ ## orders are ordered with newest on top - index 0 thus yields order2
61
+ @selenium.click "name=commit_time index=0"
62
+ @selenium.wait_for_page_to_load "30000"
63
+ assert_equal "BBMB | Archiv - Bestellung", @selenium.get_title
64
+ assert @selenium.is_text_present("Product 2")
65
+ assert @selenium.is_text_present("Product 3")
66
+ assert @selenium.is_text_present("Total Sfr. 154.10")
67
+ assert !@selenium.is_text_present("Interne Bestellnummer")
68
+ assert !@selenium.is_text_present("Bemerkungen")
69
+ assert !@selenium.is_text_present("Versandart")
70
+
71
+ ## go directly to the next order without returning to orders
72
+ @selenium.open "/de/order/order_id/007-1"
73
+ @selenium.wait_for_page_to_load "30000"
74
+ assert_equal "BBMB | Archiv - Bestellung", @selenium.get_title
75
+ assert @selenium.is_text_present("Product 1")
76
+ assert @selenium.is_text_present("Product 2")
77
+ assert @selenium.is_text_present("Total Sfr. 108.80")
78
+ assert @selenium.is_text_present("Interne Bestellnummer")
79
+ assert @selenium.is_text_present("Réf. N°")
80
+ assert @selenium.is_text_present("Bemerkungen")
81
+ assert @selenium.is_text_present("Freetext")
82
+ assert @selenium.is_text_present("Versandart")
83
+ assert @selenium.is_text_present("Terminfracht")
84
+ end
85
+ def test_archive__customer
86
+ customer = setup_customer
87
+ user = login_customer customer
88
+ @selenium.click "link=Archiv"
89
+ @selenium.wait_for_page_to_load "30000"
90
+ assert_equal "BBMB | Archiv", @selenium.get_title
91
+ assert @selenium.is_text_present(Date.today.strftime('%d.%m.%Y'))
92
+ assert @selenium.is_text_present("108.80")
93
+ assert @selenium.is_text_present("154.10")
94
+
95
+ ## orders are ordered with newest on top - index 1 thus yields order1
96
+ @selenium.click "name=commit_time index=1"
97
+ @selenium.wait_for_page_to_load "30000"
98
+ assert_equal "BBMB | Archiv - Bestellung", @selenium.get_title
99
+ assert @selenium.is_text_present("Product 1")
100
+ assert @selenium.is_text_present("Product 2")
101
+ assert @selenium.is_text_present("Total Sfr. 108.80")
102
+ assert @selenium.is_text_present("Interne Bestellnummer")
103
+ assert @selenium.is_text_present("Réf. N°")
104
+ assert @selenium.is_text_present("Bemerkungen")
105
+ assert @selenium.is_text_present("Freetext")
106
+ assert @selenium.is_text_present("Versandart")
107
+ assert @selenium.is_text_present("Terminfracht")
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestResult -- bbmb.ch -- 22.09.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'selenium/unit'
7
+
8
+ module BBMB
9
+ module Selenium
10
+ class TestResult < Test::Unit::TestCase
11
+ include Selenium::TestCase
12
+ def test_result__empty
13
+ user = login_customer
14
+ flexstub(Model::Product).should_receive(:search_by_description).times(1).and_return {
15
+ |query|
16
+ assert_equal 'product', query
17
+ []
18
+ }
19
+ @selenium.type "query", "product"
20
+ @selenium.click "document.search.search"
21
+ @selenium.wait_for_page_to_load "30000"
22
+ assert_equal "BBMB | Suchen", @selenium.get_title
23
+ assert @selenium.is_text_present("Suchresultat: 0 Produkte gefunden")
24
+ assert @selenium.is_element_present("//input[@type='text' and @name='query']")
25
+ assert !@selenium.is_element_present("//input[@type='submit' and @name='order_product']")
26
+ end
27
+ def test_result__1
28
+ user = login_customer
29
+ product = Model::Product.new('12345')
30
+ product.description.de = 'product - a description'
31
+ product.price = Util::Money.new(12.50)
32
+ flexstub(Model::Product).should_receive(:search_by_description).times(1).and_return {
33
+ |query|
34
+ assert_equal 'product', query
35
+ [product]
36
+ }
37
+ @selenium.type "query", "product"
38
+ @selenium.click "document.search.search"
39
+ @selenium.wait_for_page_to_load "30000"
40
+ assert_equal "BBMB | Suchen", @selenium.get_title
41
+ assert @selenium.is_text_present("Suchresultat: 1 Produkt gefunden")
42
+ assert @selenium.is_element_present("//input[@type='text' and @name='query']")
43
+ assert @selenium.is_element_present("//input[@type='submit' and @name='order_product']")
44
+ assert @selenium.is_element_present("//input[@name='quantity[12345]']")
45
+ assert_equal '0', @selenium.get_value("//input[@name='quantity[12345]']")
46
+ assert !@selenium.is_text_present("im Rückstand")
47
+ end
48
+ def test_result__order
49
+ BBMB.persistence.should_ignore_missing
50
+ user = login_customer
51
+ product = Model::Product.new('12345')
52
+ product.description.de = 'product - a description'
53
+ product.price = Util::Money.new(11.50)
54
+ flexstub(Model::Product).should_receive(:search_by_description).times(1).and_return {
55
+ |query|
56
+ assert_equal 'product', query
57
+ [product]
58
+ }
59
+ @selenium.type "query", "product"
60
+ @selenium.click "document.search.search"
61
+ @selenium.wait_for_page_to_load "30000"
62
+ assert_equal "BBMB | Suchen", @selenium.get_title
63
+ assert @selenium.is_element_present("//input[@name='quantity[12345]']")
64
+ assert_equal '0', @selenium.get_value("//input[@name='quantity[12345]']")
65
+ @selenium.type "quantity[12345]", "15"
66
+ @selenium.click "document.products.order_product"
67
+ @selenium.wait_for_page_to_load "30000"
68
+ assert_equal "BBMB | Home", @selenium.get_title
69
+ assert @selenium.is_element_present("link=product - a description")
70
+ assert @selenium.is_text_present("11.50")
71
+ assert @selenium.is_text_present("172.50")
72
+ end
73
+ def test_result__backorder
74
+ user = login_customer
75
+ product = Model::Product.new('12345')
76
+ product.description.de = 'product - a description'
77
+ product.price = Util::Money.new(12.50)
78
+ product.backorder = true
79
+ flexstub(Model::Product).should_receive(:search_by_description).times(1).and_return {
80
+ |query|
81
+ assert_equal 'product', query
82
+ [product]
83
+ }
84
+ @selenium.type "query", "product"
85
+ @selenium.click "document.search.search"
86
+ @selenium.wait_for_page_to_load "30000"
87
+ assert_equal "BBMB | Suchen", @selenium.get_title
88
+ assert @selenium.is_text_present("Suchresultat: 1 Produkt gefunden")
89
+ assert @selenium.is_text_present("im Rückstand")
90
+ end
91
+ def test_result__sort
92
+ user = login_customer
93
+ product1 = Model::Product.new('12345')
94
+ product1.description.de = 'product 1'
95
+ product1.price = Util::Money.new(12.50)
96
+ product2 = Model::Product.new('12345')
97
+ product2.description.de = 'product 2'
98
+ product2.price = Util::Money.new(10.50)
99
+ flexstub(Model::Product).should_receive(:search_by_description).times(1).and_return {
100
+ |query|
101
+ assert_equal 'product', query
102
+ [product1, product2]
103
+ }
104
+ @selenium.type "query", "product"
105
+ @selenium.click "document.search.search"
106
+ @selenium.wait_for_page_to_load "30000"
107
+ assert_equal "BBMB | Suchen", @selenium.get_title
108
+ assert @selenium.is_text_present("Suchresultat: 2 Produkte gefunden")
109
+ assert_equal 'product 1', @selenium.get_text("//tr[2]/td[2]")
110
+ assert_equal 'product 2', @selenium.get_text("//tr[4]/td[2]")
111
+
112
+ @selenium.click "link=Preis"
113
+ @selenium.wait_for_page_to_load "30000"
114
+ assert @selenium.is_text_present("Suchresultat: 2 Produkte gefunden")
115
+ assert_equal 'product 2', @selenium.get_text("//tr[2]/td[2]")
116
+ assert_equal 'product 1', @selenium.get_text("//tr[4]/td[2]")
117
+
118
+ @selenium.click "link=Preis"
119
+ @selenium.wait_for_page_to_load "30000"
120
+ assert @selenium.is_text_present("Suchresultat: 2 Produkte gefunden")
121
+ assert_equal 'product 1', @selenium.get_text("//tr[2]/td[2]")
122
+ assert_equal 'product 2', @selenium.get_text("//tr[4]/td[2]")
123
+ end
124
+ def test_result__has_ordered_products
125
+ BBMB.persistence.should_ignore_missing
126
+ user = login_customer
127
+ product = Model::Product.new('12345')
128
+ product.description.de = 'product - a description'
129
+ product.price = Util::Money.new(11.50)
130
+ @customer.current_order.add(5, product)
131
+ flexstub(Model::Product).should_receive(:search_by_description).times(1).and_return {
132
+ |query|
133
+ assert_equal 'product', query
134
+ [product]
135
+ }
136
+ @selenium.type "query", "product"
137
+ @selenium.click "document.search.search"
138
+ @selenium.wait_for_page_to_load "30000"
139
+ assert_equal "BBMB | Suchen", @selenium.get_title
140
+ assert @selenium.is_element_present("//input[@name='quantity[12345]']")
141
+ assert_equal '5', @selenium.get_value("//input[@name='quantity[12345]']")
142
+ @selenium.type "quantity[12345]", "trigger an error!"
143
+ @selenium.click "document.products.order_product"
144
+ @selenium.wait_for_page_to_load "30000"
145
+ assert_equal "BBMB | Suchen", @selenium.get_title
146
+ assert @selenium.is_text_present("'trigger an error!' ist keine gültige Zahl.")
147
+ assert @selenium.is_element_present("//input[@name='quantity[12345]']")
148
+ assert_equal '5', @selenium.get_value("//input[@name='quantity[12345]']")
149
+ @selenium.type "quantity[12345]", "10"
150
+ @selenium.click "document.products.order_product"
151
+ @selenium.wait_for_page_to_load "30000"
152
+ assert_equal "BBMB | Home", @selenium.get_title
153
+ assert_equal(10, @customer.current_order.quantity(product))
154
+ end
155
+ end
156
+ end
157
+ end
@@ -0,0 +1,146 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestCase -- bbmb.ch -- 22.09.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ ENV['LD_LIBRARY_PATH'] = '/usr/local/firefox'
7
+ if(pid = Kernel.fork)
8
+ at_exit {
9
+ Process.kill('HUP', pid)
10
+ $selenium.stop if($selenium.respond_to?(:stop))
11
+ }
12
+ else
13
+ path = File.expand_path('selenium-server.jar', File.dirname(__FILE__))
14
+ command = "java -jar #{path} &> /dev/null"
15
+ exec(command)
16
+ end
17
+
18
+ require "bbmb/config"
19
+ require 'delegate'
20
+ require 'selenium'
21
+
22
+ module BBMB
23
+ module Selenium
24
+ class SeleniumWrapper < SimpleDelegator
25
+ def initialize(host, port, browser, server, port2)
26
+ @server = server
27
+ @selenium = ::Selenium::SeleneseInterpreter.new(host, port, browser,
28
+ server, port2)
29
+ super @selenium
30
+ end
31
+ def open(path)
32
+ @selenium.open(@server + path)
33
+ end
34
+ def type(*args)
35
+ @selenium.type(*args)
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ BBMB.config.http_server = 'http://localhost'
42
+
43
+ $selenium = BBMB::Selenium::SeleniumWrapper.new("localhost", 4444,
44
+ "*chrome", BBMB.config.http_server + ":10080", 10000)
45
+
46
+ start = Time.now
47
+ begin
48
+ $selenium.start
49
+ rescue Errno::ECONNREFUSED
50
+ sleep 1
51
+ if((Time.now - start) > 15)
52
+ raise
53
+ else
54
+ retry
55
+ end
56
+ end
57
+
58
+ require "bbmb/util/server"
59
+ require 'flexmock'
60
+ require 'logger'
61
+ require 'stub/http_server'
62
+ require 'stub/persistence'
63
+ require "test/unit"
64
+
65
+ module BBMB
66
+ module Selenium
67
+ module TestCase
68
+ include FlexMock::TestCase
69
+ include SeleniumHelper
70
+ def setup
71
+ Model::Customer.clear_instances
72
+ Model::Product.clear_instances
73
+ BBMB.logger = Logger.new($stdout)
74
+ BBMB.logger.level = Logger::FATAL #DEBUG
75
+ @auth = flexmock('authenticator')
76
+ BBMB.auth = @auth
77
+ @persistence = flexmock('persistence')
78
+ BBMB.persistence = @persistence
79
+ @server = Util::Server.new(@persistence)
80
+ @server.extend(DRbUndumped)
81
+ drb_url = "druby://localhost:10081"
82
+ @drb = Thread.new {
83
+ @drb_server = DRb.start_service(drb_url, @server)
84
+ }
85
+ @drb.abort_on_exception = true
86
+ @http_server = Stub.http_server(drb_url)
87
+ @webrick = Thread.new { @http_server.start }
88
+ @verification_errors = []
89
+ if $selenium
90
+ @selenium = $selenium
91
+ else
92
+ @selenium = SeleniumWrapper.new("localhost", 4444, "*chrome",
93
+ BBMB.config.http_server + ":10080", 10000)
94
+ @selenium.start
95
+ end
96
+ @selenium.set_context("TestBbmb")
97
+ end
98
+ def teardown
99
+ @selenium.stop unless $selenium
100
+ @http_server.shutdown
101
+ @drb_server.stop_service
102
+ assert_equal [], @verification_errors
103
+ super
104
+ end
105
+ def login(email, *permissions)
106
+ user = mock_user email, *permissions
107
+ @auth.should_receive(:login).and_return(user)
108
+ @selenium.open "/"
109
+ @selenium.type "email", email
110
+ @selenium.type "pass", "test"
111
+ @selenium.click "//input[@name='login']"
112
+ @selenium.wait_for_page_to_load "30000"
113
+ user
114
+ end
115
+ def login_admin
116
+ login "test.admin@bbmb.ch", ['login', 'ch.bbmb.Admin'],
117
+ ['edit', 'yus.entities']
118
+ end
119
+ def login_customer(customer=nil)
120
+ email = "test.customer@bbmb.ch"
121
+ if(customer)
122
+ email = customer.email
123
+ @customer = customer
124
+ else
125
+ @customer = Model::Customer.new('007')
126
+ @customer.instance_variable_set('@email', email)
127
+ end
128
+ login email, ['login', 'ch.bbmb.Customer']
129
+ end
130
+ def mock_user(email, *permissions)
131
+ user = flexmock(email)
132
+ user.should_receive(:allowed?).and_return { |*pair|
133
+ permissions.include?(pair)
134
+ }
135
+ user.should_receive(:name).and_return(email)
136
+ user.should_receive(:get_preference)
137
+ user.should_receive(:find_entity).and_return { |email|
138
+ (@yus_entities ||= {})[email]
139
+ }
140
+ user.should_receive(:last_login)
141
+ user.should_ignore_missing
142
+ user
143
+ end
144
+ end
145
+ end
146
+ end