rugalytics 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v0.0.7. consolidated on US English spelling of pageviews for method names
2
+
1
3
  v0.0.6. fixed report date parsing bug reported by masolino
2
4
 
3
5
  v0.0.5. report names are now methods that can be called on profile, load_report is deprecated
data/README CHANGED
@@ -18,24 +18,6 @@ Should be up at rubyforge, so to install:
18
18
  sudo gem install rugalytics
19
19
 
20
20
 
21
- == Changes in v0.0.5
22
-
23
- The load_report method has been deprecated, instead call the report name as
24
- a method, for example:
25
-
26
- # Instead of this
27
- report = profile.load_report('Pageviews', :from => '2007-01-01')
28
-
29
- # Do this
30
- report = profile.pageviews_report(:from => '2007-01-01')
31
-
32
- # Instead of this
33
- report = profile.load_report('TrafficSources')
34
-
35
- # Do this
36
- report = profile.traffic_sources_report
37
-
38
-
39
21
  == Authenticate
40
22
 
41
23
  Login with your Google Analytics user name and password:
@@ -58,6 +40,14 @@ If account name and profile name are the same:
58
40
  profile = Rugalytics.find_profile('your_site.com')
59
41
 
60
42
 
43
+ == Change Language Settings to English
44
+
45
+ At present your language setting for your Google Analytics account
46
+ must be set to English for Rugalytics to work.
47
+
48
+ Google: Settings -> Language: choose UK English or US English
49
+
50
+
61
51
  == Get Profile Summary Statistics
62
52
 
63
53
  Obtaining page views:
@@ -73,15 +63,24 @@ Obtaining page views:
73
63
 
74
64
  The +pageviews+ method is doing this under the hood:
75
65
 
76
- report = profile.pageviews_report(:from=>'2007-01-01', :to=>'2007-01-02')
66
+ report = profile.pageviews_report :from=>'2007-01-01', :to=>'2007-01-02'
77
67
 
78
- report.page_views_total
79
- => 24980
68
+ report.pageviews_total
69
+ => 16600
80
70
 
81
- And under the hood, the +page_views_total+ method is actually calling:
71
+ Using the report you can get +pageviews_by_day+:
72
+
73
+ report.pageviews_by_day
74
+ => [[Mon, 01 Jan 2007, 8200], [Tue, 02 Jan 2007, 8400]]
75
+
76
+ In the report, there is a +pageviews_graph+ containing the points:
77
+
78
+ report.pageviews_graph.sum_of_points
79
+ => 16600
80
+
81
+ report.pageviews_graph.points_by_day
82
+ => [[Mon, 01 Jan 2007, 8200], [Tue, 02 Jan 2007, 8400]]
82
83
 
83
- report.page_views_graph.sum_of_points
84
- => 24980
85
84
 
86
85
  == Load a Report
87
86
 
@@ -156,7 +155,7 @@ automatically, e.g.:
156
155
 
157
156
  profile = Rugalytics.default_profile
158
157
  report = profile.top_content_report(:from=>(Date.today - 7) )
159
- top_items_over_week = report.items.sort_by{|i| i.unique_page_views.to_i}.reverse
158
+ top_items_over_week = report.items.sort_by{|i| i.unique_pageviews.to_i}.reverse
160
159
 
161
160
 
162
161
  ==Acknowledgements
data/README.rdoc CHANGED
@@ -18,24 +18,6 @@ Should be up at rubyforge, so to install:
18
18
  sudo gem install rugalytics
19
19
 
20
20
 
21
- == Changes in v0.0.5
22
-
23
- The load_report method has been deprecated, instead call the report name as
24
- a method, for example:
25
-
26
- # Instead of this
27
- report = profile.load_report('Pageviews', :from => '2007-01-01')
28
-
29
- # Do this
30
- report = profile.pageviews_report(:from => '2007-01-01')
31
-
32
- # Instead of this
33
- report = profile.load_report('TrafficSources')
34
-
35
- # Do this
36
- report = profile.traffic_sources_report
37
-
38
-
39
21
  == Authenticate
