merb-admin 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +1 -1
- data/Rakefile +1 -1
- data/app/controllers/application.rb +1 -1
- data/app/controllers/main.rb +1 -1
- data/app/helpers/application_helper.rb +9 -9
- data/app/views/layout/dashboard.html.erb +1 -1
- data/app/views/main/_has_many.html.erb +1 -1
- data/app/views/main/_properties.html.erb +1 -1
- data/lib/merb-admin/merbtasks.rb +3 -3
- data/lib/merb-admin/slicetasks.rb +1 -2
- data/lib/merb-admin/spectasks.rb +1 -1
- data/lib/merb-admin.rb +2 -2
- data/public/javascripts/DateTimeShortcuts.js +4 -4
- data/public/javascripts/RelatedObjectLookups.js +1 -1
- data/public/javascripts/actions.js +1 -1
- data/public/javascripts/core.js +2 -2
- data/public/javascripts/dateparse.js +12 -12
- data/public/javascripts/getElementsBySelector.js +9 -9
- data/public/stylesheets/global.css +2 -2
- data/spec/controllers/main_spec.rb +1 -1
- data/spec/models/datamapper/draft.rb +1 -1
- data/spec/models/datamapper/league.rb +2 -2
- data/spec/requests/main_spec.rb +3 -3
- metadata +1 -1
data/README.markdown
CHANGED
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ AUTHOR = "Erik Michaels-Ober"
|
|
9
9
|
EMAIL = "sferik@gmail.com"
|
10
10
|
HOMEPAGE = "http://github.com/sferik/merb-admin"
|
11
11
|
SUMMARY = "MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data."
|
12
|
-
GEM_VERSION = "0.5.
|
12
|
+
GEM_VERSION = "0.5.2"
|
13
13
|
|
14
14
|
spec = Gem::Specification.new do |s|
|
15
15
|
s.rubyforge_project = "merb"
|
data/app/controllers/main.rb
CHANGED
@@ -80,7 +80,7 @@ class MerbAdmin::Main < MerbAdmin::Application
|
|
80
80
|
end
|
81
81
|
has_one_associations = @abstract_model.has_one_associations.map{|association| [association, (params[:associations] || {}).delete(association[:name])]}
|
82
82
|
has_many_associations = @abstract_model.has_many_associations.map{|association| [association, (params[:associations] || {}).delete(association[:name])]}
|
83
|
-
if @object.update_attributes(object) && has_one_associations.each{|association, id| update_has_one_association(association, id)} && has_many_associations.each{|association, ids| update_has_many_association(association, ids)}
|
83
|
+
if @object.update_attributes(object) && has_one_associations.each{|association, id| update_has_one_association(association, id)} && has_many_associations.each{|association, ids| update_has_many_association(association, ids)}
|
84
84
|
if params[:_continue]
|
85
85
|
redirect(url(:merb_admin_edit, :model_name => @abstract_model.singular_name, :id => @object.id), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
|
86
86
|
elsif params[:_add_another]
|
@@ -4,7 +4,7 @@ module Merb
|
|
4
4
|
|
5
5
|
# @param *segments<Array[#to_s]> Path segments to append.
|
6
6
|
#
|
7
|
-
# @return <String>
|
7
|
+
# @return <String>
|
8
8
|
# A path relative to the public directory, with added segments.
|
9
9
|
def image_path(*segments)
|
10
10
|
public_path_for(:image, *segments)
|
@@ -12,7 +12,7 @@ module Merb
|
|
12
12
|
|
13
13
|
# @param *segments<Array[#to_s]> Path segments to append.
|
14
14
|
#
|
15
|
-
# @return <String>
|
15
|
+
# @return <String>
|
16
16
|
# A path relative to the public directory, with added segments.
|
17
17
|
def javascript_path(*segments)
|
18
18
|
public_path_for(:javascript, *segments)
|
@@ -20,40 +20,40 @@ module Merb
|
|
20
20
|
|
21
21
|
# @param *segments<Array[#to_s]> Path segments to append.
|
22
22
|
#
|
23
|
-
# @return <String>
|
23
|
+
# @return <String>
|
24
24
|
# A path relative to the public directory, with added segments.
|
25
25
|
def stylesheet_path(*segments)
|
26
26
|
public_path_for(:stylesheet, *segments)
|
27
27
|
end
|
28
28
|
|
29
29
|
# Construct a path relative to the public directory
|
30
|
-
#
|
30
|
+
#
|
31
31
|
# @param <Symbol> The type of component.
|
32
32
|
# @param *segments<Array[#to_s]> Path segments to append.
|
33
33
|
#
|
34
|
-
# @return <String>
|
34
|
+
# @return <String>
|
35
35
|
# A path relative to the public directory, with added segments.
|
36
36
|
def public_path_for(type, *segments)
|
37
37
|
::MerbAdmin.public_path_for(type, *segments)
|
38
38
|
end
|
39
39
|
|
40
40
|
# Construct an app-level path.
|
41
|
-
#
|
41
|
+
#
|
42
42
|
# @param <Symbol> The type of component.
|
43
43
|
# @param *segments<Array[#to_s]> Path segments to append.
|
44
44
|
#
|
45
|
-
# @return <String>
|
45
|
+
# @return <String>
|
46
46
|
# A path within the host application, with added segments.
|
47
47
|
def app_path_for(type, *segments)
|
48
48
|
::MerbAdmin.app_path_for(type, *segments)
|
49
49
|
end
|
50
50
|
|
51
51
|
# Construct a slice-level path.
|
52
|
-
#
|
52
|
+
#
|
53
53
|
# @param <Symbol> The type of component.
|
54
54
|
# @param *segments<Array[#to_s]> Path segments to append.
|
55
55
|
#
|
56
|
-
# @return <String>
|
56
|
+
# @return <String>
|
57
57
|
# A path within the slice source (Gem), with added segments.
|
58
58
|
def slice_path_for(type, *segments)
|
59
59
|
::MerbAdmin.slice_path_for(type, *segments)
|
data/lib/merb-admin/merbtasks.rb
CHANGED
@@ -47,7 +47,7 @@ namespace :slices do
|
|
47
47
|
task :migrate do # see slicetasks.rb
|
48
48
|
end
|
49
49
|
|
50
|
-
desc "Freeze MerbAdmin into your app (only merb-admin/app)"
|
50
|
+
desc "Freeze MerbAdmin into your app (only merb-admin/app)"
|
51
51
|
task :freeze => [ "freeze:app" ]
|
52
52
|
|
53
53
|
namespace :freeze do
|
@@ -67,7 +67,7 @@ namespace :slices do
|
|
67
67
|
preserved.each { |f| puts "! preserved override as #{f}" }
|
68
68
|
end
|
69
69
|
|
70
|
-
desc "Freeze all views into your application for easy modification"
|
70
|
+
desc "Freeze all views into your application for easy modification"
|
71
71
|
task :views do
|
72
72
|
puts "Copying all view templates to your application - resolves any collisions"
|
73
73
|
copied, preserved = MerbAdmin.mirror_files_for :view
|
@@ -76,7 +76,7 @@ namespace :slices do
|
|
76
76
|
preserved.each { |f| puts "! preserved override as #{f}" }
|
77
77
|
end
|
78
78
|
|
79
|
-
desc "Freeze all models into your application for easy modification"
|
79
|
+
desc "Freeze all models into your application for easy modification"
|
80
80
|
task :models do
|
81
81
|
puts "Copying all models to your application - resolves any collisions"
|
82
82
|
copied, preserved = MerbAdmin.mirror_files_for :model
|
@@ -60,7 +60,7 @@ def load_data
|
|
60
60
|
division = MerbAdmin::AbstractModel.new("Division").create(:name => mlb_team.division, :league => league)
|
61
61
|
end
|
62
62
|
unless team = MerbAdmin::AbstractModel.new("Team").first(:conditions => ["name = ?", mlb_team.name])
|
63
|
-
team = MerbAdmin::AbstractModel.new("Team").create(:name => mlb_team.name, :division => division, :league => league)
|
63
|
+
team = MerbAdmin::AbstractModel.new("Team").create(:name => mlb_team.name, :logo_image_url => mlb_team.logo_url, :manager => mlb_team.manager, :ballpark => mlb_team.ballpark, :mascot => mlb_team.mascot, :founded => mlb_team.founded, :wins => mlb_team.wins, :losses => mlb_team.losses, :win_percentage => ("%.3f" % (mlb_team.wins.to_f / mlb_team.wins + mlb_team.losses)).to_f, :division => division, :league => league)
|
64
64
|
end
|
65
65
|
mlb_team.players.each do |player|
|
66
66
|
MerbAdmin::AbstractModel.new("Player").create(:name => player.name, :number => player.number, :position => player.position, :team => team)
|
@@ -128,4 +128,3 @@ def split_name(name)
|
|
128
128
|
mres = /^([^\/\.]+)\.(.+)$/i.match(file_name)
|
129
129
|
mres.nil? ? [file_name, ''] : [mres[1], mres[2]]
|
130
130
|
end
|
131
|
-
|
data/lib/merb-admin/spectasks.rb
CHANGED
@@ -35,7 +35,7 @@ namespace :slices do
|
|
35
35
|
t.spec_opts = ["--format", "specdoc", "--colour"]
|
36
36
|
if(ENV['REQUEST'])
|
37
37
|
t.spec_files = Dir["#{slice_root}/spec/requests/**/#{ENV['REQUEST']}_spec.rb"].sort
|
38
|
-
else
|
38
|
+
else
|
39
39
|
t.spec_files = Dir["#{slice_root}/spec/requests/**/*_spec.rb"].sort
|
40
40
|
end
|
41
41
|
end
|
data/lib/merb-admin.rb
CHANGED
@@ -9,7 +9,7 @@ if defined?(Merb::Plugins)
|
|
9
9
|
Merb::Slices::register(__FILE__)
|
10
10
|
|
11
11
|
# Slice configuration - set this in a before_app_loads callback.
|
12
|
-
# By default a Slice uses its own layout, so you can swicht to
|
12
|
+
# By default a Slice uses its own layout, so you can swicht to
|
13
13
|
# the main application layout or no layout at all if needed.
|
14
14
|
#
|
15
15
|
# Configuration options:
|
@@ -23,7 +23,7 @@ if defined?(Merb::Plugins)
|
|
23
23
|
|
24
24
|
# Slice metadata
|
25
25
|
self.description = "MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data."
|
26
|
-
self.version = "0.5.
|
26
|
+
self.version = "0.5.2"
|
27
27
|
self.author = "Erik Michaels-Ober"
|
28
28
|
|
29
29
|
# Stub classes loaded hook - runs before LoadClasses BootLoader
|
@@ -92,7 +92,7 @@ var DateTimeShortcuts = {
|
|
92
92
|
openClock: function(num) {
|
93
93
|
var clock_box = document.getElementById(DateTimeShortcuts.clockDivName+num)
|
94
94
|
var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName+num)
|
95
|
-
|
95
|
+
|
96
96
|
// Recalculate the clockbox position
|
97
97
|
// is it left-to-right or right-to-left layout ?
|
98
98
|
if (getStyle(document.body,'direction')!='rtl') {
|
@@ -106,7 +106,7 @@ var DateTimeShortcuts = {
|
|
106
106
|
clock_box.style.left = findPosX(clock_link) - 110 + 'px';
|
107
107
|
}
|
108
108
|
clock_box.style.top = findPosY(clock_link) - 30 + 'px';
|
109
|
-
|
109
|
+
|
110
110
|
// Show the clock box
|
111
111
|
clock_box.style.display = 'block';
|
112
112
|
addEvent(window.document, 'click', function() { DateTimeShortcuts.dismissClock(num); return true; });
|
@@ -208,7 +208,7 @@ var DateTimeShortcuts = {
|
|
208
208
|
}
|
209
209
|
}
|
210
210
|
|
211
|
-
|
211
|
+
|
212
212
|
// Recalculate the clockbox position
|
213
213
|
// is it left-to-right or right-to-left layout ?
|
214
214
|
if (getStyle(document.body,'direction')!='rtl') {
|
@@ -222,7 +222,7 @@ var DateTimeShortcuts = {
|
|
222
222
|
cal_box.style.left = findPosX(cal_link) - 180 + 'px';
|
223
223
|
}
|
224
224
|
cal_box.style.top = findPosY(cal_link) - 75 + 'px';
|
225
|
-
|
225
|
+
|
226
226
|
cal_box.style.display = 'block';
|
227
227
|
addEvent(window.document, 'click', function() { DateTimeShortcuts.dismissCalendar(num); return true; });
|
228
228
|
},
|
@@ -13,7 +13,7 @@ function html_unescape(text) {
|
|
13
13
|
|
14
14
|
// IE doesn't accept periods or dashes in the window name, but the element IDs
|
15
15
|
// we use to generate popup window names may contain them, therefore we map them
|
16
|
-
// to allowed characters in a reversible way so that we can locate the correct
|
16
|
+
// to allowed characters in a reversible way so that we can locate the correct
|
17
17
|
// element when the popup window is dismissed.
|
18
18
|
function id_to_windowname(text) {
|
19
19
|
text = text.replace(/\./g, '__dot__');
|
@@ -25,7 +25,7 @@ var Actions = {
|
|
25
25
|
tr.className += ' selected';
|
26
26
|
} else if (!checked) {
|
27
27
|
tr.className = tr.className.replace(' selected', '');
|
28
|
-
}
|
28
|
+
}
|
29
29
|
},
|
30
30
|
checker: function(checked) {
|
31
31
|
var actionCheckboxes = document.getElementsBySelector('tr input.action-select');
|
data/public/javascripts/core.js
CHANGED
@@ -78,7 +78,7 @@ function findPosX(obj) {
|
|
78
78
|
curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft);
|
79
79
|
obj = obj.offsetParent;
|
80
80
|
}
|
81
|
-
// IE offsetParent does not include the top-level
|
81
|
+
// IE offsetParent does not include the top-level
|
82
82
|
if (isIE && obj.parentElement){
|
83
83
|
curleft += obj.offsetLeft - obj.scrollLeft;
|
84
84
|
}
|
@@ -95,7 +95,7 @@ function findPosY(obj) {
|
|
95
95
|
curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop);
|
96
96
|
obj = obj.offsetParent;
|
97
97
|
}
|
98
|
-
// IE offsetParent does not include the top-level
|
98
|
+
// IE offsetParent does not include the top-level
|
99
99
|
if (isIE && obj.parentElement){
|
100
100
|
curtop += obj.offsetTop - obj.scrollTop;
|
101
101
|
}
|
@@ -36,7 +36,7 @@ var weekdayNames = gettext("Sunday Monday Tuesday Wednesday Thursday Friday Satu
|
|
36
36
|
an error if 0 or more than 1 matches
|
37
37
|
*/
|
38
38
|
function parseMonth(month) {
|
39
|
-
var matches = monthNames.filter(function(item) {
|
39
|
+
var matches = monthNames.filter(function(item) {
|
40
40
|
return new RegExp("^" + month, "i").test(item);
|
41
41
|
});
|
42
42
|
if (matches.length == 0) {
|
@@ -61,22 +61,22 @@ function parseWeekday(weekday) {
|
|
61
61
|
return weekdayNames.indexOf(matches[0]);
|
62
62
|
}
|
63
63
|
|
64
|
-
/* Array of objects, each has 're', a regular expression and 'handler', a
|
65
|
-
function for creating a date from something that matches the regular
|
66
|
-
expression. Handlers may throw errors if string is unparseable.
|
64
|
+
/* Array of objects, each has 're', a regular expression and 'handler', a
|
65
|
+
function for creating a date from something that matches the regular
|
66
|
+
expression. Handlers may throw errors if string is unparseable.
|
67
67
|
*/
|
68
68
|
var dateParsePatterns = [
|
69
69
|
// Today
|
70
70
|
{ re: /^tod/i,
|
71
|
-
handler: function() {
|
71
|
+
handler: function() {
|
72
72
|
return new Date();
|
73
|
-
}
|
73
|
+
}
|
74
74
|
},
|
75
75
|
// Tomorrow
|
76
76
|
{ re: /^tom/i,
|
77
77
|
handler: function() {
|
78
|
-
var d = new Date();
|
79
|
-
d.setDate(d.getDate() + 1);
|
78
|
+
var d = new Date();
|
79
|
+
d.setDate(d.getDate() + 1);
|
80
80
|
return d;
|
81
81
|
}
|
82
82
|
},
|
@@ -89,7 +89,7 @@ var dateParsePatterns = [
|
|
89
89
|
}
|
90
90
|
},
|
91
91
|
// 4th
|
92
|
-
{ re: /^(\d{1,2})(st|nd|rd|th)?$/i,
|
92
|
+
{ re: /^(\d{1,2})(st|nd|rd|th)?$/i,
|
93
93
|
handler: function(bits) {
|
94
94
|
var d = new Date();
|
95
95
|
d.setDate(parseInt(bits[1], 10));
|
@@ -97,7 +97,7 @@ var dateParsePatterns = [
|
|
97
97
|
}
|
98
98
|
},
|
99
99
|
// 4th Jan
|
100
|
-
{ re: /^(\d{1,2})(?:st|nd|rd|th)? (\w+)$/i,
|
100
|
+
{ re: /^(\d{1,2})(?:st|nd|rd|th)? (\w+)$/i,
|
101
101
|
handler: function(bits) {
|
102
102
|
var d = new Date();
|
103
103
|
d.setDate(parseInt(bits[1], 10));
|
@@ -116,7 +116,7 @@ var dateParsePatterns = [
|
|
116
116
|
}
|
117
117
|
},
|
118
118
|
// Jan 4th
|
119
|
-
{ re: /^(\w+) (\d{1,2})(?:st|nd|rd|th)?$/i,
|
119
|
+
{ re: /^(\w+) (\d{1,2})(?:st|nd|rd|th)?$/i,
|
120
120
|
handler: function(bits) {
|
121
121
|
var d = new Date();
|
122
122
|
d.setDate(parseInt(bits[2], 10));
|
@@ -209,7 +209,7 @@ function magicDate(input) {
|
|
209
209
|
var messagespan = input.id + 'Msg';
|
210
210
|
try {
|
211
211
|
var d = parseDateString(input.value);
|
212
|
-
input.value = d.getFullYear() + '-' + (fmt00(d.getMonth() + 1)) + '-' +
|
212
|
+
input.value = d.getFullYear() + '-' + (fmt00(d.getMonth() + 1)) + '-' +
|
213
213
|
fmt00(d.getDate());
|
214
214
|
input.className = '';
|
215
215
|
// Human readable date
|
@@ -1,12 +1,12 @@
|
|
1
1
|
/* document.getElementsBySelector(selector)
|
2
2
|
- returns an array of element objects from the current document
|
3
|
-
matching the CSS selector. Selectors can contain element names,
|
3
|
+
matching the CSS selector. Selectors can contain element names,
|
4
4
|
class names and ids and can be nested. For example:
|
5
|
-
|
5
|
+
|
6
6
|
elements = document.getElementsBySelect('div#main p a.external')
|
7
|
-
|
8
|
-
Will return an array of all 'a' elements with 'external' in their
|
9
|
-
class attribute that are contained inside 'p' elements that are
|
7
|
+
|
8
|
+
Will return an array of all 'a' elements with 'external' in their
|
9
|
+
class attribute that are contained inside 'p' elements that are
|
10
10
|
contained inside the 'div' element which has id="main"
|
11
11
|
|
12
12
|
New in version 0.4: Support for CSS2 and CSS3 attribute selectors:
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
Version 0.4 - Simon Willison, March 25th 2003
|
16
16
|
-- Works in Phoenix 0.5, Mozilla 1.3, Opera 7, Internet Explorer 6, Internet Explorer 5 on Windows
|
17
|
-
-- Opera 7 fails
|
17
|
+
-- Opera 7 fails
|
18
18
|
*/
|
19
19
|
|
20
20
|
function getAllChildren(e) {
|
@@ -112,7 +112,7 @@ document.getElementsBySelector = function(selector) {
|
|
112
112
|
case '=': // Equality
|
113
113
|
checkFunction = function(e) { return (e.getAttribute(attrName) == attrValue); };
|
114
114
|
break;
|
115
|
-
case '~': // Match one of space seperated words
|
115
|
+
case '~': // Match one of space seperated words
|
116
116
|
checkFunction = function(e) { return (e.getAttribute(attrName).match(new RegExp('\\b'+attrValue+'\\b'))); };
|
117
117
|
break;
|
118
118
|
case '|': // Match start with value followed by optional hyphen
|
@@ -156,12 +156,12 @@ document.getElementsBySelector = function(selector) {
|
|
156
156
|
return currentContext;
|
157
157
|
}
|
158
158
|
|
159
|
-
/* That revolting regular expression explained
|
159
|
+
/* That revolting regular expression explained
|
160
160
|
/^(\w+)\[(\w+)([=~\|\^\$\*]?)=?"?([^\]"]*)"?\]$/
|
161
161
|
\---/ \---/\-------------/ \-------/
|
162
162
|
| | | |
|
163
163
|
| | | The value
|
164
164
|
| | ~,|,^,$,* or =
|
165
|
-
| Attribute
|
165
|
+
| Attribute
|
166
166
|
Tag
|
167
167
|
*/
|
@@ -57,10 +57,10 @@ p img, h1 img, h2 img, h3 img, h4 img, td img { vertical-align:middle; }
|
|
57
57
|
table { border-collapse:collapse; border-color:#ccc; }
|
58
58
|
td, th { font-size:11px; line-height:13px; border-bottom:1px solid #eee; vertical-align:top; padding:5px; font-family:"Lucida Grande", Verdana, Arial, sans-serif; }
|
59
59
|
th { text-align:left; font-size:12px; font-weight:bold; }
|
60
|
-
thead th,
|
60
|
+
thead th,
|
61
61
|
tfoot td { color:#666; padding:2px 5px; font-size:11px; background:#e1e1e1 url(../images/nav-bg.gif) top left repeat-x; border-left:1px solid #ddd; border-bottom:1px solid #ddd; }
|
62
62
|
tfoot td { border-bottom:none; border-top:1px solid #ddd; }
|
63
|
-
thead th:first-child,
|
63
|
+
thead th:first-child,
|
64
64
|
tfoot td:first-child { border-left:none !important; }
|
65
65
|
thead th.optional { font-weight:normal !important; }
|
66
66
|
fieldset table { border-right:1px solid #eee; }
|
data/spec/requests/main_spec.rb
CHANGED
@@ -18,7 +18,7 @@ end
|
|
18
18
|
given "three teams exist" do
|
19
19
|
@teams = []
|
20
20
|
3.times do |i|
|
21
|
-
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i + 1}", :manager => "Manager #{i + 1}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => "%.3f" % (wins.to_f / 162))
|
21
|
+
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i + 1}", :manager => "Manager #{i + 1}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => ("%.3f" % (wins.to_f / 162)).to_f)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -31,7 +31,7 @@ given "a player exists and three teams exist" do
|
|
31
31
|
@player = MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 1, :name => "Player 1")
|
32
32
|
@teams = []
|
33
33
|
3.times do |i|
|
34
|
-
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i + 1}", :manager => "Manager #{i + 1}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => "%.3f" % (wins.to_f / 162))
|
34
|
+
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i + 1}", :manager => "Manager #{i + 1}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => ("%.3f" % (wins.to_f / 162)).to_f)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -39,7 +39,7 @@ given "a league exists and three teams exist" do
|
|
39
39
|
@league = League.create(:name => "League 1")
|
40
40
|
@teams = []
|
41
41
|
3.times do |i|
|
42
|
-
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i + 1}", :manager => "Manager #{i + 1}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => "%.3f" % (wins.to_f / 162))
|
42
|
+
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i + 1}", :manager => "Manager #{i + 1}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => ("%.3f" % (wins.to_f / 162)).to_f)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|