dugway 0.12.1 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 027c6ffe1a9e8833dc30179327049c7aa2607712df02610c5a2667828432a84b
4
- data.tar.gz: b2c2e63788189f94637c8d977e969337b31b5922728e3119c522a39ae4f10002
3
+ metadata.gz: 3abee167dcd274b478a4e4b968547a267d43d02e61738e157dc15f90a8df7c78
4
+ data.tar.gz: 72c64774f1783f2c545570a44affe4a58592b92486b4c66d242d390239eee8ca
5
5
  SHA512:
6
- metadata.gz: 6ef192dcc976bf691486856528970cfee3e746aa82086730ee7104ce0abd5174f574a8dd199cf20cd1f72943c524ac0dba26f894c21946f051e4783f94402c64
7
- data.tar.gz: df22ae822edb930f937152806a74389ccd253ec7902834101c42cd8996822ab61bdd12f86dcb3c16d47efb5d91060a459dccb9ae33cbf5ea6c829da6406d3c89
6
+ metadata.gz: 95c00a871fdb4e1d8c66b51a14378bdd93e03b28a92a610f26858116918168c53c0af1963228a5c8dae5de7bbe618f11136b6744da392020fc9e6cd5d1617790
7
+ data.tar.gz: 1f5081eb808765394c6e4e1dfd285adab2a966cee94554f1bddcb2495cdc5f5d1d639396aa314da122d8343475e061e5a36c63c8c7e509b61d8efd8823cb9d61
data/README.md CHANGED
@@ -182,7 +182,7 @@ Run your theme in any browser by starting the Dugway server:
182
182
  dugway server
