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 +4 -4
- data/README.md +21 -8
- data/dugway.gemspec +4 -3
- data/lib/dugway/cart.rb +3 -3
- data/lib/dugway/cli/templates/source/contact.html +1 -6
- data/lib/dugway/contact_form_validator.rb +1 -7
- data/lib/dugway/liquid/drops/base_drop.rb +1 -1
- data/lib/dugway/liquid/drops/contact_drop.rb +9 -0
- data/lib/dugway/liquid/drops/pages_drop.rb +4 -0
- data/lib/dugway/liquid/drops/products_drop.rb +1 -1
- data/lib/dugway/version.rb +1 -1
- data/spec/features/contact_form_spec.rb +0 -7
- data/spec/features/page_rendering_spec.rb +1 -1
- data/spec/fixtures/store/page/about-us.json +1 -1
- data/spec/fixtures/theme/contact.html +1 -6
- data/spec/units/dugway/contact_form_validator_spec.rb +0 -11
- data/spec/units/dugway/liquid/drops/contact_drop_spec.rb +7 -1
- data/spec/units/dugway/liquid/drops/pages_drop_spec.rb +20 -1
- data/spec/units/dugway/theme_spec.rb +2 -2
- metadata +22 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cb1e44d43a95caa0c56269f23524e0c6915463eb376879feea61b1c6a839599f
|
|
4
|
+
data.tar.gz: 7b1e8861f1f51a62c253750c962767fb9d121b9b94656ba3ecb7269a310033f6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7dd48ecd97afdb589ffaae298157a773b61653ca3f7d10f80bb583ed1132d2a944a96e9db2d2e3c5efd232091e0d0c9b3bd795bc7b900ee8f633e1651564387e
|
|
7
|
+
data.tar.gz: 36384106c097c055325c807a24e97eb8686430768f66864fbffc1b4ed61e915d2fd3afb5210d022aada8799aa547ae4100153ff9c85f07ba02cdf9317a60c9e4
|
data/README.md
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
# Dugway [](https://travis-ci.org/bigcartel/dugway)
|
|
1
|
+
# Dugway [](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
|
|
7
|
-
CoffeeScript, Sass, and LESS.
|
|
6
|
+
browser, write code in your favorite editor, and use tools like
|
|
7
|
+
CoffeeScript, Sass, and LESS.
|
|
8
8
|
|
|
9
|
-
[
|
|
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
|
-
|
|
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).
|
|
26
|
-
|
|
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://
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
@@ -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
|
data/lib/dugway/version.rb
CHANGED
|
@@ -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('
|
|
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)
|
|
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
|
|
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
|
|
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.
|
|
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:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
292
|
+
version: 1.8.0
|
|
279
293
|
- !ruby/object:Gem::Dependency
|
|
280
294
|
name: bigcartel-theme-fonts
|
|
281
295
|
requirement: !ruby/object:Gem::Requirement
|