power_reviews 0.1.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,161 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="default">
3
+ <xsd:element name="products">
4
+ <xsd:complexType>
5
+ <xsd:sequence>
6
+ <xsd:element ref="product" minOccurs="0" maxOccurs="unbounded"/>
7
+ </xsd:sequence>
8
+ </xsd:complexType>
9
+ </xsd:element>
10
+
11
+ <xsd:element name="product" type="ProductType" />
12
+
13
+ <xsd:complexType name="ProductType" abstract="true">
14
+ <xsd:sequence>
15
+ <xsd:element name="pageid" type="xsd:string" minOccurs="1" maxOccurs="1"/>
16
+ <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
17
+ </xsd:sequence>
18
+ <xsd:attribute name="locale" type="xsd:string" use="required"/>
19
+ </xsd:complexType>
20
+
21
+ <xsd:complexType name="ProductWithReviewsAndQuestions">
22
+ <xsd:complexContent>
23
+ <xsd:extension base="ProductType">
24
+ <xsd:sequence>
25
+ <xsd:element name="smallstarimagelocation" type="xsd:string" minOccurs="1" maxOccurs="1" />
26
+ <xsd:element name="largestarimagelocation" type="xsd:string" minOccurs="1" maxOccurs="1" />
27
+ <xsd:element name="newestreviewdate" type="xsd:date" minOccurs="1" maxOccurs="1"/>
28
+ <xsd:element name="oldestreviewdate" type="xsd:date" minOccurs="1" maxOccurs="1"/>
29
+ <xsd:element name="averageoverallrating" type="xsd:float" minOccurs="1" maxOccurs="1"/>
30
+ <xsd:element name="average_rating_decimal" type="xsd:float" minOccurs="1" maxOccurs="1"/>
31
+ <xsd:element name="fullreviews" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
32
+ <xsd:element name="confirmstatusgroup" type="ConfirmStatusGroupType" minOccurs="1" maxOccurs="1"/>
33
+ <xsd:element name="taggroup" type="TagGroupType" minOccurs="0" maxOccurs="unbounded"/>
34
+ <xsd:element name="bottom_line_yes_votes" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
35
+ <xsd:element name="bottom_line_no_votes" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
36
+ <xsd:element name="customerimages" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
37
+ <xsd:element name="customervideos" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
38
+ <xsd:element name="total_questions" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
39
+ <xsd:element name="total_answers" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
40
+ <xsd:element name="inlinefiles" type="InlineFilesType" minOccurs="0" maxOccurs="1"/>
41
+ <xsd:element name="inlinequestionfiles" type="InlineQuestionFilesType" minOccurs="0" maxOccurs="1"/>
42
+ <xsd:element name="deleted_reviews" type="DeletedReviewsType" minOccurs="0" maxOccurs="1"/>
43
+ </xsd:sequence>
44
+ </xsd:extension>
45
+ </xsd:complexContent>
46
+ </xsd:complexType>
47
+
48
+ <xsd:complexType name="ProductWithReviews">
49
+ <xsd:complexContent>
50
+ <xsd:extension base="ProductType">
51
+ <xsd:sequence>
52
+ <xsd:element name="smallstarimagelocation" type="xsd:string" minOccurs="1" maxOccurs="1" />
53
+ <xsd:element name="largestarimagelocation" type="xsd:string" minOccurs="1" maxOccurs="1" />
54
+ <xsd:element name="newestreviewdate" type="xsd:date" minOccurs="1" maxOccurs="1"/>
55
+ <xsd:element name="oldestreviewdate" type="xsd:date" minOccurs="1" maxOccurs="1"/>
56
+ <xsd:element name="averageoverallrating" type="xsd:float" minOccurs="1" maxOccurs="1"/>
57
+ <xsd:element name="average_rating_decimal" type="xsd:float" minOccurs="1" maxOccurs="1"/>
58
+ <xsd:element name="fullreviews" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
59
+ <xsd:element name="confirmstatusgroup" type="ConfirmStatusGroupType" minOccurs="1" maxOccurs="1"/>
60
+ <xsd:element name="taggroup" type="TagGroupType" minOccurs="0" maxOccurs="unbounded"/>
61
+ <xsd:element name="bottom_line_yes_votes" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
62
+ <xsd:element name="bottom_line_no_votes" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
63
+ <xsd:element name="customerimages" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
64
+ <xsd:element name="customervideos" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
65
+ <xsd:element name="inlinefiles" type="InlineFilesType" minOccurs="0" maxOccurs="1"/>
66
+ <xsd:element name="deleted_reviews" type="DeletedReviewsType" minOccurs="0" maxOccurs="1"/>
67
+ </xsd:sequence>
68
+ </xsd:extension>
69
+ </xsd:complexContent>
70
+ </xsd:complexType>
71
+
72
+ <xsd:complexType name="ProductWithQuestions">
73
+ <xsd:complexContent>
74
+ <xsd:extension base="ProductType">
75
+ <xsd:sequence>
76
+ <xsd:element name="total_questions" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
77
+ <xsd:element name="total_answers" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
78
+ <xsd:element name="inlinequestionfiles" type="InlineQuestionFilesType" minOccurs="0" maxOccurs="1"/>
79
+ <xsd:element name="deleted_reviews" type="DeletedReviewsType" minOccurs="0" maxOccurs="1"/>
80
+ </xsd:sequence>
81
+ </xsd:extension>
82
+ </xsd:complexContent>
83
+ </xsd:complexType>
84
+
85
+ <xsd:complexType name="ConfirmStatusGroupType">
86
+ <xsd:sequence>
87
+ <xsd:element ref="confirmstatus" minOccurs="1" maxOccurs="unbounded"/>
88
+ </xsd:sequence>
89
+ </xsd:complexType>
90
+
91
+ <xsd:element name="confirmstatus" type="ConfirmStatusType" />
92
+
93
+ <xsd:simpleType name="ConfirmStatusType">
94
+ <xsd:restriction base="xsd:string">
95
+ <xsd:enumeration value="Verified Reviewer"/>
96
+ <xsd:enumeration value="Verified Purchaser"/>
97
+ <xsd:enumeration value="Unverified"/>
98
+ </xsd:restriction>
99
+ </xsd:simpleType>
100
+
101
+ <xsd:element name="tag" type="TagType" />
102
+
103
+ <xsd:complexType name="TagType">
104
+ <xsd:simpleContent>
105
+ <xsd:extension base="xsd:string">
106
+ <xsd:attribute name="isuseradded" type="xsd:boolean" use="required"/>
107
+ <xsd:attribute name="count" type="xsd:integer" use="required"/>
108
+ </xsd:extension>
109
+ </xsd:simpleContent>
110
+ </xsd:complexType>
111
+
112
+ <xsd:complexType name="TagGroupType">
113
+ <xsd:sequence>
114
+ <xsd:element name="tag" type="TagType" minOccurs="1" maxOccurs="unbounded"/>
115
+ </xsd:sequence>
116
+ <xsd:attribute name="name" type="xsd:string" />
117
+ <xsd:attribute name="key" type="xsd:string" />
118
+ </xsd:complexType>
119
+
120
+ <xsd:complexType name="InlineFilesType">
121
+ <xsd:sequence>
122
+ <xsd:element name="inlinefile" type="InlineFileType" minOccurs="1" maxOccurs="unbounded"/>
123
+ </xsd:sequence>
124
+ </xsd:complexType>
125
+
126
+ <xsd:complexType name="InlineFileType">
127
+ <xsd:simpleContent>
128
+ <xsd:extension base="xsd:string" >
129
+ <xsd:attribute name="reviewpage" type="xsd:integer" use="required"/>
130
+ </xsd:extension>
131
+ </xsd:simpleContent>
132
+ </xsd:complexType>
133
+
134
+ <xsd:complexType name="InlineQuestionFilesType">
135
+ <xsd:sequence>
136
+ <xsd:element name="inlinefile" type="InlineQuestionFileType" minOccurs="1" maxOccurs="unbounded"/>
137
+ </xsd:sequence>
138
+ </xsd:complexType>
139
+
140
+ <xsd:complexType name="InlineQuestionFileType">
141
+ <xsd:simpleContent>
142
+ <xsd:extension base="xsd:string" >
143
+ <xsd:attribute name="questionpage" type="xsd:integer" use="required"/>
144
+ </xsd:extension>
145
+ </xsd:simpleContent>
146
+ </xsd:complexType>
147
+
148
+ <xsd:complexType name="DeletedReviewsType">
149
+ <xsd:sequence>
150
+ <xsd:element name="deleted_review" type="DeletedReviewType" minOccurs="1" maxOccurs="unbounded"/>
151
+ </xsd:sequence>
152
+ </xsd:complexType>
153
+
154
+ <xsd:complexType name="DeletedReviewType">
155
+ <xsd:sequence>
156
+ <xsd:element name="id" type="xsd:long" />
157
+ <xsd:element name="merchant_review_id" type="xsd:long" />
158
+ <xsd:element name="deleted_date" type="xsd:date" />
159
+ </xsd:sequence>
160
+ </xsd:complexType>
161
+ </xsd:schema>
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+
3
+ class ConfigTest < ActiveSupport::TestCase
4
+
5
+ should "have merchant_group_id" do
6
+ PowerReviews::Config.merchant_group_id = 5
7
+ assert_equal PowerReviews::Config.merchant_group_id, 5
8
+ end
9
+
10
+ should "have site_id" do
11
+ PowerReviews::Config.site_id = 5
12
+ assert_equal PowerReviews::Config.site_id, 5
13
+ end
14
+
15
+ should "have review data path" do
16
+ assert_equal PowerReviews::Config.review_data_path, 'public/system/pwr'
17
+ PowerReviews::Config.review_data_path="test"
18
+ assert_equal 'test', PowerReviews::Config.review_data_path
19
+ end
20
+
21
+ end
@@ -0,0 +1,41 @@
1
+ require 'test_helper'
2
+
3
+ class ReviewDataTest < ActiveSupport::TestCase
4
+
5
+ should "load up review data" do
6
+
7
+ @review_data = PowerReviews::ReviewData.new(File.expand_path(__FILE__ + "/../../fixtures/rawdata"))
8
+ assert @review_data.summary_data.kind_of?(REXML::Document)
9
+
10
+ end
11
+
12
+ should "get summary data for page id" do
13
+
14
+ @summary = PowerReviews::ReviewData.summary('shadow')
15
+ assert_equal @summary.full_name, 'Shadow'
16
+ assert_equal @summary.average_rating, 5.0
17
+ assert_equal @summary.reviews, 1
18
+
19
+ end
20
+
21
+ context "with missing xml" do
22
+
23
+ setup do
24
+ PowerReviews::Config.review_data_path='/var/tmp'
25
+ PowerReviews::ReviewData.reload!
26
+ end
27
+
28
+ should "raise error when no review data" do
29
+ @data = PowerReviews::ReviewData.new(nil)
30
+ assert_raises PowerReviews::ReviewData::MissingData do
31
+ @data.summary('shadow')
32
+ end
33
+ end
34
+
35
+ should "return nil data" do
36
+ assert_nil PowerReviews::ReviewData.summary('shadow')
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+ require 'power_reviews/view_helpers'
3
+
4
+ class FakeController
5
+ include PowerReviews::ViewHelpers
6
+ end
7
+
8
+
9
+ class ViewHelpersText < ActiveSupport::TestCase
10
+
11
+ def controller
12
+ @controller ||= FakeController.new
13
+ end
14
+
15
+ setup do
16
+ PowerReviews::Config.review_data_path='test/fixtures/rawdata'
17
+ PowerReviews::ReviewData.reload!
18
+ end
19
+
20
+ should "have hReview helper" do
21
+
22
+ assert controller.power_reviews_hreview('shadow') =~ %r{<span class="fn">Shadow</span>}
23
+
24
+ end
25
+
26
+ end
@@ -2,7 +2,6 @@ require 'test_helper'
2
2
  require 'power_reviews'