40
22
 
41
23
  Login with your Google Analytics user name and password:
@@ -58,6 +40,14 @@ If account name and profile name are the same:
58
40
  profile = Rugalytics.find_profile('your_site.com')
59
41
 
60
42
 
43
+ == Change Language Settings to English
44
+
45
+ At present your language setting for your Google Analytics account
46
+ must be set to English for Rugalytics to work.
47
+
48
+ Google: Settings -> Language: choose UK English or US English
49
+
50
+
61
51
  == Get Profile Summary Statistics
62
52
 
63
53
  Obtaining page views:
@@ -73,15 +63,24 @@ Obtaining page views:
73
63
 
74
64
  The +pageviews+ method is doing this under the hood:
75
65
 
76
- report = profile.pageviews_report(:from=>'2007-01-01', :to=>'2007-01-02')
66
+ report = profile.pageviews_report :from=>'2007-01-01', :to=>'2007-01-02'
77
67
 
78
- report.page_views_total
79
- => 24980
68
+ report.pageviews_total
69
+ => 16600
80
70
 
81
- And under the hood, the +page_views_total+ method is actually calling:
71
+ Using the report you can get +pageviews_by_day+:
72
+
73
+ report.pageviews_by_day
74
+ => [[Mon, 01 Jan 2007, 8200], [Tue, 02 Jan 2007, 8400]]
75
+
76
+ In the report, there is a +pageviews_graph+ containing the points:
77
+
78
+ report.pageviews_graph.sum_of_points
79
+ => 16600
80
+
81
+ report.pageviews_graph.points_by_day
82
+ => [[Mon, 01 Jan 2007, 8200], [Tue, 02 Jan 2007, 8400]]
82
83
 
83
- report.page_views_graph.sum_of_points
84
- => 24980
85
84
 
86
85
  == Load a Report
87
86
 
@@ -156,7 +155,7 @@ automatically, e.g.:
156
155
 
157
156
  profile = Rugalytics.default_profile
158
157
  report = profile.top_content_report(:from=>(Date.today - 7) )
159
- top_items_over_week = report.items.sort_by{|i| i.unique_page_views.to_i}.reverse
158
+ top_items_over_week = report.items.sort_by{|i| i.unique_pageviews.to_i}.reverse
160
159
 
161
160
 
162
161
  ==Acknowledgements
@@ -25,8 +25,8 @@ module Rugalytics
25
25
 
26
26
  def with_dates_from_period period, list
27
27
  dates = period.split('-')
28
- from = Date.parse(dates[0].strip)
29
- to = Date.parse(dates[1].strip)
28
+ from = Date.i18n_parse(dates[0].strip)
29
+ to = Date.i18n_parse(dates[1].strip)
30
30
 
31
31
  index = 0
32
32
  from.upto(to) do |date|
@@ -8,6 +8,7 @@ module Rugalytics
8
8
  attribute.sub!('$','dollar')
9
9
  attribute.sub!('/',' per ')
10
10
  attribute.sub!('.',' ')
11
+ attribute.sub!(/page views/i,'pageviews')
11
12
  value = values[index]
12
13
  morph(attribute, value)
13
14
  end
@@ -77,11 +77,11 @@ module Rugalytics
77
77
  end
78
78
 
79
79
  def pageviews(options={})
80
- pageviews_report(options).page_views_total
80
+ pageviews_report(options).pageviews_total
81
81
  end
82
82
 
83
83
  def pageviews_by_day(options={})
84
- pageviews_report(options).page_views_by_day
84
+ pageviews_report(options).pageviews_by_day
85
85
  end
86
86
 
87
87
  def visits(options={})
@@ -19,7 +19,6 @@ module Rugalytics
19
19
  end
20
20
 
21
21
  def method_missing symbol, *args
22
-
23
22
  if is_writer = symbol.to_s[/=$/]
24
23
  morph_method_missing(symbol, *args)
25
24
 
@@ -43,16 +42,8 @@ module Rugalytics
43
42
  @base_url = lines[1]
44
43
  @report_name = lines[2].chomp(',')
