wackamole 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -1
- data/README.rdoc +12 -3
- data/bin/wackamole +2 -2
- data/data/fixtures.rb +132 -0
- data/features/env.rb +29 -0
- data/features/mission.feature +10 -0
- data/features/step_definitions/mission_steps.rb +5 -0
- data/lib/app.rb +23 -7
- data/lib/controllers/features.rb +3 -2
- data/lib/controllers/logs.rb +1 -0
- data/lib/controllers/mission.rb +14 -4
- data/lib/controllers/session.rb +32 -0
- data/lib/controllers/users.rb +3 -2
- data/lib/helpers/flash_helper.rb +4 -1
- data/lib/helpers/logs_helper.rb +2 -1
- data/lib/helpers/session_helper.rb +29 -0
- data/lib/wackamole.rb +1 -1
- data/lib/wackamole/models/control.rb +15 -1
- data/lib/wackamole/models/feature.rb +11 -2
- data/lib/wackamole/models/log.rb +1 -0
- data/lib/wackamole/models/mission.rb +9 -7
- data/lib/wackamole/models/mole_info.rb +8 -4
- data/lib/wackamole/models/search_filter.rb +48 -15
- data/lib/wackamole/models/user.rb +12 -1
- data/public/stylesheets/wackamole.css +60 -3
- data/spec/config/bogus_test.yml +1 -1
- data/spec/config/test.yml +1 -1
- data/spec/spec_helper.rb +3 -0
- data/spec/ui/log_spec.rb +68 -0
- data/spec/ui/mission_spec.rb +64 -0
- data/spec/ui/session_spec.rb +39 -0
- data/spec/ui_utils/mission_util.rb +41 -0
- data/spec/{models → wackamole/models}/control_spec.rb +21 -21
- data/spec/{models → wackamole/models}/feature_spec.rb +7 -7
- data/spec/{models → wackamole/models}/log_spec.rb +5 -5
- data/spec/{models → wackamole/models}/mission_spec.rb +11 -7
- data/spec/wackamole/models/moled_info_spec.rb +36 -0
- data/spec/{models → wackamole/models}/search_filter_spec.rb +12 -16
- data/spec/{models → wackamole/models}/user_spec.rb +5 -5
- data/spec/{wackamole_spec.rb → wackamole/wackamole_spec.rb} +2 -2
- data/tasks/fixtures.rake +3 -1
- data/tasks/setup.rb +2 -1
- data/tasks/spec.rake +17 -3
- data/views/dashboard/_report.erb +3 -3
- data/views/layout.erb +44 -11
- data/views/logs/show.erb +3 -0
- data/views/mission/_report.erb +2 -2
- data/views/session/login.erb +28 -0
- data/views/shared/_search.erb +1 -1
- data/views/users/index.js.erb +1 -1
- metadata +22 -10
- data/spec/models/moled_info_spec.rb +0 -30
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. spec_helper])
|
2
|
+
require 'capybara'
|
3
|
+
require 'capybara/dsl'
|
4
|
+
require File.join(File.dirname(__FILE__), %w[.. ui_utils mission_util])
|
5
|
+
|
6
|
+
include Capybara
|
7
|
+
include MissionUtil
|
8
|
+
|
9
|
+
describe 'Sessions' do
|
10
|
+
before( :all ) do
|
11
|
+
Capybara.default_driver = :selenium
|
12
|
+
@url = "http://localhost:4567/"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should login correctly" do
|
16
|
+
visit( @url )
|
17
|
+
login( @url, 'admin', 'admin', @url + 'mission' )
|
18
|
+
log_out
|
19
|
+
# within( "//form[@id='login']" ) do
|
20
|
+
# fill_in 'Login' , :with => 'admin'
|
21
|
+
# fill_in 'Password', :with => 'admin'
|
22
|
+
# end
|
23
|
+
# click_button 'Log In'
|
24
|
+
# current_url.should == @url + "mission"
|
25
|
+
# click_link 'log out'
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should complain for invalid credentials" do
|
29
|
+
visit( @url )
|
30
|
+
login( @url, 'fernand', 'oh dear', @url )
|
31
|
+
# within( "//form[@id='login']" ) do
|
32
|
+
# fill_in 'Login' , :with => 'fernand'
|
33
|
+
# fill_in 'Password', :with => 'fuck'
|
34
|
+
# end
|
35
|
+
# click_button 'Log In'
|
36
|
+
# current_url.should == @url
|
37
|
+
page.should have_css( 'div.flash_error' )
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module MissionUtil
|
2
|
+
|
3
|
+
def check_app( row, app, env, to_date, today, last_tick )
|
4
|
+
cells = row.all( :css, 'td' )
|
5
|
+
|
6
|
+
cells[0].text.should == app
|
7
|
+
cells[1].text.should == env
|
8
|
+
|
9
|
+
to_date_indexes = [4,6,8]
|
10
|
+
to_date_indexes.each_index { |i| cells[to_date_indexes[i]].text.should == to_date[i].to_s }
|
11
|
+
|
12
|
+
today_indexes = [11,13,15]
|
13
|
+
today_indexes.each_index { |i| cells[today_indexes[i]].text.should == today[i].to_s }
|
14
|
+
|
15
|
+
last_tick_indexes = [18,20,22]
|
16
|
+
last_tick_indexes.each_index { |i| cells[last_tick_indexes[i]].text.should == last_tick[i].to_s }
|
17
|
+
end
|
18
|
+
|
19
|
+
def show_logs( row, app, env, type )
|
20
|
+
row.find( :css, "a##{app}_#{env}_#{type}" ).click
|
21
|
+
end
|
22
|
+
|
23
|
+
def nav_mission
|
24
|
+
page.find_link( 'mission control' ).click
|
25
|
+
end
|
26
|
+
|
27
|
+
def login( url, username, password, expected_url )
|
28
|
+
visit( url )
|
29
|
+
within( "//form[@id='login']" ) do
|
30
|
+
fill_in 'Login' , :with => username
|
31
|
+
fill_in 'Password', :with => password
|
32
|
+
end
|
33
|
+
click_button 'Log In'
|
34
|
+
current_url.should == expected_url
|
35
|
+
end
|
36
|
+
|
37
|
+
def log_out
|
38
|
+
click_link 'log out'
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), %w[.. spec_helper])
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
2
|
|
3
3
|
describe Wackamole::Control do
|
4
4
|
describe 'errors' do
|
@@ -11,21 +11,21 @@ describe Wackamole::Control do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should raise an error if invalid config file" do
|
14
|
-
config_file = File.join(File.dirname(__FILE__), %w[.. config blee.yml])
|
14
|
+
config_file = File.join(File.dirname(__FILE__), %w[.. .. config blee.yml])
|
15
15
|
lambda {
|
16
16
|
Wackamole::Control.init_config( config_file, 'test' )
|
17
17
|
}.should raise_error( /Hoy! An error occur loading the config file `#{config_file} -- No such file or directory/ )
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should raise an error if a bogus env is requested" do
|
21
|
-
config_file = File.join(File.dirname(__FILE__), %w[.. config test.yml])
|
21
|
+
config_file = File.join(File.dirname(__FILE__), %w[.. .. config test.yml])
|
22
22
|
lambda {
|
23
23
|
Wackamole::Control.init_config( config_file, 'production' )
|
24
24
|
}.should raise_error( /Hoy! An error occur loading the config file `#{config_file} -- Invalid environment `production/ )
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should raise an error if invalid config file content" do
|
28
|
-
config_file = File.join(File.dirname(__FILE__), %w[.. config bogus_test.yml])
|
28
|
+
config_file = File.join(File.dirname(__FILE__), %w[.. .. config bogus_test.yml])
|
29
29
|
lambda {
|
30
30
|
Wackamole::Control.init_config( config_file, 'test' )
|
31
31
|
}.should raise_error( /Hoy! An error occur loading the config file `#{config_file} -- Unable to find host in -/ )
|
@@ -35,19 +35,19 @@ describe Wackamole::Control do
|
|
35
35
|
describe 'connection' do
|
36
36
|
before :all do
|
37
37
|
Wackamole::Control.reset!
|
38
|
-
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. config test.yml]), 'test' )
|
38
|
+
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. .. config test.yml]), 'test' )
|
39
39
|
Wackamole::Control.connection.should_not be_nil
|
40
40
|
end
|
41
41
|
|
42
42
|
describe "#collection" do
|
43
43
|
it "should find a collection correctly" do
|
44
|
-
cltn = Wackamole::Control.collection( 'features', "
|
45
|
-
cltn.count.should ==
|
46
|
-
feature = cltn.find_one()
|
47
|
-
feature['app'].should == "
|
48
|
-
feature['env'].should == "
|
49
|
-
feature['did'].should ==
|
50
|
-
feature['ctx'].should match(
|
44
|
+
cltn = Wackamole::Control.collection( 'features', "mole_app1_test_mdb" )
|
45
|
+
cltn.count.should == 6
|
46
|
+
feature = cltn.find_one()
|
47
|
+
feature['app'].should == "app1"
|
48
|
+
feature['env'].should == "test"
|
49
|
+
feature['did'].should == Time.now.utc.to_date_id.to_s
|
50
|
+
feature['ctx'].should match( /\// )
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
@@ -55,7 +55,7 @@ describe Wackamole::Control do
|
|
55
55
|
it "should correctly identify mole dbs" do
|
56
56
|
# gen_bogus_dbs
|
57
57
|
mole_dbs = Wackamole::Control.mole_databases
|
58
|
-
mole_dbs.should have(
|
58
|
+
mole_dbs.should have(2).items
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should extra app/env correctly" do
|
@@ -69,20 +69,20 @@ describe Wackamole::Control do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should connect to a mole databases correctly" do
|
72
|
-
%w[
|
73
|
-
Wackamole::Control.db( "
|
72
|
+
%w[app1 app2].each do |app|
|
73
|
+
Wackamole::Control.db( "mole_#{app}_test_mdb" )
|
74
74
|
feature = Wackamole::Control.collection( 'features' ).find_one()
|
75
|
-
feature['app'].should ==
|
76
|
-
feature['env'].should ==
|
75
|
+
feature['app'].should == app
|
76
|
+
feature['env'].should == "test"
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
80
|
it "should switch mole dbs correctly" do
|
81
|
-
%w[
|
82
|
-
Wackamole::Control.switch_mole_db!( "
|
81
|
+
%w[app1 app2].each do |app|
|
82
|
+
Wackamole::Control.switch_mole_db!( app, "test" )
|
83
83
|
feature = Wackamole::Control.collection( 'features' ).find_one()
|
84
|
-
feature['app'].should ==
|
85
|
-
feature['env'].should ==
|
84
|
+
feature['app'].should == app
|
85
|
+
feature['env'].should == "test"
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
@@ -1,26 +1,26 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), %w[.. spec_helper])
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
2
|
require 'chronic'
|
3
3
|
|
4
4
|
describe Wackamole::Feature do
|
5
5
|
before( :all ) do
|
6
|
-
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. config test.yml]), 'test' )
|
6
|
+
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. .. config test.yml]), 'test' )
|
7
7
|
Wackamole::Control.connection.should_not be_nil
|
8
|
-
Wackamole::Control.db( "
|
8
|
+
Wackamole::Control.db( "mole_app1_test_mdb" )
|
9
9
|
end
|
10
10
|
|
11
11
|
it "retrieve an app info correctly" do
|
12
12
|
app_info = Wackamole::Feature.get_app_info
|
13
13
|
app_info.should_not be_nil
|
14
14
|
app_info.should have(2).items
|
15
|
-
app_info[:app_name].should == "
|
15
|
+
app_info[:app_name].should == "app1"
|
16
16
|
app_info[:stage].should == "test"
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should paginate features correctly" do
|
20
20
|
cltn = Wackamole::Feature.paginate_tops( {}, 1, 5 )
|
21
|
-
cltn.total_entries.should ==
|
22
|
-
cltn.size.should
|
23
|
-
cltn.total_pages.should
|
21
|
+
cltn.total_entries.should == 6
|
22
|
+
cltn.size.should == 5
|
23
|
+
cltn.total_pages.should == 2
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "indexes" do
|
@@ -1,18 +1,18 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), %w[.. spec_helper])
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
2
|
require 'chronic'
|
3
3
|
|
4
4
|
describe Wackamole::Log do
|
5
5
|
before( :all ) do
|
6
|
-
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. config test.yml]), 'test' )
|
6
|
+
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. .. config test.yml]), 'test' )
|
7
7
|
Wackamole::Control.connection.should_not be_nil
|
8
|
-
Wackamole::Control.db( "
|
8
|
+
Wackamole::Control.db( "mole_app1_test_mdb" )
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should paginate logs correctly" do
|
12
12
|
cltn = Wackamole::Log.paginate( {}, 1, 5 )
|
13
|
-
cltn.total_entries.should ==
|
13
|
+
cltn.total_entries.should == 15
|
14
14
|
cltn.size.should == 5
|
15
|
-
cltn.total_pages.should ==
|
15
|
+
cltn.total_pages.should == 3
|
16
16
|
end
|
17
17
|
|
18
18
|
describe "indexes" do
|
@@ -1,12 +1,14 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), %w[.. spec_helper])
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
2
|
require 'chronic'
|
3
3
|
|
4
4
|
describe Wackamole::Mission do
|
5
5
|
before :all do
|
6
6
|
Wackamole::Control.reset!
|
7
|
-
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. config test.yml]), 'test' )
|
7
|
+
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. .. config test.yml]), 'test' )
|
8
8
|
Wackamole::Control.connection.should_not be_nil
|
9
|
-
|
9
|
+
now = Time.now
|
10
|
+
@test_time = Chronic.parse( "%d/%2d/%2d 17:00:00" % [now.year,now.month,now.day] )
|
11
|
+
# @test_time = Chronic.parse( "2010/01/01 01:00:00" ).utc
|
10
12
|
end
|
11
13
|
|
12
14
|
describe '#to_type_name' do
|
@@ -30,16 +32,18 @@ describe Wackamole::Mission do
|
|
30
32
|
pulse[:to_date].should_not be_nil
|
31
33
|
pulse[:today].should_not be_nil
|
32
34
|
pulse[:last_tick].should_not be_nil
|
35
|
+
expected = {'to_date' => [7,5,3], 'today' => [6,4,2] }
|
33
36
|
%w(to_date today).each do |p|
|
34
|
-
%w(
|
37
|
+
%w(app1 app2).each do |app|
|
35
38
|
[0, 1, 2].each do |type|
|
36
|
-
pulse[p.to_sym]["
|
39
|
+
pulse[p.to_sym][app]["test"][type].should == expected[p][type]
|
37
40
|
end
|
38
41
|
end
|
39
42
|
end
|
40
|
-
%w(
|
43
|
+
%w(app1 app2).each do |app|
|
44
|
+
expected = [3,2,1]
|
41
45
|
[0, 1, 2].each do |type|
|
42
|
-
pulse[:last_tick]["
|
46
|
+
pulse[:last_tick][app]["test"][type].should == expected[type]
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
|
+
require 'chronic'
|
3
|
+
|
4
|
+
describe Wackamole::MoledInfo do
|
5
|
+
before( :all ) do
|
6
|
+
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. .. config test.yml]), 'test' )
|
7
|
+
Wackamole::Control.connection.should_not be_nil
|
8
|
+
Wackamole::Control.db( "mole_app1_test_mdb" )
|
9
|
+
now = Time.now
|
10
|
+
@test_time = Chronic.parse( "%d/%2d/%2d 17:00:00" % [now.year,now.month,now.day] )
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should gather dashboard info correctly" do
|
14
|
+
info = Wackamole::MoledInfo.collect_dashboard_info( @test_time )
|
15
|
+
|
16
|
+
info[:total_users].should == 5
|
17
|
+
info[:user_load].should == 2
|
18
|
+
info[:total_features].should == 6
|
19
|
+
info[:feature_load].should == 1
|
20
|
+
info[:fault_load].should == 1
|
21
|
+
info[:perf_load].should == 2
|
22
|
+
|
23
|
+
info[:user_series].should == series_for( [[17,2]] )
|
24
|
+
info[:feature_series].should == series_for( [[17,2]] )
|
25
|
+
info[:fault_series].should == series_for( [[17,1]] )
|
26
|
+
info[:perf_series].should == series_for( [[17,2]] )
|
27
|
+
end
|
28
|
+
|
29
|
+
def series_for( slots )
|
30
|
+
series = 24.times.collect { |i| 0 }
|
31
|
+
slots.each do |pair|
|
32
|
+
series[pair.first] = pair.last
|
33
|
+
end
|
34
|
+
series
|
35
|
+
end
|
36
|
+
end
|
@@ -1,8 +1,10 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), %w[.. spec_helper])
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
2
|
|
3
3
|
describe Wackamole::SearchFilter do
|
4
4
|
before( :each ) do
|
5
|
-
@filter
|
5
|
+
@filter = Wackamole::SearchFilter.new
|
6
|
+
now = Time.now
|
7
|
+
@test_time = Chronic.parse( "%d/%2d/%2d 17:00:00" % [now.year,now.month,now.day] )
|
6
8
|
end
|
7
9
|
|
8
10
|
it "should initialize with the correct defaults" do
|
@@ -64,8 +66,8 @@ describe Wackamole::SearchFilter do
|
|
64
66
|
it "should spews default filter query conds correctly" do
|
65
67
|
conds = @filter.to_conds
|
66
68
|
conds.should have(1).item
|
67
|
-
conds.key?(
|
68
|
-
conds[
|
69
|
+
conds.key?( '$where' ).should == true
|
70
|
+
conds['$where'].should == "((this.did == '#{@test_time.to_date_id}' && this.tid >= '070001') || ( this.did == '#{(@test_time+24*60*60).to_date_id}' && this.tid <= '065959') )"
|
69
71
|
end
|
70
72
|
|
71
73
|
it "should include browser if specified correctly" do
|
@@ -73,8 +75,6 @@ describe Wackamole::SearchFilter do
|
|
73
75
|
conds = @filter.to_conds
|
74
76
|
time = Chronic.parse( "now" ).utc
|
75
77
|
conds.should have(2).items
|
76
|
-
conds.key?( :did ).should == true
|
77
|
-
conds[:did].should == { "$gte" => @now.to_date_id.to_s }
|
78
78
|
conds['bro.name'].should == "Safari"
|
79
79
|
end
|
80
80
|
|
@@ -84,8 +84,6 @@ describe Wackamole::SearchFilter do
|
|
84
84
|
conds = @filter.to_conds
|
85
85
|
time = Chronic.parse( "now" ).utc
|
86
86
|
conds.should have(3).items
|
87
|
-
conds.key?( :did ).should == true
|
88
|
-
conds[:did].should == { "$gte" => @now.to_date_id.to_s }
|
89
87
|
conds['bro.name'].should == "Safari"
|
90
88
|
conds[:typ].should == Rackamole.feature
|
91
89
|
end
|
@@ -95,32 +93,30 @@ describe Wackamole::SearchFilter do
|
|
95
93
|
conds = @filter.to_conds
|
96
94
|
time = Chronic.parse( "now" ).utc
|
97
95
|
conds.should have(2).items
|
98
|
-
conds.key?( :did ).should == true
|
99
|
-
conds[:did].should == { "$gte" => @now.to_date_id.to_s }
|
100
96
|
conds[:fid].should == Mongo::ObjectID.from_string( "4b25b0049983a8a193000010" )
|
101
97
|
end
|
102
98
|
|
103
99
|
describe "search terms" do
|
104
100
|
before( :all ) do
|
105
|
-
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. config test.yml]), 'test' )
|
101
|
+
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. .. config test.yml]), 'test' )
|
106
102
|
Wackamole::Control.connection.should_not be_nil
|
107
|
-
Wackamole::Control.db( "
|
103
|
+
Wackamole::Control.db( "mole_app1_test_mdb" )
|
108
104
|
end
|
109
105
|
|
110
106
|
it "should retrieve features correctly" do
|
111
107
|
features = @filter.features
|
112
|
-
features.should have(
|
108
|
+
features.should have(7).items
|
113
109
|
count = 0
|
110
|
+
expected = %w(All / /error /normal /params/10 /post /slow)
|
114
111
|
features.each do |f|
|
115
112
|
f.should have(2).items
|
116
|
-
f.first.should ==
|
117
|
-
f.first.should == "feature_#{count-1}" if count > 0
|
113
|
+
f.first.should == expected[count]
|
118
114
|
count += 1
|
119
115
|
end
|
120
116
|
end
|
121
117
|
|
122
118
|
it "should include user if specified" do
|
123
|
-
@filter.search_terms = "user:
|
119
|
+
@filter.search_terms = "user:fernand"
|
124
120
|
conds = @filter.to_conds
|
125
121
|
conds.should have(2).items
|
126
122
|
conds[:uid].should_not be_nil
|
@@ -1,18 +1,18 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), %w[.. spec_helper])
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
|
2
2
|
require 'chronic'
|
3
3
|
|
4
4
|
describe Wackamole::User do
|
5
5
|
before( :all ) do
|
6
|
-
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. config test.yml]), 'test' )
|
6
|
+
Wackamole::Control.init_config( File.join(File.dirname(__FILE__), %w[.. .. config test.yml]), 'test' )
|
7
7
|
Wackamole::Control.connection.should_not be_nil
|
8
|
-
Wackamole::Control.db( "
|
8
|
+
Wackamole::Control.db( "mole_app1_test_mdb" )
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should paginate a user collection correctly" do
|
12
12
|
cltn = Wackamole::User.paginate_tops( {}, 1, 2 )
|
13
|
-
cltn.total_entries.should ==
|
13
|
+
cltn.total_entries.should == 2
|
14
14
|
cltn.size.should == 2
|
15
|
-
cltn.total_pages.should ==
|
15
|
+
cltn.total_pages.should == 1
|
16
16
|
end
|
17
17
|
|
18
18
|
describe "indexes" do
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), %w[spec_helper])
|
1
|
+
require File.join(File.dirname(__FILE__), %w[.. spec_helper])
|
2
2
|
|
3
3
|
describe Wackamole do
|
4
4
|
before( :all ) do
|
5
|
-
@root = ::File.expand_path( ::File.join(::File.dirname(__FILE__),
|
5
|
+
@root = ::File.expand_path( ::File.join(::File.dirname(__FILE__), %w(.. ..) ) )
|
6
6
|
end
|
7
7
|
|
8
8
|
it "is versioned" do
|
data/tasks/fixtures.rake
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'data/fixtures'
|
2
|
+
|
1
3
|
namespace :fixtures do
|
2
4
|
|
3
5
|
# A prerequisites task that all other tasks depend upon
|
@@ -5,7 +7,7 @@ namespace :fixtures do
|
|
5
7
|
|
6
8
|
desc 'Populate fixture data'
|
7
9
|
task :load do |t|
|
8
|
-
Fixtures.
|
10
|
+
Fixtures.new.populate
|
9
11
|
end
|
10
12
|
|
11
13
|
# task 'gem:release' => 'svn:create_tag'
|
data/tasks/setup.rb
CHANGED