3
3
 
4
4
  class PowerReviewsTest < ActiveSupport::TestCase
5
- # Replace this with your real tests.
6
5
  should "have itemdata with correct attributes" do
7
6
  item = PowerReviews::FeedItem.new
8
7
  assert PowerReviews::FeedItem::FIELDS.is_a?(Array)
metadata CHANGED
@@ -1,47 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: power_reviews
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Beau Collins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2009-09-29 00:00:00 -07:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: javan-whenever
11
+ date: 2014-01-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: whenever
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
17
20
  type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
25
- - !ruby/object:Gem::Dependency
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
26
28
  name: fastercsv
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
27
34
  type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: shoulda
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
35
69
  description: Tools and library for integrating Power Reviews into a rails website.
36
70
  email: beaucollins@gmail.com
37
71
  executables: []
38
-
39
72
  extensions: []
40
-
41
- extra_rdoc_files:
73
+ extra_rdoc_files:
42
74
  - README
43
- files:
44
- - .gitignore
75
+ files:
45
76
  - MIT-LICENSE
46
77
  - README
47
78
  - Rakefile
@@ -59,41 +90,42 @@ files:
59
90
  - lib/power_reviews/protocols/base.rb
60
91
  - lib/power_reviews/protocols/cp.rb
61
92
  - lib/power_reviews/protocols/ftp.rb