45
44
  dates = lines[3].include?('","') ? lines[3].split('","') : lines[3].split(',')
46
- @start_date = parse_date(dates[0])
47
- @end_date = parse_date(dates[1])
48
- end
49
-
50
- def parse_date text
51
- begin
52
- Date.parse(text)
53
- rescue Exception => e
54
- raise "#{e}: #{text}"
55
- end
45
+ @start_date = Date.i18n_parse(dates[0])
46
+ @end_date = Date.i18n_parse(dates[1])
56
47
  end
57
48
 
58
49
  def handle_graphs lines
@@ -75,7 +66,7 @@ module Rugalytics
75
66
  end
76
67
 
77
68
  graph = Graph.new name, graph_period, points, start_date, end_date
78
- morph("#{name} graph", graph)
69
+ morph("#{name.sub(/page views/i,'pageviews')} graph", graph)
79
70
  end
80
71
  end
81
72
 
data/lib/rugalytics.rb CHANGED
@@ -11,7 +11,7 @@ require 'yaml'
11
11
 
12
12
  # See README for usage documentation.
13
13
  module Rugalytics
14
- VERSION = "0.0.6"
14
+ VERSION = "0.0.7"
15
15
 
16
16
  FORMAT_PDF = '0' unless defined? FORMAT_PDF
17
17
  FORMAT_XML = '1' unless defined? FORMAT_XML
@@ -81,5 +81,6 @@ require File.dirname(__FILE__) + '/rugalytics/profile'
81
81
  require File.dirname(__FILE__) + '/rugalytics/report'
82
82
  require File.dirname(__FILE__) + '/rugalytics/item'
83
83
  require File.dirname(__FILE__) + '/rugalytics/graph'
84
+ require File.dirname(__FILE__) + '/rugalytics/date_extension'
84
85
 
85
86
  # Rugalytics.config_setup(RAILS_ROOT) if defined?(RAILS_ROOT) && RAILS_ROOT
data/rugalytics.gemspec CHANGED
@@ -1,18 +1,18 @@
1
1
 
2
- # Gem::Specification for Rugalytics-0.0.6
2
+ # Gem::Specification for Rugalytics-0.0.7
3
3
  # Originally generated by Echoe
4
4
 
5
5
  --- !ruby/object:Gem::Specification
6
6
  name: rugalytics
7
7
  version: !ruby/object:Gem::Version
8
- version: 0.0.6
8
+ version: 0.0.7
9
9
  platform: ruby
10
10
  authors:
11
11
  - Rob McKinnon
12
12
  autorequire:
13
13
  bindir: bin
14
14
 
15
- date: 2008-08-04 00:00:00 +01:00
15
+ date: 2008-08-05 00:00:00 +01:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
@@ -1,47 +1,59 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+ include Rugalytics
3
+
4
+ shared_examples_for "graph created correctly" do
5
+ def graph_correct_for report_start, report_end, expected_points
6
+ graph = Graph.new 'Page Views', @period, @points, report_start, report_end
7
+ graph.from.should == report_start
8
+ graph.to.should == report_end
9
+ graph.points.should == expected_points
10
+ graph
11
+ end
2
12
 
3
- describe Rugalytics::Graph do
13
+ it "should set given points on graph" do
14
+ graph_correct_for Date.parse('2008-05-01'), Date.parse('2008-05-03'), @points
15
+ end
4
16
 
5
- describe 'when creating' do
17
+ it "should set appropriate point on graph when report start and end is the same date" do
18
+ graph_correct_for Date.parse('2008-05-01'), Date.parse('2008-05-01'), [@points[0]]
19
+ end
6
20
 
7
- before :all do
8
- @period = '1 May 2008 - 3 May 2008'
9
- @name = 'Page Views'
10
- @points = [5360, 3330, 4330]
11
- end
21
+ it "should set appropriate points on graph when report start and end is a subset of the graph period" do
22
+ graph_correct_for Date.parse('2008-05-02'), Date.parse('2008-05-03'), [@points[1],@points[2]]
23
+ end
12
24
 
