spree-last-address 1.0.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +8 -3
- data/.rspec +1 -0
- data/.travis.yml +14 -0
- data/CONTRIBUTING.md +28 -0
- data/Gemfile +3 -0
- data/Guardfile +6 -0
- data/{LICENSE → LICENSE.md} +7 -4
- data/README.md +38 -22
- data/Rakefile +15 -1
- data/app/assets/javascripts/store/spree_last_address.js +1 -0
- data/app/assets/stylesheets/store/spree_last_address.css +3 -0
- data/app/controllers/spree/checkout_controller_decorator.rb +17 -4
- data/lib/generators/spree_last_address/install/install_generator.rb +15 -0
- data/lib/spree_last_address/engine.rb +17 -0
- data/lib/spree_last_address/version.rb +12 -1
- data/lib/spree_last_address.rb +3 -26
- data/script/rails +7 -0
- data/spec/controllers/spree/checkout_controller_spec.rb +51 -0
- data/spec/features/last_address_spec.rb +72 -0
- data/spec/spec_helper.rb +26 -0
- data/spec/support/capybara.rb +7 -0
- data/spec/support/database_cleaner.rb +18 -0
- data/spec/support/factory_girl.rb +5 -0
- data/spec/support/spree.rb +10 -0
- data/spree_last_address.gemspec +30 -7
- metadata +246 -11
- data/lib/tasks/install.rake +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56b3322ff09885e5c6a532be4579bde3168db6be
|
4
|
+
data.tar.gz: f5183b21aa0c33f2b54cbc9716806b950de55a20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9a476a3484b3a46fdf7c7f03ed0f84fa8ec250739eb632b351ec4599f5c3c0e34930e758575aab4d0c44aab2fe6a202c10f8979d86cc6117cff8215341169a3
|
7
|
+
data.tar.gz: ad55423b740f2a0ef735dee25bb11d15ec24ac940c639b1a82c4dad80eb71f339bb469155d95e56571aa45679a70758f0bb6e71c47128df2c96bb3877aef7f9f
|
data/.gitignore
CHANGED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.travis.yml
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
In the spirit of [free software][1], **everyone** is encouraged to help improve this project.
|
4
|
+
|
5
|
+
Here are some ways *you* can contribute:
|
6
|
+
|
7
|
+
* by using prerelease versions
|
8
|
+
* by reporting [bugs][2]
|
9
|
+
* by suggesting new features
|
10
|
+
* by writing or editing documentation
|
11
|
+
* by writing specifications
|
12
|
+
* by writing code (*no patch is too small*: fix typos, add comments, clean up inconsistent whitespace)
|
13
|
+
* by refactoring code
|
14
|
+
* by resolving [issues][2]
|
15
|
+
* by reviewing patches
|
16
|
+
|
17
|
+
Starting point:
|
18
|
+
|
19
|
+
* Fork the repo
|
20
|
+
* Clone your repo
|
21
|
+
* Run `bundle install`
|
22
|
+
* Run `bundle exec rake test_app` to create the test application in `spec/test_app`
|
23
|
+
* Make your changes
|
24
|
+
* Ensure specs pass by running `bundle exec rspec spec`
|
25
|
+
* Submit your pull request
|
26
|
+
|
27
|
+
[1]: http://www.fsf.org/licensing/essays/free-sw.html
|
28
|
+
[2]: https://github.com/futhr/spree-last-address/issues
|
data/Gemfile
CHANGED
data/Guardfile
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
guard 'rspec', cmd: 'bundle exec rspec' do
|
2
|
+
watch('spec/spec_helper.rb') { 'spec' }
|
3
|
+
watch(%r{^spec/(.+)_spec\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
4
|
+
watch(%r{^(app|lib)/(.+)(\.rb|\.erb)$}) { |m| "spec/#{m[2]}_spec.rb" }
|
5
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb" }
|
6
|
+
end
|
data/{LICENSE → LICENSE.md}
RENAMED
@@ -1,3 +1,6 @@
|
|
1
|
+
Copyright (c) 2010-2014 Tobias Bohwalli, Torsten Rüger, and other contributors.
|
2
|
+
All rights reserved.
|
3
|
+
|
1
4
|
Redistribution and use in source and binary forms, with or without modification,
|
2
5
|
are permitted provided that the following conditions are met:
|
3
6
|
|
@@ -6,9 +9,9 @@ are permitted provided that the following conditions are met:
|
|
6
9
|
* Redistributions in binary form must reproduce the above copyright notice,
|
7
10
|
this list of conditions and the following disclaimer in the documentation
|
8
11
|
and/or other materials provided with the distribution.
|
9
|
-
* Neither the name
|
10
|
-
|
11
|
-
|
12
|
+
* Neither the name Spree nor the names of its contributors may be used to
|
13
|
+
endorse or promote products derived from this software without specific
|
14
|
+
prior written permission.
|
12
15
|
|
13
16
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
14
17
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
@@ -20,4 +23,4 @@ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
20
23
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
21
24
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
22
25
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
23
|
-
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
26
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
CHANGED
@@ -1,31 +1,47 @@
|
|
1
|
-
Last Address
|
2
|
-
================================
|
1
|
+
# Spree Last Address
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
[![Build Status](https://api.travis-ci.org/futhr/spree-last-address.png?branch=2-0-stable)](http://travis-ci.org/futhr/spree-last-address)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/futhr/spree-last-address.png)](https://codeclimate.com/github/futhr/spree-last-address)
|
5
|
+
[![Coverage Status](https://coveralls.io/repos/futhr/spree-last-address/badge.png?branch=2-0-stable)](https://coveralls.io/r/futhr/spree-last-address)
|
6
|
+
[![Gem Version](https://badge.fury.io/rb/spree-last-address.png)](http://badge.fury.io/rb/spree-last-address)
|
6
7
|
|
7
|
-
|
8
|
-
unnecessary typing make them more likely to bounce instead of completing the order.)
|
8
|
+
During checkout, causes the address to be prefilled with the address from their most recent order or the user’s saved address (if available).
|
9
9
|
|
10
|
-
|
11
|
-
`user.bill_address`/`user.ship_address`), and the user has set a preferred address for their
|
12
|
-
account, that address will take priority and be used instead of the address from their most recent
|
13
|
-
order. (Similar to [spree-default-addresses](https://github.com/swistak/spree-default-addresses).)
|
10
|
+
This relieves the customer of having to type in his address again on a second order. (The unnecessary typing make them more likely to bounce instead of completing the order.)
|
14
11
|
|
15
|
-
|
16
|
-
provided for the `Spree::User` model by the spree_auth_devise gem . If those associations are not
|
17
|
-
available or if the user doesn't have a saved address (which will be the case unless you've provided
|
18
|
-
a way in your app to set an address), then it will just use the address from user's most recent
|
19
|
-
order.
|
12
|
+
If your app allows a user to set and edit their "preferred" or "default" address (as reflected by `user.bill_address`/`user.ship_address`), and the user has set a preferred address for their account, that address will take priority and be used instead of the address from their most recent order. (Similar to [spree-default-addresses][1].)
|
20
13
|
|
21
|
-
|
22
|
-
============
|
14
|
+
As of Spree 1.2, the `belongs_to :bill_address` and `belongs_to :ship_address` associations are provided for the `Spree::User` model by the [spree_auth_devise][2] gem. If those associations are not available or if the user doesn't have a saved address (which will be the case unless you've provided a way in your app to set an address), then it will just use the address from user's most recent order.
|
23
15
|
|
24
|
-
|
16
|
+
---
|
25
17
|
|
26
|
-
|
18
|
+
## Installing
|
27
19
|
|
28
|
-
|
29
|
-
|
20
|
+
Add to your `Gemfile`
|
21
|
+
```ruby
|
22
|
+
gem 'spree_last_address', '~> 2.0.0'
|
23
|
+
```
|
30
24
|
|
31
|
-
|
25
|
+
Run
|
26
|
+
|
27
|
+
bundle install
|
28
|
+
|
29
|
+
---
|
30
|
+
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
See corresponding [contribution guidelines][3].
|
34
|
+
|
35
|
+
---
|
36
|
+
|
37
|
+
## License
|
38
|
+
|
39
|
+
Copyright (c) 2010-2014 [Tobias Bohwalli][4], [Torsten Rüger][5], and other [contributors][6], released under the [New BSD License][7]
|
40
|
+
|
41
|
+
[1]: https://github.com/swistak/spree-default-addresses
|
42
|
+
[2]: https://github.com/spree/spree_auth_devise
|
43
|
+
[3]: https://github.com/futhr/spree-last-address/blob/master/CONTRIBUTING.md
|
44
|
+
[4]: https://github.com/futhr
|
45
|
+
[5]: https://github.com/dancinglightning
|
46
|
+
[6]: https://github.com/futhr/spree-last-address/graphs/contributors
|
47
|
+
[7]: https://github.com/futhr/spree-last-address/blob/master/LICENSE.md
|
data/Rakefile
CHANGED
@@ -1 +1,15 @@
|
|
1
|
-
require 'bundler
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
require 'spree/testing_support/common_rake'
|
6
|
+
|
7
|
+
RSpec::Core::RakeTask.new
|
8
|
+
|
9
|
+
task default: [:spec]
|
10
|
+
|
11
|
+
desc 'Generates a dummy app for testing'
|
12
|
+
task :test_app do
|
13
|
+
ENV['LIB_NAME'] = 'spree_last_address'
|
14
|
+
Rake::Task['common:test_app'].invoke
|
15
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require store/spree_frontend
|
@@ -1,15 +1,28 @@
|
|
1
1
|
module Spree
|
2
2
|
CheckoutController.class_eval do
|
3
3
|
|
4
|
-
|
4
|
+
private
|
5
5
|
|
6
6
|
def before_address
|
7
7
|
return if @order.bill_address or @order.ship_address
|
8
|
-
|
9
|
-
|
8
|
+
|
9
|
+
last_used_bill_address, last_used_ship_address = find_last_used_addresses(@order.email)
|
10
|
+
|
11
|
+
if spree_current_user.respond_to?(:bill_address) && spree_current_user.respond_to?(:ship_address)
|
12
|
+
preferred_bill_address, preferred_ship_address = spree_current_user.bill_address, spree_current_user.ship_address
|
13
|
+
end
|
14
|
+
|
10
15
|
@order.bill_address ||= preferred_bill_address || last_used_bill_address || Address.default
|
11
16
|
@order.ship_address ||= preferred_ship_address || last_used_ship_address || Address.default
|
12
17
|
end
|
13
18
|
|
19
|
+
def find_last_used_addresses(email)
|
20
|
+
past = Spree::Order.order('id desc').where(email: email).where('state != "cart"').limit(8)
|
21
|
+
if order = past.detect(&:bill_address)
|
22
|
+
bill_address = order.bill_address.clone if order.bill_address
|
23
|
+
ship_address = order.ship_address.clone if order.ship_address
|
24
|
+
end
|
25
|
+
return bill_address, ship_address
|
26
|
+
end
|
14
27
|
end
|
15
|
-
end
|
28
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module SpreeLastAddress
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
class_option :auto_run_migrations, type: :boolean, default: false
|
5
|
+
|
6
|
+
def add_javascripts
|
7
|
+
append_file 'app/assets/javascripts/store/all.js', "//= require store/spree_last_address\n"
|
8
|
+
end
|
9
|
+
|
10
|
+
def add_stylesheets
|
11
|
+
inject_into_file 'app/assets/stylesheets/store/all.css', " *= require store/spree_last_address\n", before: /\*\//, verbose: true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module SpreeLastAddress
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
require 'spree/core'
|
4
|
+
isolate_namespace Spree
|
5
|
+
engine_name 'spree_last_address'
|
6
|
+
|
7
|
+
config.autoload_paths += %W(#{config.root}/lib)
|
8
|
+
|
9
|
+
def self.activate
|
10
|
+
Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
|
11
|
+
Rails.configuration.cache_classes ? require(c) : load(c)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
config.to_prepare &method(:activate).to_proc
|
16
|
+
end
|
17
|
+
end
|
@@ -1,5 +1,16 @@
|
|
1
1
|
module SpreeLastAddress
|
2
|
+
|
3
|
+
# Returns the version of the currently loaded SpreeLastAddress as a <tt>Gem::Version</tt>
|
2
4
|
def self.version
|
3
|
-
|
5
|
+
Gem::Version.new VERSION::STRING
|
6
|
+
end
|
7
|
+
|
8
|
+
module VERSION
|
9
|
+
MAJOR = 2
|
10
|
+
MINOR = 0
|
11
|
+
TINY = 0
|
12
|
+
PRE = nil
|
13
|
+
|
14
|
+
STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
|
4
15
|
end
|
5
16
|
end
|
data/lib/spree_last_address.rb
CHANGED
@@ -1,27 +1,4 @@
|
|
1
|
+
require 'spree_core'
|
1
2
|
require 'spree_last_address/version'
|
2
|
-
|
3
|
-
|
4
|
-
class Engine < Rails::Engine
|
5
|
-
|
6
|
-
config.autoload_paths += %W(#{config.root}/lib)
|
7
|
-
|
8
|
-
def self.activate
|
9
|
-
Dir.glob(File.join(File.dirname(__FILE__), '../app/**/*_decorator*.rb')) do |c|
|
10
|
-
Rails.env.production? ? require(c) : load(c)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
config.to_prepare &method(:activate).to_proc
|
15
|
-
end
|
16
|
-
|
17
|
-
class << self
|
18
|
-
def find_last_used_addresses(email)
|
19
|
-
past = Spree::Order.order("id desc").where(:email => email).where("state != 'cart'").limit(8)
|
20
|
-
if order = past.detect(&:bill_address)
|
21
|
-
bill_address = order.bill_address.clone if order.bill_address
|
22
|
-
ship_address = order.ship_address.clone if order.ship_address
|
23
|
-
end
|
24
|
-
return bill_address, ship_address
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
3
|
+
require 'spree_last_address/engine'
|
4
|
+
require 'coffee_script'
|
data/script/rails
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Spree::CheckoutController do
|
4
|
+
stub_authorization!
|
5
|
+
|
6
|
+
let(:token) { 'some_token' }
|
7
|
+
let(:user) { create(:user, email: 'ryan@example.com') }
|
8
|
+
let(:order) { create(:order_with_totals) }
|
9
|
+
|
10
|
+
let(:address_params) do
|
11
|
+
address = build(:address)
|
12
|
+
address.attributes.except('created_at', 'updated_at')
|
13
|
+
end
|
14
|
+
|
15
|
+
before do
|
16
|
+
controller.stub spree_current_user: user
|
17
|
+
controller.stub current_order: order
|
18
|
+
end
|
19
|
+
|
20
|
+
context '#before_address' do
|
21
|
+
it 'return nil if order.bill_address is not nil' do
|
22
|
+
order.bill_address = create(:address)
|
23
|
+
spree_get :edit, state: 'address'
|
24
|
+
expect(controller.instance_eval{ @before_address }).to be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'return nil if order.ship_address is not nil' do
|
28
|
+
order.ship_address = create(:address)
|
29
|
+
spree_get :edit, state: 'address'
|
30
|
+
expect(controller.instance_eval{ @before_address }).to be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'return last saved bill_address and ship_address of order' do
|
34
|
+
# save the last address when you visit checkout/delivery
|
35
|
+
spree_post :update, {
|
36
|
+
state: 'address',
|
37
|
+
order: {
|
38
|
+
bill_address_attributes: address_params,
|
39
|
+
use_billing: true
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
# if you visit checkout/address, then last address will be appeared
|
44
|
+
order.bill_address = nil
|
45
|
+
order.ship_address = nil
|
46
|
+
spree_get :edit, state: 'address'
|
47
|
+
controller.instance_eval{ @before_address }
|
48
|
+
expect(order.bill_address).not_to be_nil
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
feature 'Last Address', :js do
|
4
|
+
stub_authorization!
|
5
|
+
|
6
|
+
given!(:user) { create(:user) }
|
7
|
+
given!(:product) { create(:product) }
|
8
|
+
given(:address) { build(:address) }
|
9
|
+
|
10
|
+
background do
|
11
|
+
add_product_to_cart
|
12
|
+
click_button 'Checkout'
|
13
|
+
|
14
|
+
sign_in_as! user
|
15
|
+
|
16
|
+
Spree::Order.last.update_column(:email, user.email)
|
17
|
+
|
18
|
+
fill_in_address 'bill'
|
19
|
+
uncheck 'order_use_billing'
|
20
|
+
fill_in_address 'ship'
|
21
|
+
|
22
|
+
click_button 'Save and Continue'
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'visit address again,' do
|
26
|
+
scenario 'shows the last saved address info' do
|
27
|
+
add_product_to_cart
|
28
|
+
click_button 'Checkout'
|
29
|
+
|
30
|
+
check_address_info 'bill'
|
31
|
+
uncheck 'order_use_billing'
|
32
|
+
check_address_info 'ship'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def fill_in_address(kind)
|
37
|
+
addr = "order_#{kind}_address_attributes_"
|
38
|
+
fill_in "#{addr}lastname", with: address.firstname
|
39
|
+
fill_in "#{addr}firstname", with: address.lastname
|
40
|
+
fill_in "#{addr}address1", with: address.address1
|
41
|
+
fill_in "#{addr}address2", with: address.address2
|
42
|
+
fill_in "#{addr}city", with: address.city
|
43
|
+
fill_in "#{addr}zipcode", with: address.zipcode
|
44
|
+
fill_in "#{addr}phone", with: address.phone
|
45
|
+
select 'United States of America', from: "#{addr}country_id"
|
46
|
+
select 'Alabama', from: "#{addr}state_id", match: :first
|
47
|
+
end
|
48
|
+
|
49
|
+
def check_address_info(kind)
|
50
|
+
addr = "order_#{kind}_address_attributes_"
|
51
|
+
find("##{addr}lastname")['value'].should eq address.firstname
|
52
|
+
find("##{addr}firstname")['value'].should eq address.lastname
|
53
|
+
find("##{addr}address1")['value'].should eq address.address1
|
54
|
+
find("##{addr}address2")['value'].should eq address.address2
|
55
|
+
find("##{addr}city")['value'].should eq address.city
|
56
|
+
find("##{addr}zipcode")['value'].should eq address.zipcode
|
57
|
+
find("##{addr}phone")['value'].should eq address.phone
|
58
|
+
find_field("#{addr}country_id").value.should eq '1'
|
59
|
+
end
|
60
|
+
|
61
|
+
def add_product_to_cart
|
62
|
+
visit spree.root_path
|
63
|
+
click_link product.name
|
64
|
+
click_button 'add-to-cart-button'
|
65
|
+
end
|
66
|
+
|
67
|
+
def sign_in_as!(user)
|
68
|
+
fill_in 'spree_user_email', with: user.email
|
69
|
+
fill_in 'spree_user_password', with: 'secret'
|
70
|
+
click_button 'Login'
|
71
|
+
end
|
72
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
4
|
+
SimpleCov::Formatter::HTMLFormatter,
|
5
|
+
Coveralls::SimpleCov::Formatter
|
6
|
+
]
|
7
|
+
SimpleCov.start do
|
8
|
+
add_filter '/spec/'
|
9
|
+
add_group 'Controllers', 'app/controllers'
|
10
|
+
add_group 'Libraries', 'lib'
|
11
|
+
end
|
12
|
+
|
13
|
+
ENV['RAILS_ENV'] = 'test'
|
14
|
+
|
15
|
+
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
16
|
+
|
17
|
+
require 'rspec/rails'
|
18
|
+
require 'ffaker'
|
19
|
+
|
20
|
+
RSpec.configure do |config|
|
21
|
+
config.mock_with :rspec
|
22
|
+
config.use_transactional_fixtures = false
|
23
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
24
|
+
end
|
25
|
+
|
26
|
+
Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'database_cleaner'
|
2
|
+
|
3
|
+
RSpec.configure do |config|
|
4
|
+
|
5
|
+
config.before :suite do
|
6
|
+
DatabaseCleaner.strategy = :transaction
|
7
|
+
DatabaseCleaner.clean_with :truncation
|
8
|
+
end
|
9
|
+
|
10
|
+
config.before do
|
11
|
+
DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
|
12
|
+
DatabaseCleaner.start
|
13
|
+
end
|
14
|
+
|
15
|
+
config.after do
|
16
|
+
DatabaseCleaner.clean
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'spree/testing_support/factories'
|
2
|
+
require 'spree/testing_support/controller_requests'
|
3
|
+
require 'spree/testing_support/authorization_helpers'
|
4
|
+
require 'spree/testing_support/url_helpers'
|
5
|
+
require 'spree/testing_support/capybara_ext'
|
6
|
+
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.include Spree::TestingSupport::ControllerRequests
|
9
|
+
config.include Spree::TestingSupport::UrlHelpers
|
10
|
+
end
|
data/spree_last_address.gemspec
CHANGED
@@ -1,19 +1,42 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib/', __FILE__)
|
3
|
+
$:.unshift lib unless $:.include?(lib)
|
4
|
+
|
3
5
|
require 'spree_last_address/version'
|
4
6
|
|
5
7
|
Gem::Specification.new do |s|
|
6
8
|
s.platform = Gem::Platform::RUBY
|
7
9
|
s.name = 'spree-last-address'
|
8
10
|
s.version = SpreeLastAddress.version
|
9
|
-
s.summary =
|
10
|
-
s.description =
|
11
|
+
s.summary = 'Prefill address with last-used address'
|
12
|
+
s.description = %q{During checkout, causes the address to be prefilled with the address from their most recent order or the user's saved address.}
|
13
|
+
s.required_ruby_version = '>= 1.9.3'
|
11
14
|
|
12
|
-
s.
|
13
|
-
s.email = '
|
15
|
+
s.authors = ['Tobias Bohwalli', 'Torsten Rüger']
|
16
|
+
s.email = 'hi@futhr.io'
|
17
|
+
s.homepage = 'http://github.com/futhr/spree_last_address'
|
18
|
+
s.license = %q{BSD-3}
|
14
19
|
|
15
20
|
s.files = `git ls-files`.split("\n")
|
21
|
+
s.test_files = `git ls-files -- spec/*`.split("\n")
|
16
22
|
s.require_path = 'lib'
|
23
|
+
s.requirements << 'none'
|
24
|
+
|
25
|
+
s.add_runtime_dependency 'spree_core', '~> 2.0.0'
|
17
26
|
|
18
|
-
s.
|
27
|
+
s.add_development_dependency 'capybara', '~> 2.2.1'
|
28
|
+
s.add_development_dependency 'poltergeist', '1.5.0'
|
29
|
+
s.add_development_dependency 'selenium-webdriver'
|
30
|
+
s.add_development_dependency 'factory_girl', '~> 4.4'
|
31
|
+
s.add_development_dependency 'ffaker'
|
32
|
+
s.add_development_dependency 'rspec-rails', '~> 2.14'
|
33
|
+
s.add_development_dependency 'sqlite3', '~> 1.3.9'
|
34
|
+
s.add_development_dependency 'simplecov', '~> 0.7.1'
|
35
|
+
s.add_development_dependency 'database_cleaner', '~> 1.2.0'
|
36
|
+
s.add_development_dependency 'coffee-rails', '~> 3.2.2'
|
37
|
+
s.add_development_dependency 'sass-rails', '~> 3.2.6'
|
38
|
+
s.add_development_dependency 'pry-rails'
|
39
|
+
s.add_development_dependency 'guard-rspec'
|
40
|
+
s.add_development_dependency 'launchy'
|
41
|
+
s.add_development_dependency 'coveralls'
|
19
42
|
end
|
metadata
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree-last-address
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Tobias Bohwalli
|
7
8
|
- Torsten Rüger
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
@@ -16,33 +17,259 @@ dependencies:
|
|
16
17
|
requirements:
|
17
18
|
- - ~>
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
+
version: 2.0.0
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
25
|
- - ~>
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
+
version: 2.0.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: capybara
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 2.2.1
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 2.2.1
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: poltergeist
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.5.0
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.5.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: selenium-webdriver
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: factory_girl
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '4.4'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '4.4'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: ffaker
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: rspec-rails
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ~>
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '2.14'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ~>
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '2.14'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: sqlite3
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ~>
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 1.3.9
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.3.9
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: simplecov
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ~>
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 0.7.1
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ~>
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: 0.7.1
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: database_cleaner
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ~>
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: 1.2.0
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ~>
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: 1.2.0
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: coffee-rails
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ~>
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: 3.2.2
|
161
|
+
type: :development
|
162
|
+
prerelease: false
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - ~>
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: 3.2.2
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: sass-rails
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ~>
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: 3.2.6
|
175
|
+
type: :development
|
176
|
+
prerelease: false
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ~>
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: 3.2.6
|
182
|
+
- !ruby/object:Gem::Dependency
|
183
|
+
name: pry-rails
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - '>='
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0'
|
189
|
+
type: :development
|
190
|
+
prerelease: false
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - '>='
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
name: guard-rspec
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - '>='
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
type: :development
|
204
|
+
prerelease: false
|
205
|
+
version_requirements: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - '>='
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '0'
|
210
|
+
- !ruby/object:Gem::Dependency
|
211
|
+
name: launchy
|
212
|
+
requirement: !ruby/object:Gem::Requirement
|
213
|
+
requirements:
|
214
|
+
- - '>='
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
version: '0'
|
217
|
+
type: :development
|
218
|
+
prerelease: false
|
219
|
+
version_requirements: !ruby/object:Gem::Requirement
|
220
|
+
requirements:
|
221
|
+
- - '>='
|
222
|
+
- !ruby/object:Gem::Version
|
223
|
+
version: '0'
|
224
|
+
- !ruby/object:Gem::Dependency
|
225
|
+
name: coveralls
|
226
|
+
requirement: !ruby/object:Gem::Requirement
|
227
|
+
requirements:
|
228
|
+
- - '>='
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
version: '0'
|
231
|
+
type: :development
|
232
|
+
prerelease: false
|
233
|
+
version_requirements: !ruby/object:Gem::Requirement
|
234
|
+
requirements:
|
235
|
+
- - '>='
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0'
|
27
238
|
description: During checkout, causes the address to be prefilled with the address
|
28
239
|
from their most recent order or the user's saved address.
|
29
|
-
email:
|
240
|
+
email: hi@futhr.io
|
30
241
|
executables: []
|
31
242
|
extensions: []
|
32
243
|
extra_rdoc_files: []
|
33
244
|
files:
|
34
245
|
- .gitignore
|
246
|
+
- .rspec
|
247
|
+
- .travis.yml
|
248
|
+
- CONTRIBUTING.md
|
35
249
|
- Gemfile
|
36
|
-
-
|
250
|
+
- Guardfile
|
251
|
+
- LICENSE.md
|
37
252
|
- README.md
|
38
253
|
- Rakefile
|
254
|
+
- app/assets/javascripts/store/spree_last_address.js
|
255
|
+
- app/assets/stylesheets/store/spree_last_address.css
|
39
256
|
- app/controllers/spree/checkout_controller_decorator.rb
|
257
|
+
- lib/generators/spree_last_address/install/install_generator.rb
|
40
258
|
- lib/spree_last_address.rb
|
259
|
+
- lib/spree_last_address/engine.rb
|
41
260
|
- lib/spree_last_address/version.rb
|
42
|
-
-
|
261
|
+
- script/rails
|
262
|
+
- spec/controllers/spree/checkout_controller_spec.rb
|
263
|
+
- spec/features/last_address_spec.rb
|
264
|
+
- spec/spec_helper.rb
|
265
|
+
- spec/support/capybara.rb
|
266
|
+
- spec/support/database_cleaner.rb
|
267
|
+
- spec/support/factory_girl.rb
|
268
|
+
- spec/support/spree.rb
|
43
269
|
- spree_last_address.gemspec
|
44
|
-
homepage:
|
45
|
-
licenses:
|
270
|
+
homepage: http://github.com/futhr/spree_last_address
|
271
|
+
licenses:
|
272
|
+
- BSD-3
|
46
273
|
metadata: {}
|
47
274
|
post_install_message:
|
48
275
|
rdoc_options: []
|
@@ -52,16 +279,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
52
279
|
requirements:
|
53
280
|
- - '>='
|
54
281
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
282
|
+
version: 1.9.3
|
56
283
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
284
|
requirements:
|
58
285
|
- - '>='
|
59
286
|
- !ruby/object:Gem::Version
|
60
287
|
version: '0'
|
61
|
-
requirements:
|
288
|
+
requirements:
|
289
|
+
- none
|
62
290
|
rubyforge_project:
|
63
291
|
rubygems_version: 2.1.10
|
64
292
|
signing_key:
|
65
293
|
specification_version: 4
|
66
294
|
summary: Prefill address with last-used address
|
67
|
-
test_files:
|
295
|
+
test_files:
|
296
|
+
- spec/controllers/spree/checkout_controller_spec.rb
|
297
|
+
- spec/features/last_address_spec.rb
|
298
|
+
- spec/spec_helper.rb
|
299
|
+
- spec/support/capybara.rb
|
300
|
+
- spec/support/database_cleaner.rb
|
301
|
+
- spec/support/factory_girl.rb
|
302
|
+
- spec/support/spree.rb
|
data/lib/tasks/install.rake
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
namespace :spree_last_address do
|
2
|
-
desc "Copies all migrations and assets (NOTE: This will be obsolete with Rails 3.1)"
|
3
|
-
task :install do
|
4
|
-
Rake::Task['spree_last_address:install:migrations'].invoke
|
5
|
-
Rake::Task['spree_last_address:install:assets'].invoke
|
6
|
-
end
|
7
|
-
|
8
|
-
namespace :install do
|
9
|
-
desc "Copies all migrations (NOTE: This will be obsolete with Rails 3.1)"
|
10
|
-
task :migrations do
|
11
|
-
source = File.join(File.dirname(__FILE__), '..', '..', 'db')
|
12
|
-
destination = File.join(Rails.root, 'db')
|
13
|
-
Spree::FileUtilz.mirror_files(source, destination)
|
14
|
-
end
|
15
|
-
|
16
|
-
desc "Copies all assets (NOTE: This will be obsolete with Rails 3.1)"
|
17
|
-
task :assets do
|
18
|
-
source = File.join(File.dirname(__FILE__), '..', '..', 'public')
|
19
|
-
destination = File.join(Rails.root, 'public')
|
20
|
-
puts "INFO: Mirroring assets from #{source} to #{destination}"
|
21
|
-
Spree::FileUtilz.mirror_files(source, destination)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|