autometal-piwik 0.6.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +8 -0
- data/.travis.yml +10 -0
- data/Gemfile +4 -0
- data/License.txt +22 -0
- data/README.md +80 -76
- data/Rakefile +1 -33
- data/autometal-piwik.gemspec +19 -54
- data/bin/piwik-console +31 -0
- data/lib/piwik.rb +17 -5
- data/lib/piwik/actions.rb +59 -0
- data/lib/piwik/annotations.rb +41 -0
- data/lib/piwik/api.rb +21 -0
- data/lib/piwik/api_module.rb +97 -0
- data/lib/piwik/api_response.rb +6 -0
- data/lib/piwik/api_scope.rb +32 -0
- data/lib/piwik/base.rb +156 -69
- data/lib/piwik/custom_variables.rb +8 -0
- data/lib/piwik/data_methods.rb +54 -0
- data/lib/piwik/example_api.rb +15 -0
- data/lib/piwik/goals.rb +40 -0
- data/lib/piwik/image_graph.rb +7 -0
- data/lib/piwik/languages_manager.rb +13 -0
- data/lib/piwik/live.rb +8 -0
- data/lib/piwik/metadata_api.rb +21 -0
- data/lib/piwik/mobile_messaging.rb +16 -0
- data/lib/piwik/multi_sites.rb +8 -0
- data/lib/piwik/pdf_reports.rb +12 -0
- data/lib/piwik/provider.rb +7 -0
- data/lib/piwik/referers.rb +62 -0
- data/lib/piwik/seo.rb +7 -0
- data/lib/piwik/site.rb +50 -250
- data/lib/piwik/sites_manager.rb +70 -0
- data/lib/piwik/transitions.rb +28 -0
- data/lib/piwik/typecast.rb +19 -0
- data/lib/piwik/user.rb +7 -126
- data/lib/piwik/user_country.rb +12 -0
- data/lib/piwik/user_settings.rb +16 -0
- data/lib/piwik/users_manager.rb +52 -0
- data/lib/piwik/version.rb +3 -0
- data/lib/piwik/visit_frequency.rb +7 -0
- data/lib/piwik/visit_time.rb +9 -0
- data/lib/piwik/visitor_interest.rb +10 -0
- data/lib/piwik/visits_summary.rb +53 -0
- data/lib/string.rb +11 -0
- data/spec/actions_spec.rb +19 -0
- data/spec/api_spec.rb +12 -0
- data/spec/custom_variables_spec.rb +11 -0
- data/spec/files/API.get.xml +28 -0
- data/spec/files/API.getDefaultMetricTranslations.xml +39 -0
- data/spec/files/API.getDefaultMetrics.xml +8 -0
- data/spec/files/API.getDefaultMetricsDocumentation.xml +15 -0
- data/spec/files/API.getDefaultProcessedMetrics.xml +9 -0
- data/spec/files/API.getHeaderLogoUrl.xml +2 -0
- data/spec/files/API.getLogoUrl.xml +2 -0
- data/spec/files/API.getMetadata.xml +42 -0
- data/spec/files/API.getPiwikVersion.xml +2 -0
- data/spec/files/API.getProcessedReport.xml +1227 -0
- data/spec/files/API.getReportMetadata.xml +1347 -0
- data/spec/files/API.getRowEvolution.xml +4 -0
- data/spec/files/API.getSegmentsMetadata.xml +365 -0
- data/spec/files/API.getSettings.xml +7 -0
- data/spec/files/Actions.GetPageUrl.xml +20 -0
- data/spec/files/Actions.get.xml +11 -0
- data/spec/files/Actions.getDownloads.xml +19 -0
- data/spec/files/Actions.getEntryPageTitles.xml +88 -0
- data/spec/files/Actions.getEntryPageUrls.xml +93 -0
- data/spec/files/Actions.getExitPageTitles.xml +88 -0
- data/spec/files/Actions.getExitPageUrls.xml +93 -0
- data/spec/files/Actions.getOutlink.xml +12 -0
- data/spec/files/Actions.getOutlinks.xml +100 -0
- data/spec/files/Actions.getPageTitles.xml +134 -0
- data/spec/files/Actions.getPageUrls.xml +129 -0
- data/spec/files/Annotations.add.xml +11 -0
- data/spec/files/Annotations.getAll.xml +34 -0
- data/spec/files/Annotations.getAnnotationCountForDates.xml +12 -0
- data/spec/files/CustomVariables.getCustomVariables.xml +32 -0
- data/spec/files/ExampleAPI.getAnswerToLife.xml +2 -0
- data/spec/files/ExampleAPI.getCompetitionDatatable.xml +12 -0
- data/spec/files/ExampleAPI.getDescriptionArray.xml +8 -0
- data/spec/files/ExampleAPI.getMoreInformationAnswerToLife.xml +2 -0
- data/spec/files/ExampleAPI.getMultiArray.xml +22 -0
- data/spec/files/ExampleAPI.getNull.xml +4 -0
- data/spec/files/ExampleAPI.getObject.xml +4 -0
- data/spec/files/ExampleAPI.getPiwikVersion.xml +2 -0
- data/spec/files/ExampleAPI.getSum.xml +2 -0
- data/spec/files/Goals.get.xml +7 -0
- data/spec/files/Goals.getDaysToConversion.xml +59 -0
- data/spec/files/Goals.getGoals.xml +39 -0
- data/spec/files/Goals.getVisitsUntilConversion.xml +55 -0
- data/spec/files/ImageGraph.get.xml +0 -0
- data/spec/files/LanguagesManager.getAvailableLanguageNames.xml +233 -0
- data/spec/files/LanguagesManager.getAvailableLanguages.xml +49 -0
- data/spec/files/LanguagesManager.isLanguageAvailable.xml +2 -0
- data/spec/files/Live.getCounters.xml +8 -0
- data/spec/files/Live.getLastVisitsDetails.xml +768 -0
- data/spec/files/MultiSites.getAll.xml +2 -0
- data/spec/files/MultiSites.getOne.xml +11 -0
- data/spec/files/PDFReports.getReports.xml +35 -0
- data/spec/files/Provider.getProvider.xml +113 -0
- data/spec/files/Referers.getCampaigns.xml +2 -0
- data/spec/files/Referers.getKeywords.xml +145 -0
- data/spec/files/Referers.getKeywordsForPageUrl.xml +8 -0
- data/spec/files/Referers.getNumberOfDistinctCampaigns.xml +2 -0
- data/spec/files/Referers.getNumberOfDistinctKeywords.xml +2 -0
- data/spec/files/Referers.getNumberOfDistinctSearchEngines.xml +2 -0
- data/spec/files/Referers.getNumberOfDistinctWebsites.xml +2 -0
- data/spec/files/Referers.getNumberOfDistinctWebsitesUrls.xml +2 -0
- data/spec/files/Referers.getRefererType.xml +82 -0
- data/spec/files/Referers.getSearchEngines.xml +112 -0
- data/spec/files/Referers.getSocials.xml +2 -0
- data/spec/files/Referers.getUrlsForSocial.xml +2 -0
- data/spec/files/Referers.getWebsites.xml +386 -0
- data/spec/files/SEO.getRank.xml +33 -0
- data/spec/files/SitesManager.addSite.xml +1 -0
- data/spec/files/SitesManager.getAllSites.xml +63 -0
- data/spec/files/SitesManager.getAllSitesId.xml +4 -0
- data/spec/files/SitesManager.getCurrencyList.xml +165 -0
- data/spec/files/SitesManager.getCurrencySymbols.xml +165 -0
- data/spec/files/SitesManager.getDefaultCurrency.xml +2 -0
- data/spec/files/SitesManager.getDefaultTimezone.xml +2 -0
- data/spec/files/SitesManager.getExcludedIpsGlobal.xml +2 -0
- data/spec/files/SitesManager.getExcludedQueryParametersGlobal.xml +2 -0
- data/spec/files/SitesManager.getJavascriptTag.xml +14 -0
- data/spec/files/SitesManager.getSearchCategoryParametersGlobal.xml +2 -0
- data/spec/files/SitesManager.getSearchKeywordParametersGlobal.xml +2 -0
- data/spec/files/SitesManager.getSiteFromId.xml +18 -0
- data/spec/files/SitesManager.getSiteUrlsFromId.xml +4 -0
- data/spec/files/SitesManager.getSitesGroups.xml +4 -0
- data/spec/files/SitesManager.getSitesIdFromSiteUrl.xml +2 -0
- data/spec/files/SitesManager.getSitesIdWithAdminAccess.xml +4 -0
- data/spec/files/SitesManager.getSitesIdWithAtLeastViewAccess.xml +4 -0
- data/spec/files/SitesManager.getSitesIdWithViewAccess.xml +2 -0
- data/spec/files/SitesManager.getSitesIdWithVisits.xml +2 -0
- data/spec/files/SitesManager.getSitesWithAdminAccess.xml +63 -0
- data/spec/files/SitesManager.getSitesWithAtLeastViewAccess.xml +18 -0
- data/spec/files/SitesManager.getSitesWithViewAccess.xml +2 -0
- data/spec/files/SitesManager.getTimezonesList.xml +509 -0
- data/spec/files/SitesManager.getUniqueSiteTimezones.xml +4 -0
- data/spec/files/Transitions.getTranslations.xml +37 -0
- data/spec/files/UserCountry.getCity.xml +221 -0
- data/spec/files/UserCountry.getContinent.xml +185 -0
- data/spec/files/UserCountry.getCountry.xml +154 -0
- data/spec/files/UserCountry.getLocationFromIP.xml +17 -0
- data/spec/files/UserCountry.getNumberOfDistinctCountries.xml +2 -0
- data/spec/files/UserCountry.getRegion.xml +269 -0
- data/spec/files/UserSettings.getBrowser.xml +47 -0
- data/spec/files/UserSettings.getBrowserType.xml +58 -0
- data/spec/files/UserSettings.getBrowserVersion.xml +39 -0
- data/spec/files/UserSettings.getConfiguration.xml +43 -0
- data/spec/files/UserSettings.getMobileVsDesktop.xml +36 -0
- data/spec/files/UserSettings.getOS.xml +27 -0
- data/spec/files/UserSettings.getOSFamily.xml +102 -0
- data/spec/files/UserSettings.getPlugin.xml +63 -0
- data/spec/files/UserSettings.getResolution.xml +33 -0
- data/spec/files/UserSettings.getWideScreen.xml +47 -0
- data/spec/files/UsersManager.getSitesAccessFromUser.xml +4 -0
- data/spec/files/UsersManager.getUser.xml +10 -0
- data/spec/files/UsersManager.getUsers.xml +11 -0
- data/spec/files/UsersManager.getUsersAccessFromSite.xml +2 -0
- data/spec/files/UsersManager.getUsersLogin.xml +4 -0
- data/spec/files/UsersManager.getUsersSitesFromAccess.xml +2 -0
- data/spec/files/UsersManager.getUsersWithSiteAccess.xml +2 -0
- data/spec/files/UsersManager.userExists.xml +2 -0
- data/spec/files/VisitFrequency.get.xml +13 -0
- data/spec/files/VisitTime.getByDayOfWeek.xml +43 -0
- data/spec/files/VisitTime.getVisitInformationPerLocalTime.xml +83 -0
- data/spec/files/VisitTime.getVisitInformationPerServerTime.xml +87 -0
- data/spec/files/VisitorInterest.getNumberOfVisitsByDaysSinceLast.xml +63 -0
- data/spec/files/VisitorInterest.getNumberOfVisitsByVisitCount.xml +73 -0
- data/spec/files/VisitorInterest.getNumberOfVisitsPerPage.xml +43 -0
- data/spec/files/VisitorInterest.getNumberOfVisitsPerVisitDuration.xml +43 -0
- data/spec/files/VisitsSummary.get.xml +13 -0
- data/spec/files/VisitsSummary.getActions.xml +2 -0
- data/spec/files/VisitsSummary.getBounceCount.xml +2 -0
- data/spec/files/VisitsSummary.getMaxActions.xml +2 -0
- data/spec/files/VisitsSummary.getSumVisitsLength.xml +2 -0
- data/spec/files/VisitsSummary.getSumVisitsLengthPretty.xml +2 -0
- data/spec/files/VisitsSummary.getUniqueVisitors.xml +2 -0
- data/spec/files/VisitsSummary.getVisits.xml +2 -0
- data/spec/files/VisitsSummary.getVisitsConverted.xml +2 -0
- data/spec/files/failure.xml +3 -0
- data/spec/files/success.xml +3 -0
- data/spec/goals_spec.rb +14 -0
- data/spec/image_graph_spec.rb +12 -0
- data/spec/languages_manager_spec.rb +13 -0
- data/spec/live_spec.rb +13 -0
- data/spec/mobile_messaging_spec.rb +10 -0
- data/spec/multi_sites_spec.rb +11 -0
- data/spec/pdf_reports_spec.rb +11 -0
- data/spec/provider_spec.rb +12 -0
- data/spec/referers_spec.rb +46 -0
- data/spec/seo_spec.rb +15 -0
- data/spec/site_spec.rb +104 -0
- data/spec/sites_manager_spec.rb +30 -0
- data/spec/spec_helper.rb +76 -0
- data/spec/transitions_spec.rb +13 -0
- data/spec/user_country_spec.rb +33 -0
- data/spec/user_settings_spec.rb +50 -0
- data/spec/user_spec.rb +32 -0
- data/spec/users_manager_spec.rb +26 -0
- data/spec/visit_frequency_spec.rb +11 -0
- data/spec/visit_time_spec.rb +22 -0
- data/spec/visitor_interest_spec.rb +30 -0
- data/spec/visits_summary_spec.rb +47 -0
- metadata +426 -99
- data/.document +0 -5
- data/LICENSE +0 -7
- data/VERSION +0 -1
- data/lib/piwik/trackable.rb +0 -80
- data/script/console +0 -10
- data/test/files/config/example_piwik.yml +0 -4
- data/test/piwik_test.rb +0 -128
- data/test/test_helper.rb +0 -12
@@ -0,0 +1,43 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<result>
|
3
|
+
<row>
|
4
|
+
<label>0-10s</label>
|
5
|
+
<nb_visits>735</nb_visits>
|
6
|
+
</row>
|
7
|
+
<row>
|
8
|
+
<label>11-30s</label>
|
9
|
+
<nb_visits>32</nb_visits>
|
10
|
+
</row>
|
11
|
+
<row>
|
12
|
+
<label>31-60s</label>
|
13
|
+
<nb_visits>34</nb_visits>
|
14
|
+
</row>
|
15
|
+
<row>
|
16
|
+
<label>1-2 min</label>
|
17
|
+
<nb_visits>37</nb_visits>
|
18
|
+
</row>
|
19
|
+
<row>
|
20
|
+
<label>2-4 min</label>
|
21
|
+
<nb_visits>36</nb_visits>
|
22
|
+
</row>
|
23
|
+
<row>
|
24
|
+
<label>4-7 min</label>
|
25
|
+
<nb_visits>33</nb_visits>
|
26
|
+
</row>
|
27
|
+
<row>
|
28
|
+
<label>7-10 min</label>
|
29
|
+
<nb_visits>12</nb_visits>
|
30
|
+
</row>
|
31
|
+
<row>
|
32
|
+
<label>10-15 min</label>
|
33
|
+
<nb_visits>17</nb_visits>
|
34
|
+
</row>
|
35
|
+
<row>
|
36
|
+
<label>15-30 min</label>
|
37
|
+
<nb_visits>40</nb_visits>
|
38
|
+
</row>
|
39
|
+
<row>
|
40
|
+
<label>30+ min</label>
|
41
|
+
<nb_visits>19</nb_visits>
|
42
|
+
</row>
|
43
|
+
</result>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<result>
|
3
|
+
<nb_uniq_visitors>914</nb_uniq_visitors>
|
4
|
+
<nb_visits>995</nb_visits>
|
5
|
+
<nb_actions>2161</nb_actions>
|
6
|
+
<nb_visits_converted>44</nb_visits_converted>
|
7
|
+
<bounce_count>704</bounce_count>
|
8
|
+
<sum_visit_length>143952</sum_visit_length>
|
9
|
+
<max_actions>47</max_actions>
|
10
|
+
<bounce_rate>71%</bounce_rate>
|
11
|
+
<nb_actions_per_visit>2.2</nb_actions_per_visit>
|
12
|
+
<avg_time_on_site>145</avg_time_on_site>
|
13
|
+
</result>
|
data/spec/goals_spec.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Piwik::Goals' do
|
3
|
+
before {
|
4
|
+
stub_api_calls
|
5
|
+
}
|
6
|
+
|
7
|
+
# TODO: Specify required params
|
8
|
+
let(:params) { {:idSite => 1, :period => 'day', :date => 'yesterday'} }
|
9
|
+
subject { Piwik::Goals }
|
10
|
+
|
11
|
+
assert_data_integrity(:get, :size => 4)
|
12
|
+
assert_data_integrity(:get_goals, :size => 3)
|
13
|
+
assert_data_integrity(:get_visits_until_conversion, :size => 13)
|
14
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Piwik::ImageGraph' do
|
3
|
+
before {
|
4
|
+
stub_api_calls
|
5
|
+
}
|
6
|
+
|
7
|
+
# TODO: Specify required params
|
8
|
+
let(:params) { {:idSite => 1, :period => 'day', :date => 'yesterday', :apiModule => 'UserCountry', :apiAction => 'getCountry'} }
|
9
|
+
subject { Piwik::ImageGraph }
|
10
|
+
|
11
|
+
assert_value_integrity(:get) # for array responses
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Piwik::LanguagesManager' do
|
3
|
+
before {
|
4
|
+
stub_api_calls
|
5
|
+
}
|
6
|
+
|
7
|
+
let(:params) { { :languageCode => 'en' } }
|
8
|
+
subject { Piwik::LanguagesManager }
|
9
|
+
|
10
|
+
assert_data_integrity(:get_available_language_names, :size => 46)
|
11
|
+
assert_data_integrity(:get_available_languages, :size => 46)
|
12
|
+
assert_value_integrity(:is_language_available, :value => 1)
|
13
|
+
end
|
data/spec/live_spec.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Piwik::Live' do
|
3
|
+
before {
|
4
|
+
stub_api_calls
|
5
|
+
}
|
6
|
+
|
7
|
+
# TODO: Specify required params
|
8
|
+
let(:params) { {:idSite => 1, :period => 'day', :date => 'yesterday'} }
|
9
|
+
subject { Piwik::Live }
|
10
|
+
|
11
|
+
assert_data_integrity(:get_counters, :size => 3)
|
12
|
+
assert_data_integrity(:get_last_visits_details, :size => 8)
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Piwik::Provider' do
|
3
|
+
before {
|
4
|
+
stub_api_calls
|
5
|
+
}
|
6
|
+
|
7
|
+
# TODO: Specify required params
|
8
|
+
let(:params) { {:idSite => 1, :period => 'day', :date => 'yesterday'} }
|
9
|
+
subject { Piwik::Provider }
|
10
|
+
|
11
|
+
assert_data_integrity(:get_provider, :size => 10)
|
12
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Piwik::Referers' do
|
3
|
+
before {
|
4
|
+
stub_api_calls
|
5
|
+
}
|
6
|
+
|
7
|
+
let(:params) { {:idSite => 1, :period => 'day', :date => 'yesterday'} }
|
8
|
+
subject { Piwik::Referers }
|
9
|
+
|
10
|
+
describe "#get_keywords" do
|
11
|
+
assert_data_integrity(:get_keywords, :size => 10)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#get_campaigns" do
|
15
|
+
it { subject.get_campaigns(params).size.should eq(0) }
|
16
|
+
it { subject.get_campaigns(params).empty?.should eq(true) }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#get_referer_type" do
|
20
|
+
assert_data_integrity(:get_referer_type, :size => 3)
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#get_number_of_distinct_keywords" do
|
24
|
+
assert_value_integrity(:get_number_of_distinct_keywords, :value => 207)
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#get_number_of_distinct_search_engines" do
|
28
|
+
assert_value_integrity(:get_number_of_distinct_search_engines, :value => 7)
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#get_number_of_distinct_websites" do
|
32
|
+
assert_value_integrity(:get_number_of_distinct_websites, :value => 27)
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#get_search_engines" do
|
36
|
+
assert_data_integrity(:get_search_engines, :size => 7)
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#get_socials" do
|
40
|
+
it { subject.get_socials(params).size.should eq(0) }
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#get_urls_for_social" do
|
44
|
+
it { subject.get_urls_for_social(params).size.should eq(0) }
|
45
|
+
end
|
46
|
+
end
|
data/spec/seo_spec.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Piwik::SEO' do
|
3
|
+
before {
|
4
|
+
stub_api_calls
|
5
|
+
}
|
6
|
+
|
7
|
+
let(:params) { {:url => 'http://site.test'} }
|
8
|
+
subject { Piwik::SEO }
|
9
|
+
|
10
|
+
describe "#get_rank" do
|
11
|
+
assert_data_integrity(:get_rank, :size => 5)
|
12
|
+
it { subject.get_rank(params).data.first['label'].should eq('Google PageRank') }
|
13
|
+
it { subject.get_rank(params).data.first['rank'].should eq('7') }
|
14
|
+
end
|
15
|
+
end
|
data/spec/site_spec.rb
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Piwik::Site' do
|
3
|
+
before do
|
4
|
+
stub_api_calls
|
5
|
+
end
|
6
|
+
|
7
|
+
subject { build(:site) }
|
8
|
+
its(:main_url) { should eq('http://test.local') }
|
9
|
+
its(:name) { should eq('Test Site') }
|
10
|
+
its(:config) { should eq({:piwik_url => PIWIK_URL, :auth_token => PIWIK_TOKEN}) }
|
11
|
+
|
12
|
+
it {
|
13
|
+
subject.save.should eq(true)
|
14
|
+
subject.name = 'Karate Site'
|
15
|
+
subject.update.should eq(true)
|
16
|
+
subject.destroy.should eq(true)
|
17
|
+
}
|
18
|
+
|
19
|
+
describe 'with wrong id' do
|
20
|
+
before {Piwik::SitesManager.stub(:call).with('SitesManager.getSiteFromId',{:idSite => 666}, /.*/, /.*/).and_return('<result>0</result>')}
|
21
|
+
|
22
|
+
xit { expect {Piwik::Site.load(666)}.to raise_error(Piwik::UnknownSite) }
|
23
|
+
end
|
24
|
+
|
25
|
+
it { subject.seo_info.first['rank'].to_i.should eq(7) }
|
26
|
+
|
27
|
+
describe '#annotations' do
|
28
|
+
subject { build(:site).annotations }
|
29
|
+
|
30
|
+
it { subject.all.size.should eq(2) }
|
31
|
+
it { subject.update(1,{:pattern => 2}).should_not raise_error(Piwik::ApiError) }
|
32
|
+
it { subject.delete(1).should_not raise_error(Piwik::ApiError) }
|
33
|
+
it { subject.add(:name => 'test', :note => 'meah', :starred => 1).size.should eq(6) }
|
34
|
+
it { subject.count_for_dates.should_not raise_error(Piwik::ApiError) }
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#visits' do
|
39
|
+
subject { build(:site).visits }
|
40
|
+
|
41
|
+
it { subject.summary.should be_a(Piwik::VisitsSummary) }
|
42
|
+
it { subject.count.should eq(200) }
|
43
|
+
it { subject.actions.should eq(55) }
|
44
|
+
it { subject.uniques.should eq(100) }
|
45
|
+
it { subject.bounces.should eq(51) }
|
46
|
+
it { subject.converted.should eq(0) }
|
47
|
+
it { subject.max_actions.should eq(66) }
|
48
|
+
it { subject.length.should eq(143952) }
|
49
|
+
it { subject.pretty_length.should eq("1 days 15 hours") }
|
50
|
+
end
|
51
|
+
|
52
|
+
describe '#actions' do
|
53
|
+
subject { build(:site).actions }
|
54
|
+
|
55
|
+
it { subject.summary.should be_a(Piwik::Actions) }
|
56
|
+
it { subject.urls.size.should eq(7) }
|
57
|
+
it { subject.entry_urls.size.should eq(5) }
|
58
|
+
it { subject.exit_urls.size.should eq(5) }
|
59
|
+
it { subject.downloads.size.should eq(2) }
|
60
|
+
it { subject.outlinks.size.should eq(11) }
|
61
|
+
it { subject.outlink('http://mysite.com').exit_nb_visits.should eq(5) }
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '#referers' do
|
65
|
+
subject { build(:site).referers }
|
66
|
+
|
67
|
+
it { subject.websites.size.should eq(27) }
|
68
|
+
it { subject.websites_count.should eq(27) }
|
69
|
+
it { subject.keywords.size.should eq(10) }
|
70
|
+
it { subject.keywords_for_title('A page title').size.should eq(1) }
|
71
|
+
it { subject.keywords_for_url('http://mysite.com/page.html').size.should eq(5) }
|
72
|
+
it { subject.keywords_count.should eq(207) }
|
73
|
+
it { subject.search_engines.size.should eq(7) }
|
74
|
+
it { subject.search_engines_count.should eq(7) }
|
75
|
+
it { subject.socials.size.should eq(0) }
|
76
|
+
end
|
77
|
+
|
78
|
+
describe '#goals' do
|
79
|
+
subject { build(:site).goals }
|
80
|
+
|
81
|
+
it { subject.all.size.should eq(3) }
|
82
|
+
it { subject.load(1).nb_conversions.should eq(82) }
|
83
|
+
it { subject.update(1,{:pattern => 2}).should_not raise_error(Piwik::ApiError) }
|
84
|
+
it { subject.delete(1).should_not raise_error(Piwik::ApiError) }
|
85
|
+
it { subject.add(:name => 'test', 'matchAttribute' => '/', :pattern => '/', :patternType => 1).should_not raise_error(Piwik::ApiError) }
|
86
|
+
end
|
87
|
+
|
88
|
+
describe '#transitions' do
|
89
|
+
subject { build(:site).transitions }
|
90
|
+
|
91
|
+
it { subject.for_action('name','type').should be_a(Piwik::Transitions::TransitionsForAction) }
|
92
|
+
it { subject.for_title('My page title').should be_a(Piwik::Transitions::TransitionsForPageTitle) }
|
93
|
+
it { subject.for_url('http://mysite.com').should be_a(Piwik::Transitions::TransitionsForPageUrl) }
|
94
|
+
it { subject.translations.size.should eq(32) }
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "that exists" do
|
98
|
+
before {
|
99
|
+
@site = build(:site)
|
100
|
+
@site.save
|
101
|
+
}
|
102
|
+
it { expect {Piwik::Site.load(@site.id)}.to_not raise_error }
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe 'Piwik::SitesManager' do
|
3
|
+
before {
|
4
|
+
stub_api_calls
|
5
|
+
}
|
6
|
+
|
7
|
+
# TODO: Specify required params
|
8
|
+
let(:params) { {:idSite => 1, :period => 'day', :date => 'yesterday'} }
|
9
|
+
subject { Piwik::SitesManager }
|
10
|
+
|
11
|
+
describe "#get" do
|
12
|
+
it { subject.get(params).should be_a(Piwik::Site) }
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#get_sites_with_admin_access" do
|
16
|
+
assert_data_integrity(:get_sites_with_admin_access, :size => 4)
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#get_all_sites" do
|
20
|
+
assert_data_integrity(:get_all_sites, :size => 4)
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#get_unique_site_timezones" do
|
24
|
+
assert_value_integrity(:get_unique_site_timezones)
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#get_javascript_tag" do
|
28
|
+
assert_value_integrity(:get_javascript_tag)
|
29
|
+
end
|
30
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'piwik'
|
2
|
+
|
3
|
+
RSpec.configure do |config|
|
4
|
+
Dir[File.join(File.dirname(__FILE__),'spec','support''**','*.rb')].each {|f| require f}
|
5
|
+
config.mock_with :rspec
|
6
|
+
config.order = "random"
|
7
|
+
end
|
8
|
+
|
9
|
+
def stub_rails_env &block
|
10
|
+
Object.const_set("RAILS_ROOT", File.join(File.dirname(__FILE__),"files"))
|
11
|
+
yield
|
12
|
+
Object.const_set("RAILS_ROOT",nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
def success_response
|
16
|
+
File.join(File.dirname(__FILE__),'files',"success.xml")
|
17
|
+
end
|
18
|
+
|
19
|
+
def failure_response
|
20
|
+
File.join(File.dirname(__FILE__),'files',"failure.xml")
|
21
|
+
end
|
22
|
+
|
23
|
+
def stub_api_calls
|
24
|
+
# Stubbing the main API call method. Methods without a specific stub
|
25
|
+
# will always return a success response
|
26
|
+
Piwik::Base.stub(:call) do |method,params,piwik_url,auth_token|
|
27
|
+
resp_file = File.join(File.dirname(__FILE__),'files',"#{method}.xml")
|
28
|
+
xml = if File.exists?(resp_file)
|
29
|
+
File.read resp_file
|
30
|
+
else
|
31
|
+
File.read File.join(success_response)
|
32
|
+
end
|
33
|
+
if xml.is_a?(String) && xml.force_encoding('BINARY').is_binary_data?
|
34
|
+
xml.force_encoding('BINARY')
|
35
|
+
elsif xml =~ /error message=/
|
36
|
+
result = XmlSimple.xml_in(xml, {'ForceArray' => false})
|
37
|
+
raise Piwik::ApiError, result['error']['message'] if result['error']
|
38
|
+
else
|
39
|
+
xml
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def assert_data_integrity method, options = {}
|
45
|
+
it { puts subject.inspect } if options[:debug]
|
46
|
+
it { subject.send(method,params).should_not raise_error(NoMethodError) }
|
47
|
+
enum_class = defined?(Enumerator) ? 'Enumerator' : 'Enumerable::Enumerator'
|
48
|
+
it { subject.send(method,params).each.should be_a(enum_class.constantize) }
|
49
|
+
it { subject.send(method,params).empty?.should eq(false) }
|
50
|
+
if options[:size].present?
|
51
|
+
it { subject.send(method,params).size.should eq(options[:size]) }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def assert_value_integrity method, options = {}
|
56
|
+
it { puts subject.inspect } if options[:debug]
|
57
|
+
it { subject.send(method,params).should_not raise_error(NoMethodError) }
|
58
|
+
it { subject.send(method,params).empty?.should eq(false) }
|
59
|
+
if options[:value].present?
|
60
|
+
it { subject.send(method,params).value.should eq(options[:value]) }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def build(object, attrs = {})
|
65
|
+
case object
|
66
|
+
when :user
|
67
|
+
def_attrs = { :login => "test_user", :password => "changeme", :email => "user@test.local", :user_alias => "Test User" }
|
68
|
+
Piwik::User.new(def_attrs.merge(attrs))
|
69
|
+
when :site
|
70
|
+
def_attrs = { :idsite => 1, :main_url => "http://test.local", :name => "Test Site" }
|
71
|
+
Piwik::Site.new(def_attrs.merge(attrs))
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
PIWIK_URL = 'http://piwik.local'
|
76
|
+
PIWIK_TOKEN = '90871c8584ddf2265f54553a305b6ae1'
|