13
- def graph_correct_for report_start, report_end, expected_points
14
- graph = Rugalytics::Graph.new @name, @period, @points, report_start, report_end
15
- graph.from.should == report_start
16
- graph.to.should == report_end
17
- graph.points.should == expected_points
18
- graph
19
- end
25
+ it 'should set points by day' do
26
+ from = Date.parse('1 May 2008')
27
+ to = Date.parse('3 May 2008')
28
+ mid = Date.parse('2 May 2008')
29
+ graph = graph_correct_for from, to, @points
30
+ graph.points_by_day.should == [[from,5360],[mid,3330],[to,4330]]
31
+ end
20
32
 
21
- it "should set given points on graph" do
22
- graph_correct_for Date.parse('2008-05-01'), Date.parse('2008-05-03'), @points
23
- end
33
+ it 'should return sum of points' do
34
+ graph = graph_correct_for Date.parse('2008-05-01'), Date.parse('2008-05-03'), @points
35
+ graph.sum_of_points.should == 5360 + 3330 + 4330
36
+ end
37
+ end
24
38
 
25
- it "should set appropriate point on graph when report start and end is the same date" do
26
- graph_correct_for Date.parse('2008-05-01'), Date.parse('2008-05-01'), [@points[0]]
27
- end
39
+ describe Graph do
28
40
 
29
- it "should set appropriate points on graph when report start and end is a subset of the graph period" do
30
- graph_correct_for Date.parse('2008-05-02'), Date.parse('2008-05-03'), [@points[1],@points[2]]
41
+ describe 'when creating with dates formatted Day Month Year' do
42
+ before :all do
43
+ @period = '1 May 2008 - 3 May 2008'
44
+ @points = [5360, 3330, 4330]
31
45
  end
32
46
 
33
- it 'should set points by day' do
34
- from = Date.parse('1 May 2008')
35
- to = Date.parse('3 May 2008')
36
- mid = Date.parse('2 May 2008')
37
- graph = graph_correct_for from, to, @points
38
- graph.points_by_day.should == [[from,5360],[mid,3330],[to,4330]]
39
- end
47
+ it_should_behave_like "graph created correctly"
48
+ end
40
49
 
41
- it 'should return sum of points' do
42
- graph = graph_correct_for Date.parse('2008-05-01'), Date.parse('2008-05-03'), @points
43
- graph.sum_of_points.should == 5360 + 3330 + 4330
50
+ describe 'when creating with dates formatted "Month Day, Year"' do
51
+ before :all do
52
+ @period = %Q|"May 1, 2008 - May 3, 2008"|
53
+ @points = [5360, 3330, 4330]
44
54
  end
55
+
56
+ it_should_behave_like "graph created correctly"
45
57
  end
46
58
 
47
59
  end
@@ -13,8 +13,8 @@ describe Rugalytics::Item, 'when creating' do
13
13
 
14
14
  item.url.should == 'http://theyworkforyou.co.nz/'
15
15
  item.path.should == '/'
16
- item.page_views.should == '189'
17
- item.unique_page_views.should == '157'
16
+ item.pageviews.should == '189'
17
+ item.unique_pageviews.should == '157'
18
18
  item.time_on_page.should == '54.94957983193277'
19
19
  item.bounce_rate.should == '0.4862385392189026'
20
20
  item.percentage_exit.should == '0.37037035822868347'
@@ -1,18 +1,19 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+ include Rugalytics
2
3
 
3
- describe Rugalytics::Profile do
4
+ describe Profile do
4
5
 
5
6
  describe "being initialized" do
6
7
  it "should accept :name as key" do
7
- profile = Rugalytics::Profile.new(:name => 'test', :profile_id => '12341234')
8
+ profile = Profile.new(:name => 'test', :profile_id => '12341234')
8
9
  profile.name.should == 'test'
9
10
  end
10
11
  it "should accept :account_id as key" do
11
- profile = Rugalytics::Profile.new(:account_id => '12341234', :profile_id => '12341234')
12
+ profile = Profile.new(:account_id => '12341234', :profile_id => '12341234')
12
13
  profile.account_id.should == '12341234'
