dugway 0.12.3 → 1.0.4

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: 4d4b19083d6ca54cd01c02838818a67437e42b289d41cba01f502b9037d6921e
4
- data.tar.gz: 886d1b3a6ed97edd75fd617c17671c196fc048ef3bd5323d0454d05d24f3ffdf
3
+ metadata.gz: cb1e44d43a95caa0c56269f23524e0c6915463eb376879feea61b1c6a839599f
4
+ data.tar.gz: 7b1e8861f1f51a62c253750c962767fb9d121b9b94656ba3ecb7269a310033f6
5
5
  SHA512:
6
- metadata.gz: ae4ac7698a7287aa79a97b630ec46272f7e81a036b2c45fb1b48398341545eadd412825a2dda85350cf3414fb34a88bb776dd97dc986726f1ff4f5418ee92816
7
- data.tar.gz: 4ed1fe5591df26ffbd2cebb3b2d714909490c381d262b69bff1fa1e9593b3cdb63b156ba183a3b4c530cd1d2fe4b5ff588da0f69ae9a67af19605c2687d20729
6
+ metadata.gz: 7dd48ecd97afdb589ffaae298157a773b61653ca3f7d10f80bb583ed1132d2a944a96e9db2d2e3c5efd232091e0d0c9b3bd795bc7b900ee8f633e1651564387e
7
+ data.tar.gz: 36384106c097c055325c807a24e97eb8686430768f66864fbffc1b4ed61e915d2fd3afb5210d022aada8799aa547ae4100153ff9c85f07ba02cdf9317a60c9e4
data/README.md CHANGED
@@ -1,12 +1,13 @@
1
- # Dugway [![Build Status](https://travis-ci.org/bigcartel/dugway.png?branch=master)](https://travis-ci.org/bigcartel/dugway) [![Gem Version](https://badge.fury.io/rb/dugway.png)](http://badge.fury.io/rb/dugway)
1
+ # Dugway [![Build Status](https://travis-ci.org/bigcartel/dugway.png?branch=master)](https://travis-ci.org/bigcartel/dugway)
2
2
 
3
3
  **_The easy way to build Big Cartel themes._**
4
4
 
5
5
  Dugway allows you to run your Big Cartel theme on your computer, test it in any
6
- browser, write code in your favorite editor, and use fancy new tools like
7
- CoffeeScript, Sass, and LESS. It's awesome.
6
+ browser, write code in your favorite editor, and use tools like
7
+ CoffeeScript, Sass, and LESS.
8
8
 