183
183
  ```
184
184
 
185
- By default this will serve your theme at http://0.0.0.0:9292. You can then stop
185
+ By default this will serve your theme at http://127.0.0.1:9292/. You can then stop
186
186
  the server by hitting CTRL+C.
187
187
 
188
188
  ### Pow
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
36
36
  s.add_dependency('thor', '~> 0.20.3')
37
37
  s.add_dependency('rubyzip', '~> 0.9.9')
38
38
  s.add_dependency('uglifier', '~> 4.1')
39
- s.add_dependency('thin', '~> 1.7.2')
39
+ s.add_dependency('thin', '~> 1.8.0')
40
40
  s.add_dependency('bigcartel-theme-fonts')
41
41
  s.add_dependency('bigcartel-currency-locales')
42
42
 
@@ -31,7 +31,7 @@ module Dugway
31
31
  end
32
32
 
33
33
  def shipping
34
- {
34
+ {
35
35
  'enabled' => false,
36
36
  'amount' => 0.0,
37
37
  'strict' => false,
@@ -40,14 +40,14 @@ module Dugway
40
40
  end
41
41
 
42
42
  def tax
43
- {
43
+ {
44
44
  'enabled' => false,
45
45
  'amount' => 0.0
46
46
  }
47
47
  end
48
48
 
49
49
  def discount
50
- {
50
+ {
51
51
  'enabled' => false,
52
52
  'pending' => false,
53
53
  'amount' => 0.0
@@ -22,14 +22,9 @@
22
22
  <label for="message">Message</label>
23
23
  {{ contact | contact_input: 'message' }}
24
24
  </li>
25
- <li>
26
- <label for="captcha">Spam check</label>
27
- <p>Please enter the characters from the image.</p>
28
- <div>{{ contact.captcha }}</div>
29
- {{ contact | contact_input: 'captcha' }}
30
- </li>
31
25
  <li>
32
26
  <button type="submit" name="submit" title="Send us an email">Send</button>
27
+ <div>{{ contact.recaptcha }}</div>
33
28
  </li>
34
29
  </ul>
35
30
  </form>
@@ -12,25 +12,19 @@ module Dugway
12
12
  'All fields are required'
13
13
  elsif param_does_not_match(:email, email_format)
14
14
  'Invalid email address'
15
- elsif param_does_not_match(:captcha, captcha_format)
16
- 'Spam check was incorrect'
17
15
  end
18
16
  end
19
17
 
20
18
  private
21
19
 
22
20
  def required_fields
23
- [ :name, :email, :subject, :message, :captcha ]
21
+ [ :name, :email, :subject, :message ]
24
22
  end
25
23
 
26
24
  def email_format
27
25
  /^([^@\s]+)@((?:[-a-zA-Z0-9]+\.)+[a-zA-Z]{2,})$/
28
26
  end
29
27
 
30
- def captcha_format
31
- /^rQ9pC$/i
32
- end
33
-
34
28
  def param_does_not_match(param_name, regex)
35
29
  !(params[param_name.to_sym] =~ regex)
36
30
  end
@@ -42,7 +42,7 @@ module Dugway
42
42
 
43
43
  nil
44
44
  end
45
-
45
+
46
46
  def method_missing(method, *args, &block)
47
47
  before_method(method.to_s)
48
48
  end
@@ -21,6 +21,15 @@ module Dugway
21
21
  %{<img id="captcha_image" src="https://s3.amazonaws.com/bigcartel/captcha/28e3d1288cbc70c0cd1a2d10845f8e11e1a90d14.png">}
22
22
  end
23
23
 
24
+ def recaptcha
25
+ @recaptcha ||= begin
26
+ html = "This site is protected by reCAPTCHA and the Google "
27
+ html += '<a href="https://policies.google.com/privacy">Privacy Policy</a> and '
28
+ html += '<a href="https://policies.google.com/terms">Terms of Service</a> apply.'
29
+ html
30
+ end
31
+ end
32
+
24
33
  def sent
25
34
  request.path == '/contact' && request.post? && errors.blank?
26
35
  end
@@ -4,6 +4,10 @@ module Dugway
4
4
  def all
5
5
  @all ||= source.select { |page| page['category'] == 'custom' }
6
6
  end
7
+
8
+ def cart
9
+ @cart ||= source.find { |page| page['permalink'] == 'cart' }
10
+ end
7
11
  end
8
12
  end
9
13
  end
@@ -68,7 +68,7 @@ module Dugway
68
68
 
69
69
  def search_terms
70
70
  params[:search]
71
- end
71
+ end
72
72
 
73
73
  def page
74
74
  if @context['internal'].present? && @context['internal'].has_key?('page') # has_key? here because 'page' will be nil for get blocks
@@ -7,22 +7,22 @@ module Dugway
7
7
 
8
8
  prev_label = prev_label.blank? ? paginate['previous']['title'] : prev_label
9
9
  if paginate['previous']['is_link']
10
- html << %(<a class="previous" href="#{ paginate['previous']['url'] }">#{ prev_label }</a>)
10
+ html << %(<a class="previous" href="#{ paginate['previous']['url'] }" aria-label="Go to previous page">#{ prev_label }</a>)
11
11
  else
12
12
  html << %(<span class="previous disabled">#{ prev_label }</span>)
13
13
  end
14
14
 
15
15
  paginate['parts'].each do |part|
16
16
  if part['is_link']
17
- html << %(<a href="#{ part['url'] }">#{ part['title'] }</a>)
17
+ html << %(<a href="#{ part['url'] }" aria-label="Go to page #{part['title']}">#{ part['title'] }</a>)
18
18
  else
19
- html << %(<span class="#{ part['title'] == paginate['current_page'].to_s ? 'current' : 'gap' }">#{ part['title'] }</span>)
19
+ html << build_non_link_span(part, paginate)
20
20
  end
21
21
  end
22
22
 
23
23
  next_label = next_label.blank? ? paginate['next']['title'] : next_label
24
24
  if paginate['next']['is_link']
25
- html << %(<a class="next" href="#{ paginate['next']['url'] }">#{ next_label }</a>)
25
+ html << %(<a class="next" href="#{ paginate['next']['url'] }" aria-label="Go to next page">#{ next_label }</a>)
26
26
  else
27
27
  html << %(<span class="next disabled">#{ next_label }</span>)
28
28
  end
@@ -30,6 +30,24 @@ module Dugway
30
30
  html << %(</div>)
31
31
  }.join(' ')
32
32
  end
33
+
34
+ private
35
+
36
+ def build_non_link_span(part, paginate)
37
+ is_current = is_current_page?(part, paginate)
38
+ span_class = is_current ? 'current' : 'gap'
39
+
40
+ span = %(<span )
41
+ span << %(class="#{span_class}" )
42
+ span << %(aria-label="Current page, page #{part['title']}") if is_current
43
+ span << %(>)
44
+ span << %(#{ part['title'] }</span>)
45
+ span
46
+ end
47
+
48
+ def is_current_page?(part, paginate)
49
+ part['title'] == paginate['current_page'].to_s
50
+ end
33
51
  end
34
52
  end
35
53
  end
@@ -28,7 +28,7 @@ module Dugway
28
28
  if name.is_a?(Drops::ThemeDrop)
29
29
  '/theme.js'
30
30
  elsif name == 'api'
31
- 'http://cache0.bigcartel.com/api/1/api.usd.js'
31
+ 'http://cache0.bigcartel.com/api/5/api.usd.js'
32
32
  else
33
33
  name
34
34
  end
@@ -1,3 +1,3 @@
1
1
  module Dugway
2
- VERSION = "0.12.1"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -16,18 +16,12 @@ feature 'Contact form' do
16
16
  expect(page).to have_content('Invalid email address')
17
17
  end
18
18
 
19
- scenario 'with an invalid captcha' do
20
- submit_contact_form(:captcha => 'blah')
21
- expect(page).to have_content('Spam check was incorrect')
22
- end
23
-
24
19
  def submit_contact_form(fields={})
25
20
  fields.reverse_merge!(
26
21
  :name => 'Joe',
27
22
  :email => 'joe@example.com',
28
23
  :subject => 'Testing',
29
24
  :message => 'Hi there',
30
- :captcha => 'rQ9pC'
31
25
  )
32
26
 
33
27
  visit '/contact'
@@ -36,7 +30,6 @@ feature 'Contact form' do
36
30
  fill_in 'Email', :with => fields[:email]
37
31
  fill_in 'Subject', :with => fields[:subject]
38
32
  fill_in 'Message', :with => fields[:message]
39
- fill_in 'Spam check', :with => fields[:captcha]
40
33
 
41
34
  click_button 'Send'
42
35
  end
@@ -50,7 +50,7 @@ feature 'Page rendering' do
50
50
  visit '/contact'
51
51
  expect(page).to have_content('Dugway') # layout.html
52
52
  expect(page).to have_content('Contact')
53
- expect(page).to have_content('Spam check')
53
+ expect(page).to have_content('protected by reCAPTCHA')
54
54
  end
55
55
 
56
56
  scenario 'maintenance.html' do
@@ -1 +1 @@
1
- {"category":"custom","content":"<p>We're really cool!</p>","permalink":"about-us","name":"About Us","id":95821979,"url":"/about-us"}
1
+ {"category":"custom","content":"<p>We're really cool!</p>","permalink":"about-us","name":"About Us","id":95821979,"url":"/about-us"}
@@ -22,14 +22,9 @@
22
22
  <label for="message">Message</label>
23
23
  {{ contact | contact_input: 'message' }}
24
24
  </li>
25
- <li>
26
- <label for="captcha">Spam check</label>
27
- <p>Please enter the characters from the image.</p>
28
- <div>{{ contact.captcha }}</div>
29
- {{ contact | contact_input: 'captcha' }}
30
- </li>
31
25
  <li>
32
26
  <button type="submit" name="submit" title="Send us an email">Send</button>
27
+ <div>{{ contact.recaptcha }}</div>
33
28
  </li>
34
29
  </ul>
35
30
  </form>
@@ -11,7 +11,6 @@ describe Dugway::ContactFormValidator do
11
11
  :email => "name@example.com",
12
12
  :subject => "subject",
13
13
  :message => "message",
14
- :captcha => "rQ9pc",
15
14
  }
16
15
  end
17
16
 
@@ -36,21 +35,11 @@ describe Dugway::ContactFormValidator do
36
35
  assert_required_fields_error
37
36
  end
38
37
 
39
- it "returns an error for a missing captcha" do
40
- validator.params[:captcha] = " "
41
- assert_required_fields_error
42
- end
43
-
44
38
  it "returns an error for invalid email format" do
45
39
  validator.params[:email] = "foo-at-foo-dot-net"
46
40
  expect(validator.error_message).to eq "Invalid email address"
47
41
  end
48
42
 
49
- it "returns an error for incorrect captcha" do
50
- validator.params[:captcha] = "oops"
51
- expect(validator.error_message).to eq "Spam check was incorrect"
52
- end
53
-
54
43
  def assert_required_fields_error
55
44
  expect(validator.error_message).to eql "All fields are required"
56
45
  end
@@ -13,7 +13,7 @@ describe Dugway::Drops::ContactDrop do
13
13
  Rack::MockRequest::DEFAULT_ENV.update({
14
14
  'PATH_INFO' => '/contact'
15
15
  })}
16
-
16
+
17
17
  let(:request) { Dugway::Request.new(env) }
18
18
 
19
19
  let(:errors) {
@@ -96,6 +96,12 @@ describe Dugway::Drops::ContactDrop do
96
96
  end
97
97
  end
98
98
 
99
+ describe "#recaptcha" do
100
+ it "returns the recaptcha branding text" do
101
+ contact.recaptcha.should == %{This site is protected by reCAPTCHA and the Google <a href="https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://policies.google.com/terms">Terms of Service</a> apply.}
102
+ end
103
+ end
104
+
99
105
  describe "#sent" do
100
106
  it "should return false before the form has been sent" do
101
107
  contact.sent.should be(false)
@@ -1,7 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Dugway::Drops::PagesDrop do
4
- let(:pages) { Dugway::Drops::PagesDrop.new(Dugway.store.pages.map { |p| Dugway::Drops::PageDrop.new(p) }) }
4
+ let(:pages) do
5
+ Dugway::Drops::PagesDrop.new(
6
+ Dugway.store.pages.map do |p|
7
+ case p["permalink"]
8
+ when "cart"
9
+ Dugway::Drops::CartDrop.new(p)
10
+ else
11
+ Dugway::Drops::PageDrop.new(p)
12
+ end
13
+ end
14
+ )
15
+ end
5
16
 
6
17
  describe "#all" do
7
18
  it "should return an array of all pages" do
@@ -15,6 +26,14 @@ describe Dugway::Drops::PagesDrop do
15
26
  end
16
27
  end
17
28
 
29
+ describe "#cart" do
30
+ it "returns the cart drop instead of the cart class instance" do
31
+ cart = pages.cart
32
+ cart.should be_an_instance_of(Dugway::Drops::CartDrop)
33
+ cart.name.should == 'Cart'
34
+ end
35
+ end
36
+
18
37
  describe "#permalink" do
19
38
  it "should return the page by permalink" do
20
39
  page = pages.contact
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dugway
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Big Cartel
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-06 00:00:00.000000000 Z
11
+ date: 2020-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -268,14 +268,14 @@ dependencies:
268
268
  requirements:
269
269
  - - "~>"
270
270
  - !ruby/object:Gem::Version
271
- version: 1.7.2
271
+ version: 1.8.0
272
272
  type: :runtime
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
276
  - - "~>"
277
277
  - !ruby/object:Gem::Version
278
- version: 1.7.2
278
+ version: 1.8.0
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: bigcartel-theme-fonts
281
281
  requirement: !ruby/object:Gem::Requirement
@@ -545,7 +545,7 @@ homepage: https://github.com/bigcartel/dugway
545
545
  licenses:
546
546
  - MIT
547
547
  metadata: {}
548
- post_install_message:
548
+ post_install_message:
549
549
  rdoc_options: []
550
550
  require_paths:
551
551
  - lib
@@ -560,8 +560,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
560
560
  - !ruby/object:Gem::Version
561
561
  version: '0'
562
562
  requirements: []
563
- rubygems_version: 3.0.1
564
- signing_key:
563
+ rubygems_version: 3.0.6
564
+ signing_key:
565
565
  specification_version: 4
566
566
  summary: Easily build and test Big Cartel themes.
567
567
  test_files: