paths.rb
3.28 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
module NavigationHelpers
# Maps a name to a path. Used by the
#
# When /^I go to (.+)$/ do |page_name|
#
# step definition in web_steps.rb
#
def path_to(page_name)
case page_name
when /the homepage/
'/'
# Add more mappings here.
# Here is an example that pulls values out of the Regexp:
#
# when /^(.*)'s profile page$/i
# user_profile_path(User.find_by_login($1))
when /^\//
page_name
when /article "([^"]+)"\s*$/
url_for(Article.find_by_name($1).url.merge({:only_path => true}))
when /category "([^"]+)"/
'/cat/%s' % Category.find_by_name($1).slug
when /edit "(.+)" by (.+)/
article_id = Person[$2].articles.find_by_slug($1.to_slug).id
"/myprofile/#{$2}/cms/edit/#{article_id}"
when /edit (.*Block) of (.+)/
owner = Profile[$2]
klass = $1.constantize
block = klass.find(:all).select{|i| i.owner == owner}.first
"/myprofile/#{$2}/profile_design/edit/#{block.id}"
when /^(.*)'s homepage$/
'/' + $1
when /^(.*)'s blog$/
'/%s/blog' % Profile.find_by_name($1).identifier
when /^(.*)'s (.+) creation$/
'/myprofile/%s/cms/new?type=%s' % [Profile.find_by_name($1).identifier,$2]
when /^(.*)'s sitemap/
'/profile/%s/sitemap' % $1
when /^(.*)'s profile$/
'/profile/' + $1
when /^(.*)'s join page/
'/profile/%s/join' % Profile.find_by_name($1).identifier
when /^(.*)'s leave page/
'/profile/%s/leave' % Profile.find_by_name($1).identifier
when /^(.*)'s profile editor$/
"myprofile/manuel/profile_editor/edit"
when /^login page$/
'/account/login'
when /^logout page$/
'/account/logout'
when /^signup page$/
'/account/signup'
when /^(.*)'s control panel$/
'/myprofile/' + $1
when /the environment control panel/
'/admin'
when /^the search page$/
'/search'
when /^the search (.+) page$/
'/search/%s' % $1
when /^(.+)'s cms/
'/myprofile/%s/cms' % $1
when /^"(.+)" edit page/
article = Article.find_by_name($1)
'/myprofile/%s/cms/edit/%s' % [article.profile.identifier, article.id]
when /^(.+)'s members management/
'/myprofile/%s/profile_members' % Profile.find_by_name($1).identifier
when /^(.+)'s new product page/
'/myprofile/%s/manage_products/new' % Profile.find_by_name($1).identifier
when /^(.+)'s page of product (.*)$/
enterprise = Profile.find_by_name($1)
product = enterprise.products.find_by_name($2)
'/myprofile/%s/manage_products/show/%s' % [enterprise.identifier, product.id]
when /^(.*)'s products page$/
'/catalog/%s' % Profile.find_by_name($1).identifier
when /^chat$/
'/chat'
when /^(.+)'s tag page/
'/tag/%s' % $1
when /the user data path/
'/account/user_data'
when /^(.+)'s members page/
'/profile/%s/members' % Profile.find_by_name($1).identifier
else
begin
page_name =~ /the (.*) page/
path_components = $1.split(/\s+/)
self.send(path_components.push('path').join('_').to_sym)
rescue Object => e
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
"Now, go and add a mapping in #{__FILE__}"
end
end
end
end
World(NavigationHelpers)