9
- [![Walkthrough](http://cl.ly/image/101e1z3Y3B1w/Screen%20Shot%202013-04-01%20at%205.04.40%20PM.png)](https://vimeo.com/bigcartel/dugway)
9
+ - [Dugway on RubyGems.org](https://rubygems.org/gems/dugway)
10
+ - [Walkthrough video](https://vimeo.com/bigcartel/dugway)
10
11
 
11
12
  ## Disclaimer
12
13
 
@@ -20,10 +21,22 @@ individually in the Big Cartel admin._
20
21
 
21
22
  ## Install
22
23
 
23
- Dugway is Ruby gem so you'll need to have Ruby 2.0+ installed. Ruby is
24
+ ### Install Ruby
25
+
26
+ Dugway is Ruby gem so you'll need to have Ruby installed. Ruby is
24
27
  usually pre-installed on Mac OS X and Linux, and Windows users can install it
25
- using [RubyInstaller](http://rubyinstaller.org). From there, simply install the
26
- **dugway** gem from the terminal.
28
+ using [RubyInstaller](http://rubyinstaller.org).
29
+
30
+ Supported Ruby versions:
31
+
32
+ - 2.3
33
+ - 2.4
34
+ - 2.5
35
+ - 2.6
36
+
37
+ ### Install Dugway
38
+
39
+ From there, simply install the **dugway** gem from the terminal.
27
40
 
28
41
  ```
29
42
  gem install dugway
@@ -182,7 +195,7 @@ Run your theme in any browser by starting the Dugway server:
182
195
  dugway server
183
196
  ```
184
197
 
185
- By default this will serve your theme at http://0.0.0.0:9292. You can then stop
198
+ By default this will serve your theme at http://127.0.0.1:9292/. You can then stop
186
199
  the server by hitting CTRL+C.
187
200
 
188
201
  ### Pow
data/dugway.gemspec CHANGED
@@ -23,11 +23,12 @@ Gem::Specification.new do |s|
23
23
  s.add_dependency('rack-mount', '~> 0.8.3')
24
24
  s.add_dependency('activesupport', '~> 5.2')
25
25
  s.add_dependency('liquid', '~> 3.0.6')
26
+ s.add_dependency('bigdecimal', '~> 1.4.4')
26
27
  s.add_dependency('coffee-script', '~> 2.4.1')
27
- s.add_dependency('sass', '~> 3.2.5')
28
+ s.add_dependency('sass', '~> 3.4.25')
28
29
  s.add_dependency('sprockets', '~> 2.0')
29
30
  s.add_dependency('sprockets-sass', '~> 1.3.1')
30
- s.add_dependency('compass', '~> 0.12.2')
31
+ s.add_dependency('compass', '~> 1.0.3')
31
32
  s.add_dependency('httparty', '~> 0.10.0')
32
33
  s.add_dependency('better_errors', '~> 0.9.0')
33
34
  s.add_dependency('will_paginate', '~> 3.0.4')
@@ -36,7 +37,7 @@ Gem::Specification.new do |s|
36
37
  s.add_dependency('thor', '~> 0.20.3')
37
38
  s.add_dependency('rubyzip', '~> 0.9.9')
38
39
  s.add_dependency('uglifier', '~> 4.1')
39
- s.add_dependency('thin', '~> 1.7.2')
40
+ s.add_dependency('thin', '~> 1.8.0')
40
41
  s.add_dependency('bigcartel-theme-fonts')
41
42
  s.add_dependency('bigcartel-currency-locales')
42
43
 
data/lib/dugway/cart.rb CHANGED
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Dugway
2
- VERSION = "0.12.3"
2
+ VERSION = "1.0.4"
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
@@ -118,7 +118,7 @@ describe Dugway::Theme do
118
118
  end
119
119
 
120
120
  it "should sprocketize and liquify theme.css" do
121
- theme.file_content('theme.css').gsub(/\s+/, '').should == %{html,body{height:100%;}a{background:lime;color:red;}footercitea{background:url(/images/bc_badge.png)no-repeat;}/**/}
121
+ theme.file_content('theme.css').gsub(/\s+/, '').should == %{html,body{height:100%;}a{background:#0f0;color:red;}footercitea{background:url(/images/bc_badge.png)no-repeat;}/**/}
122
122
  end
123
123
  end
124
124
 
@@ -134,7 +134,7 @@ describe Dugway::Theme do
134
134
  end
135
135
 
136
136
  it "should sprocketize and not liquify theme.css" do
137
- theme.build_file('theme.css').gsub(/\s+/, '').should == %{html,body{height:100%;}a{background:lime;color:{{theme.link_color}};}footercitea{background:url({{'bc_badge.png'|theme_image_url}})no-repeat;}/**/}
137
+ theme.build_file('theme.css').gsub(/\s+/, '').should == %{html,body{height:100%;}a{background:#0f0;color:{{theme.link_color}};}footercitea{background:url({{'bc_badge.png'|theme_image_url}})no-repeat;}/**/}
138
138
  end
139
139
  end
140
140
 
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.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Big Cartel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-17 00:00:00.000000000 Z
11
+ date: 2021-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.0.6
83
+ - !ruby/object:Gem::Dependency
84
+ name: bigdecimal
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.4.4
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.4.4
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: coffee-script
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +114,14 @@ dependencies:
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 3.2.5
117
+ version: 3.4.25
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 3.2.5
124
+ version: 3.4.25
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: sprockets
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +156,14 @@ dependencies:
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: 0.12.2
159
+ version: 1.0.3
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: 0.12.2
166
+ version: 1.0.3
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: httparty
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -268,14 +282,14 @@ dependencies:
268
282
  requirements:
269
283
  - - "~>"
270
284
  - !ruby/object:Gem::Version
271
- version: 1.7.2
285
+ version: 1.8.0
272
286
  type: :runtime
273
287
  prerelease: false
274
288
  version_requirements: !ruby/object:Gem::Requirement
275
289
  requirements:
276
290
  - - "~>"
277
291
  - !ruby/object:Gem::Version
278
- version: 1.7.2
292
+ version: 1.8.0
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: bigcartel-theme-fonts
281
295
  requirement: !ruby/object:Gem::Requirement