13
14
  end
14
15
  it "should accept :profile_id as key" do
15
- profile = Rugalytics::Profile.new(:profile_id => '12341234')
16
+ profile = Profile.new(:profile_id => '12341234')
16
17
  profile.profile_id.should == '12341234'
17
18
  end
18
19
  end
@@ -24,33 +25,33 @@ describe Rugalytics::Profile do
24
25
  account = mock('account')
25
26
  profile = mock('profile')
26
27
 
27
- Rugalytics::Account.should_receive(:find).with(1254221).and_return account
28
+ Account.should_receive(:find).with(1254221).and_return account
28
29
  account.should_receive(:find_profile).with(profile_id).and_return profile
29
- Rugalytics::Profile.find(account_id, profile_id).should == profile
30
+ Profile.find(account_id, profile_id).should == profile
30
31
  end
31
32
  end
32
33
 
33
34
  describe 'finding pageviews' do
34
35
  before do
35
- @profile = Rugalytics::Profile.new :profile_id=>123
36
- @report = mock('report',:page_views_total=>100)
36
+ @profile = Profile.new :profile_id=>123
37
+ @report = mock('report',:pageviews_total=>100)
37
38
  end
38
39
  it 'should return total from loaded "Pageviews" report' do
39
40
  @profile.should_receive(:pageviews_report).with({}).and_return @report
40
- @profile.pageviews.should == @report.page_views_total
41
+ @profile.pageviews.should == @report.pageviews_total
41
42
  end
42
43
  describe 'when from and to dates are specified' do
43
44
  it 'should return total from "Pageviews" report for given dates' do
44
45
  options = {:from=>'2008-05-01', :to=>'2008-05-03'}
45
46
  @profile.should_receive(:pageviews_report).with(options).and_return @report
46
- @profile.pageviews(options).should == @report.page_views_total
47
+ @profile.pageviews(options).should == @report.pageviews_total
47
48
  end
48
49
  end
49
50
  end
50
51
 
51
52
  describe 'finding visits' do
52
53
  before do
53
- @profile = Rugalytics::Profile.new :profile_id=>123
54
+ @profile = Profile.new :profile_id=>123
54
55
  @report = mock('report', :visits_total=>100)
55
56
  end
56
57
  it 'should return total from loaded "Visits" report' do
@@ -68,7 +69,7 @@ describe Rugalytics::Profile do
68
69
 
69
70
  describe 'finding report when called with method ending in _report' do
70
71
  before do
71
- @profile = Rugalytics::Profile.new :profile_id=>123
72
+ @profile = Profile.new :profile_id=>123
72
73
  @report = mock('report', :visits_total=>100)
73
74
  end
74
75
  it 'should find report using create_report method' do
@@ -79,7 +80,7 @@ describe Rugalytics::Profile do
79
80
  csv = 'csv'
80
81
  @profile.should_receive(:get_report_csv).with({:report=>'Visits'}).and_return csv
81
82
  @report.stub!(:attribute_names).and_return ''
82
- Rugalytics::Report.should_receive(:new).with(csv).and_return @report
83
+ Report.should_receive(:new).with(csv).and_return @report
83
84
  @profile.visits_report.should == @report
84
85
  end
85
86
  describe 'when report name is two words' do
@@ -99,8 +100,8 @@ describe Rugalytics::Profile do
99
100
 
100
101
  it "should be able to find all profiles for an account" do
101
102
  html = fixture('analytics_profile_find_all.html')
102
- Rugalytics::Profile.should_receive(:get).and_return(html)
103
- accounts = Rugalytics::Profile.find_all('1254221')
103
+ Profile.should_receive(:get).and_return(html)
104
+ accounts = Profile.find_all('1254221')
104
105
  accounts.collect(&:name).should == ["blog.your_site.com"]
105
106
  end
106
107
 
@@ -111,9 +112,9 @@ describe Rugalytics::Profile do
111
112
  account = mock('account')
112
113
  profile = mock('profile')
113
114
 