93
+ - lib/power_reviews/review_data.rb
62
94
  - lib/power_reviews/routes.rb
63
95
  - lib/power_reviews/sync.rb
64
96
  - lib/power_reviews/view_helpers.rb
65
97
  - power_reviews.gemspec
66
98
  - rails/init.rb
99
+ - test/fixtures/rawdata/review_data_complete.xml
100
+ - test/fixtures/rawdata/review_data_complete.xsd
101
+ - test/fixtures/rawdata/review_data_summary.xml
102
+ - test/fixtures/rawdata/review_data_summary.xsd
103
+ - test/power_reviews/config_test.rb
104
+ - test/power_reviews/review_data_test.rb
105
+ - test/power_reviews/view_helpers_test.rb
67
106
  - test/power_reviews_test.rb
68
107
  - test/test_helper.rb
69
- has_rdoc: true
70
108
  homepage: http://github.com/beaucollins/power_reviews
71
109
  licenses: []
72
-
110
+ metadata: {}
73
111
  post_install_message:
74
- rdoc_options:
75
- - --charset=UTF-8
76
- require_paths:
112
+ rdoc_options: []
113
+ require_paths:
77
114
  - lib
78
- required_ruby_version: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: "0"
83
- version:
84
- required_rubygems_version: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: "0"
89
- version:
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
90
125
  requirements: []
91
-
92
126
  rubyforge_project:
93
- rubygems_version: 1.3.5
127
+ rubygems_version: 2.2.1
94
128
  signing_key:
95
- specification_version: 3
129
+ specification_version: 4
96
130
  summary: Helps integrate Power Reviews into a rails site
97
- test_files:
98
- - test/power_reviews_test.rb
99
- - test/test_helper.rb
131
+ test_files: []
data/.gitignore DELETED
@@ -1 +0,0 @@
1
- pkg/*