114
- Rugalytics::Account.should_receive(:find).with(account_name).and_return account
115
+ Account.should_receive(:find).with(account_name).and_return account
115
116
  account.should_receive(:find_profile).with(profile_name).and_return profile
116
- Rugalytics::Profile.find(account_name, profile_name).should == profile
117
+ Profile.find(account_name, profile_name).should == profile
117
118
  end
118
119
  end
119
120
 
@@ -123,9 +124,9 @@ describe Rugalytics::Profile do
123
124
  account = mock('account')
124
125
  profile = mock('profile')
125
126
 
126
- Rugalytics::Account.should_receive(:find).with(name).and_return account
127
+ Account.should_receive(:find).with(name).and_return account
127
128
  account.should_receive(:find_profile).with(name).and_return profile
128
- Rugalytics::Profile.find(name).should == profile
129
+ Profile.find(name).should == profile
129
130
  end
130
131
  end
131
132
  end
@@ -1,17 +1,18 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+ include Rugalytics
2
3
 
3
- describe Rugalytics::Report do
4
+ describe Report do
4
5
 
5
6
  describe "creating report from csv" do
6
7
 
7
8
  describe "when setting report attributes" do
8
9
  before :all do
9
- csv = %Q|# ----------------------------------------
10
- your_site.com
11
- Top Content,
12
- 26 May 2008,31 May 2008
13
- # ----------------------------------------|
14
- @report = Rugalytics::Report.new(csv)
10
+ csv = ['# ----------------------------------------',
11
+ 'your_site.com',
12
+ 'Top Content,',
13
+ '26 May 2008,31 May 2008',
14
+ '# ----------------------------------------']
15
+ @report = Report.new(csv.join("\n"))
15
16
  end
16
17
 
17
18
  it "should set base url from second line of text" do
@@ -34,12 +35,12 @@ Top Content,
34
35
  describe "when setting report dates" do
35
36
  describe "with source date format 'Month Day, Year'" do
36
37
  before :all do
37
- csv = %Q|# ----------------------------------------
38
- your_site.com
39
- Top Content,
40
- "July 28, 2008","August 4, 2008"
41
- # ----------------------------------------|
42
- @report = Rugalytics::Report.new(csv)
38
+ csv = ['# ----------------------------------------',
39
+ 'your_site.com',
40
+ 'Top Content,',
41
+ '"July 28, 2008","August 4, 2008"',
42
+ '# ----------------------------------------']
43
+ @report = Report.new(csv.join("\n"))
43
44
  end
44
45
  it "should set start date from fourth line of text" do
45
46
  @report.start_date.should == Date.parse('28 July 2008')
@@ -50,12 +51,12 @@ Top Content,
50
51
  end
51
52
  describe "with dates badly formatted" do
52
53
  it 'should raise an exception' do
53
- csv = %Q|# ----------------------------------------
54
- your_site.com
55
- Top Content,
56
- random something
57
- # ----------------------------------------|
58
- lambda { Rugalytics::Report.new(csv) }.should raise_error(Exception, 'invalid date: random something')
54
+ csv = ['# ----------------------------------------',
55
+ 'your_site.com',
56
+ 'Top Content,',
57
+ 'random something',
58
+ '# ----------------------------------------']
59
+ lambda { Report.new(csv.join("\n")) }.should raise_error(Exception, 'invalid date: random something')
59
60
  end
60
61
  end
61
62
  end
@@ -66,28 +67,27 @@ random something
66
67
  @attributes = %Q|URL,Page Views,Unique Page Views,Time on Page,Bounce Rate,% Exit,$ Index|
67
68
  @values1 = %Q|/,189,157,54.94957983193277,0.4862385392189026,0.37037035822868347,0.0|
68
69
  @values2 = %Q|/bills,60,38,54.17307692307692,0.0,0.13333334028720856,0.0|
69
- @csv = %Q|# ----------------------------------------
70
- #{@base_url}
71
- Top Content,
72
- 26 May 2008,31 May 2008
73
- # ----------------------------------------
74
- # ----------------------------------------
75
- # Table
76
- # ----------------------------------------
77
- #{@attributes}
78
- #{@values1}
79
- #{@values2}
80
- # --------------------------------------------------------------------------------
81
- |
70
+ @csv = ['# ----------------------------------------',
71
+ @base_url,
72
+ 'Top Content,',
73
+ '26 May 2008,31 May 2008',
74
+ '# ----------------------------------------',
75
+ '# ----------------------------------------',
76
+ '# Table',
77
+ '# ----------------------------------------',
78
+ @attributes,
79
+ @values1,
80
+ @values2,
81
+ '# --------------------------------------------------------------------------------']
82
82
  end
83
83
 
84
84
  it 'should create item for each data row in "Table"' do
85
85
  item1 = mock('item1')
86
86
  item2 = mock('item2')
87
- Rugalytics::Item.should_receive(:new).with(@attributes.split(','), @values1.split(','), @base_url).and_return item1
88
- Rugalytics::Item.should_receive(:new).with(@attributes.split(','), @values2.split(','), @base_url).and_return item2
87
+ Item.should_receive(:new).with(@attributes.split(','), @values1.split(','), @base_url).and_return item1
88
+ Item.should_receive(:new).with(@attributes.split(','), @values2.split(','), @base_url).and_return item2
89
89
 
90
- report = Rugalytics::Report.new(@csv)
90
+ report = Report.new(@csv.join("\n"))
91
91
  report.items.should == [item1, item2]
92
92
  end
93
93
  end
@@ -99,31 +99,31 @@ Top Content,
99
99
  @browser_values = %Q|Firefox,1529,0.17185568809509277|
100
100
  @connection_speed_attributes = %Q|Connection Speed,Visits,% visits|
101
101
  @connection_speed_values = %Q|Unknown,3987,0.4481285810470581|
102
- @csv = %Q|# ----------------------------------------
103
- #{@base_url}
104
- Visitors Overview,
105
- 3 May 2008,2 June 2008
106
- # ----------------------------------------
107
- # ----------------------------------------
108
- # BrowserMiniTable
109
- # ----------------------------------------
110
- #{@browser_attributes}
111
- #{@browser_values}
112
-
113
- # ----------------------------------------
114
- # ConnectionSpeedMiniTable
115
- # ----------------------------------------
116
- #{@connection_speed_attributes}
117
- #{@connection_speed_values}
118
- # --------------------------------------------------------------------------------|
102
+ @csv = ['# ----------------------------------------',
103
+ @base_url,
104
+ 'Visitors Overview',
105
+ '3 May 2008,2 June 2008',
106
+ '# ----------------------------------------',
107
+ '# ----------------------------------------',
108
+ '# BrowserMiniTable',
109
+ '# ----------------------------------------',
110
+ @browser_attributes,
111
+ @browser_values,
112
+ '',
113
+ '# ----------------------------------------',
114
+ '# ConnectionSpeedMiniTable',
115
+ '# ----------------------------------------',
116
+ @connection_speed_attributes,
117
+ @connection_speed_values,
118
+ '# --------------------------------------------------------------------------------']
119
119
  end
120
120
  it 'should create item for each data row in "XxxMiniTable"' do
121
121
  browser_item = mock('browser_item')
122
122
  connection_item = mock('item')
123
- Rugalytics::Item.should_receive(:new).with(@browser_attributes.split(','), @browser_values.split(','), @base_url).and_return browser_item
124
- Rugalytics::Item.should_receive(:new).with(@connection_speed_attributes.split(','), @connection_speed_values.split(','), @base_url).and_return connection_item
123
+ Item.should_receive(:new).with(@browser_attributes.split(','), @browser_values.split(','), @base_url).and_return browser_item
124
+ Item.should_receive(:new).with(@connection_speed_attributes.split(','), @connection_speed_values.split(','), @base_url).and_return connection_item
125
125
 
126
- report = Rugalytics::Report.new(@csv)
126
+ report = Report.new(@csv.join("\n"))
127
127
  report.browser_items.should == [browser_item]
128
128
  report.connection_speed_items.should == [connection_item]
129
129
  report.attribute_names.should == ['browser_items', 'connection_speed_items']
@@ -131,40 +131,53 @@ Visitors Overview,
131
131
  end
132
132
 
133
133
  describe "when creating graph points from 'Graph'" do
134
- before :all do
135
- @period = %Q|1 May 2008 - 31 May 2008|
134
+ def graph_correct expected_start, expected_end
135
+ @start_end_dates = "#{@start},#{@end}"
136
136
  @name = %Q|Page Views|
137
- @start = %Q|26 May 2008|
138
- @end = %Q|31 May 2008|
139
- @csv = %Q|# ----------------------------------------
140
- your_site.com
141
- Top Content,
142
- #{@start},#{@end}
143
- # ----------------------------------------
144
-
145
- # ----------------------------------------
146
- # Graph
147
- # ----------------------------------------
148
- #{@period}
149
- #{@name}
150
- "5,360"
151
- 433|
137
+ @csv = ['# ----------------------------------------',
138
+ 'your_site.com',
139
+ 'Top Content,',
140
+ @start_end_dates,
141
+ '# ----------------------------------------',
142
+ '',
143
+ '# ----------------------------------------',
144
+ '# Graph',
145
+ '# ----------------------------------------',
146
+ @period,
147
+ @name,
148
+ '"5,360"',
149
+ '433']
150
+ graph = mock('graph')
151
+ Graph.should_receive(:new).with(@name, @period, [5360, 433], expected_start, expected_end).and_return graph
152
+
153
+ report = Report.new(@csv.join("\n"))
154
+ report.pageviews_graph.should == graph
155
+ report.attribute_names.should == ['pageviews_graph']
152
156
  end
153
157
 
154
- it 'should create graph with data under "Graph"' do
155
- graph = mock('graph')
156
- Rugalytics::Graph.should_receive(:new).with(@name, @period, [5360, 433], Date.parse(@start), Date.parse(@end)).and_return graph
158
+ describe 'with source date format "Month Day, Year"' do
159
+ it 'should create graph with data under "Graph"' do
160
+ @start = %Q|"July 5, 2008"|
161
+ @end = %Q|"August 4, 2008"|
162
+ @period = %Q|"July 5, 2008 - August 4, 2008"|
163
+ graph_correct Date.new(2008,7,5), Date.new(2008,8,4)
164
+ end
165
+ end
157
166
 
158
- report = Rugalytics::Report.new(@csv)
159
- report.page_views_graph.should == graph
160
- report.attribute_names.should == ['page_views_graph']
167
+ describe "with source date format 'Day Month Year'" do
168
+ it 'should create graph with data under "Graph"' do
169
+ @start = %Q|26 May 2008|
170
+ @end = %Q|31 May 2008|
171
+ @period = %Q|1 May 2008 - 31 May 2008|
172
+ graph_correct Date.parse(@start), Date.parse(@end)
173
+ end
161
174
  end
162
175
  end
163
176
  end
164
177
 
165
178
  describe 'when retrieving total using method not defined on class' do
166
179
  it 'should return total from graph named in method name' do
167
- report = Rugalytics::Report.new
180
+ report = Report.new
168
181
  report.should_receive(:respond_to?).with(:page_views_graph).and_return true
169
182
  report.should_receive(:page_views_graph).and_return mock('graph', :sum_of_points=>100)
170
183
  report.method_missing(:page_views_total).should == 100
@@ -173,7 +186,7 @@ Top Content,
173
186
 
174
187
  describe 'when retrieving list by day using method not defined on class' do
175
188
  it 'should return by day list from graph named in method name' do
176
- report = Rugalytics::Report.new
189
+ report = Report.new
177
190
  report.should_receive(:respond_to?).with(:page_views_graph).and_return true
178
191
  points_by_day = mock('points_by_day')
179
192
  report.should_receive(:page_views_graph).and_return mock('graph', :points_by_day=>points_by_day)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rugalytics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob McKinnon
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-04 00:00:00 +01:00
12
+ date: 2008-08-05 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency