Compare commits
4
Commits
master
...
2-0-stable
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bcb041c553 | ||
|
|
efb07409e9 | ||
|
|
868fddd7bc | ||
|
|
f3c13a7175 |
+4
-4
@@ -4,11 +4,11 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
.idea
|
.idea
|
||||||
.project
|
.project
|
||||||
|
.sass-cache
|
||||||
|
coverage
|
||||||
|
Gemfile.lock
|
||||||
tmp
|
tmp
|
||||||
nbproject
|
nbproject
|
||||||
|
pkg
|
||||||
*.swp
|
*.swp
|
||||||
spec/dummy
|
spec/dummy
|
||||||
*.tmproj
|
|
||||||
Gemfile.lock
|
|
||||||
Guardfile
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
1.9.3@digital2
|
||||||
@@ -1,12 +1,17 @@
|
|||||||
source 'http://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
# Provides basic authentication functionality for testing parts of your engine
|
||||||
|
gem 'spree_auth_devise', :github => "spree/spree_auth_devise", :branch => '2-0-stable'
|
||||||
|
|
||||||
gemspec
|
gemspec
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
if RUBY_PLATFORM.downcase.include? "darwin"
|
gem "shoulda-matchers"
|
||||||
gem 'guard-rspec'
|
|
||||||
gem 'rb-fsevent'
|
|
||||||
gem 'growl'
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
gem 'spree', '~> 1.3.2'
|
# `rspec-rails` needs to be in the development group so that Rails generators work.
|
||||||
|
group :development, :test do
|
||||||
|
gem "rspec-rails", "~> 2.12"
|
||||||
|
end
|
||||||
|
|
||||||
|
gem 'therubyracer'
|
||||||
|
|||||||
@@ -1,21 +1,26 @@
|
|||||||
The MIT License
|
Copyright (c) 2013 [name of plugin creator]
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
Copyright (c) 2011 funkensturm.
|
Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
this list of conditions and the following disclaimer.
|
||||||
in the Software without restriction, including without limitation the rights
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
this list of conditions and the following disclaimer in the documentation
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
and/or other materials provided with the distribution.
|
||||||
furnished to do so, subject to the following conditions:
|
* Neither the name Spree nor the names of its contributors may be used to
|
||||||
|
endorse or promote products derived from this software without specific
|
||||||
|
prior written permission.
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
all copies or substantial portions of the Software.
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
THE SOFTWARE.
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
SpreeDigital
|
||||||
|
============
|
||||||
|
|
||||||
|
Introduction goes here.
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
Add spree_digital to your Gemfile:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
gem 'spree_digital'
|
||||||
|
```
|
||||||
|
|
||||||
|
Bundle your dependencies and run the installation generator:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
bundle
|
||||||
|
bundle exec rails g spree_digital:install
|
||||||
|
```
|
||||||
|
|
||||||
|
Testing
|
||||||
|
-------
|
||||||
|
|
||||||
|
Be sure to bundle your dependencies and then create a dummy test app for the specs to run against.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
bundle
|
||||||
|
bundle exec rake test_app
|
||||||
|
bundle exec rspec spec
|
||||||
|
```
|
||||||
|
|
||||||
|
When testing your applications integration with this extension you may use it's factories.
|
||||||
|
Simply add this require statement to your spec_helper:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
require 'spree_digital/factories'
|
||||||
|
```
|
||||||
|
|
||||||
|
Copyright (c) 2013 [name of extension creator], released under the New BSD License
|
||||||
@@ -1,31 +1,17 @@
|
|||||||
require 'rake'
|
require 'bundler'
|
||||||
require 'rake/testtask'
|
Bundler::GemHelper.install_tasks
|
||||||
require 'rake/packagetask'
|
|
||||||
require 'rubygems/package_task'
|
|
||||||
require 'rspec/core/rake_task'
|
require 'rspec/core/rake_task'
|
||||||
require 'spree/core/testing_support/common_rake'
|
require 'spree/testing_support/extension_rake'
|
||||||
|
|
||||||
RSpec::Core::RakeTask.new
|
RSpec::Core::RakeTask.new
|
||||||
|
|
||||||
task :default => [:spec]
|
task :default => [:spec]
|
||||||
|
|
||||||
spec = eval(File.read('spree_digital.gemspec'))
|
desc 'Generates a dummy app for testing'
|
||||||
|
|
||||||
Gem::PackageTask.new(spec) do |p|
|
|
||||||
p.gem_spec = spec
|
|
||||||
end
|
|
||||||
|
|
||||||
desc "Release to gemcutter"
|
|
||||||
task :release => :package do
|
|
||||||
require 'rake/gemcutter'
|
|
||||||
Rake::Gemcutter::Tasks.new(spec).define
|
|
||||||
Rake::Task['gem:push'].invoke
|
|
||||||
end
|
|
||||||
|
|
||||||
desc "Regenerates a rails 3 app for testing"
|
|
||||||
task :test_app do
|
task :test_app do
|
||||||
ENV['LIB_NAME'] = 'spree_digital'
|
ENV['LIB_NAME'] = 'spree_digital'
|
||||||
|
|
||||||
require File.join `bundle show spree_core`.chomp, 'lib/generators/spree/dummy/dummy_generator.rb'
|
require File.join `bundle show spree_core`.chomp, 'lib/generators/spree/dummy/dummy_generator.rb'
|
||||||
Spree::DummyGenerator.class_eval do
|
Spree::DummyGenerator.class_eval do
|
||||||
def test_dummy_add_digital
|
def test_dummy_add_digital
|
||||||
@@ -35,5 +21,5 @@ task :test_app do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Rake::Task['common:test_app'].invoke
|
Rake::Task['extension:test_app'].invoke
|
||||||
end
|
end
|
||||||
|
|||||||
+11
-5
@@ -1,5 +1,11 @@
|
|||||||
"0.7.x" => { :ref => "eddaea63959586d123007cbca3be5bf9c5edb1a7" }
|
# This file is used to designate compatibilty with different versions of Spree
|
||||||
"1.0.x" => { :ref => "a8c27750ef1cf9d0ad1a2a6ebe33307da900a5c1" }
|
# Please see http://spreecommerce.com/documentation/extensions.html#versionfile for details
|
||||||
"1.1.x" => { :branch => "1-1-stable" }
|
|
||||||
"1.2.x" => { :ref => "9360c635039aaeeee18026b830aa96cc7587cd0d" }
|
# Examples
|
||||||
"1.3.x" => { :branch => "master" }
|
#
|
||||||
|
# '1.2.x' => { :branch => 'master' }
|
||||||
|
# '1.1.x' => { :branch => '1-1-stable' }
|
||||||
|
# '1.0.x' => { :branch => '1-0-stable' }
|
||||||
|
# '0.70.x' => { :branch => '0-70-stable' }
|
||||||
|
# '0.40.x' => { :tag => 'v1.0.0', :version => '1.0.0' }
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
//= require admin/spree_backend
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//= require store/spree_frontend
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
/*
|
||||||
|
*= require admin/spree_backend
|
||||||
|
*/
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
/*
|
||||||
|
*= require store/spree_frontend
|
||||||
|
*/
|
||||||
@@ -4,7 +4,7 @@ require_dependency 'spree/calculator'
|
|||||||
module Spree
|
module Spree
|
||||||
class Calculator::DigitalDelivery < Calculator::FlatRate
|
class Calculator::DigitalDelivery < Calculator::FlatRate
|
||||||
def self.description
|
def self.description
|
||||||
I18n.t(:digital_delivery)
|
Spree.t(:digital_delivery)
|
||||||
end
|
end
|
||||||
|
|
||||||
def compute(object=nil)
|
def compute(object=nil)
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ module Spree
|
|||||||
class Digital < ActiveRecord::Base
|
class Digital < ActiveRecord::Base
|
||||||
belongs_to :variant
|
belongs_to :variant
|
||||||
has_many :digital_links, :dependent => :destroy
|
has_many :digital_links, :dependent => :destroy
|
||||||
|
|
||||||
has_attached_file :attachment, :path => ":rails_root/private/digitals/:id/:basename.:extension"
|
has_attached_file :attachment, :path => ":rails_root/private/digitals/:id/:basename.:extension"
|
||||||
|
|
||||||
# TODO: Limit the attachment to one single file. Paperclip supports many by default :/
|
# TODO: Limit the attachment to one single file. Paperclip supports many by default :/
|
||||||
|
|
||||||
attr_accessible :variant_id, :attachment
|
attr_accessible :variant_id, :attachment
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -17,15 +17,4 @@ Spree::Order.class_eval do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# UPGRADE_CHECK this works as of spree 1.2.0. check function for changes on upgrade
|
|
||||||
def available_shipping_methods(display_on = nil)
|
|
||||||
return [] unless ship_address
|
|
||||||
all_methods = Spree::ShippingMethod.all_available(self, display_on)
|
|
||||||
|
|
||||||
if self.digital?
|
|
||||||
all_methods.detect { |m| m.calculator.class == Spree::Calculator::DigitalDelivery }.try { |d| [d] } || all_methods
|
|
||||||
else
|
|
||||||
all_methods
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ Deface::Override.new(:virtual_path => "spree/shared/_order_details",
|
|||||||
:name => "add_digital_downloads_to_invoice",
|
:name => "add_digital_downloads_to_invoice",
|
||||||
:insert_bottom => "td[data-hook='order_item_description']",
|
:insert_bottom => "td[data-hook='order_item_description']",
|
||||||
:text => %q{
|
:text => %q{
|
||||||
<% if order.state == 'complete' and item.variant.digital? %>
|
<% if order.payment_state == 'paid' and item.variant.digital? %>
|
||||||
<%= content_tag(:p, :class => 'download_links') do %>
|
<%= content_tag(:p, :class => 'download_links') do %>
|
||||||
<% item.digital_links.each do |digital_link| %>
|
<% item.digital_links.each do |digital_link| %>
|
||||||
<% format = File.extname(digital_link.digital.attachment.path).downcase %>
|
<% format = File.extname(digital_link.digital.attachment.path).downcase %>
|
||||||
<%= link_to t(:digital_download, :type => t("digital_format#{format}")), digital_url(:host => Spree::Config.get(:site_url), :secret => digital_link.secret), :class => "btn #{format}" %>
|
<%= link_to Spree.t(:digital_download, :type => Spree.t("digital_format#{format}")), digital_url(:host => Spree::Config.get(:site_url), :secret => digital_link.secret), :class => "btn #{format}" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Deface::Override.new(:virtual_path => "spree/admin/shared/_product_tabs",
|
|||||||
:name => "add_digital_versions_to_admin_product_tabs",
|
:name => "add_digital_versions_to_admin_product_tabs",
|
||||||
:insert_bottom => "[data-hook='admin_product_tabs'], #admin_product_tabs[data-hook]",
|
:insert_bottom => "[data-hook='admin_product_tabs'], #admin_product_tabs[data-hook]",
|
||||||
:text => " <li<%== ' class=\"active\"' if current == \"Digital Versions\" %>>
|
:text => " <li<%== ' class=\"active\"' if current == \"Digital Versions\" %>>
|
||||||
<%= link_to t(\"digital_versions\"), admin_product_digitals_path(@product) %>
|
<%= link_to_with_icon 'icon-tasks', Spree.t(:digital_versions), admin_product_digitals_path(@product) %>
|
||||||
</li>
|
</li>
|
||||||
",
|
",
|
||||||
:disabled => false)
|
:disabled => false)
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ Deface::Override.new(:virtual_path => "spree/admin/shared/_order_tabs",
|
|||||||
:name => "add_reset_digitals_to_admin_orders",
|
:name => "add_reset_digitals_to_admin_orders",
|
||||||
:insert_after => ".sidebar",
|
:insert_after => ".sidebar",
|
||||||
:text => %q{
|
:text => %q{
|
||||||
<%= content_tag(:p, button_link_to(t(:reset_downloads), reset_digitals_admin_order_url(@order)), class: 'clear') if @order.digital? or true %>
|
<%= content_tag(:p, button_link_to(Spree.t(:reset_downloads), reset_digitals_admin_order_url(@order)), class: 'clear') if @order.digital? or true %>
|
||||||
},
|
},
|
||||||
:disabled => false)
|
:disabled => false)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<% if digital.attachment_file_name.present? %>
|
<% if digital.attachment_file_name.present? %>
|
||||||
<%= digital.attachment_file_name %> (<%= number_to_human_size(digital.attachment_file_size) %>)
|
<%= digital.attachment_file_name %> (<%= number_to_human_size(digital.attachment_file_size) %>)
|
||||||
<% else %>
|
<% else %>
|
||||||
<%=t 'broken_file' %>
|
<%=Spree.t 'broken_file' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -1,34 +1,33 @@
|
|||||||
<div>
|
<div>
|
||||||
<div>
|
|
||||||
<%= form_for(:digital, :url => admin_product_digitals_path(@product), :method => :create, :multipart => true ) do |f| %>
|
<%= form_for(:digital, :url => admin_product_digitals_path(@product), :method => :create, :multipart => true ) do |f| %>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend><%= Spree::Variant.model_name.human %> "<%= variant.options_text %>"</legend>
|
<legend><%= Spree::Variant.model_name.human %> "<%= variant.options_text %>"</legend>
|
||||||
|
|
||||||
<%= f.field_container :current_file do %>
|
<%= f.field_container :current_file do %>
|
||||||
<strong><%=t 'files' %>:</strong>
|
<strong><%=Spree.t 'files' %>:</strong>
|
||||||
<% if variant.digital? %>
|
<% if variant.digital? %>
|
||||||
<ul>
|
<ul>
|
||||||
<% variant.digitals.each do |digital| %>
|
<% variant.digitals.each do |digital| %>
|
||||||
<li>
|
<li>
|
||||||
<%= render digital %>
|
<%= render digital %>
|
||||||
<%= link_to t("delete_file"), admin_product_digital_url(@product, digital), :confirm => t('delete_file_cofirmation', :filename => digital.attachment_file_name), :method => :delete %>
|
<%= link_to Spree.t(:delete_file), admin_product_digital_url(@product, digital), :confirm => Spree.t(:delete_file_cofirmation, :filename => digital.attachment_file_name), :method => :delete %>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%=t 'none' %>
|
<%=Spree.t 'none' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<p class="form-buttons">
|
<p class="form-buttons">
|
||||||
<%= f.field_container :file do %>
|
<%= f.field_container :file do %>
|
||||||
<%= f.label :file, t("new_file") %> <span class="required">*</span><br/>
|
<%= f.label :file, Spree.t("new_file") %> <span class="required">*</span><br/>
|
||||||
<%= f.file_field :attachment %>
|
<%= f.file_field :attachment %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<%= hidden_field_tag 'digital[variant_id]', variant.id %>
|
<%= hidden_field_tag 'digital[variant_id]', variant.id %>
|
||||||
|
|
||||||
<%= button t('spree_digital.upload') %>
|
<%= button Spree.t('spree_digital.upload') %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|||||||
@@ -8,10 +8,10 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% else %>
|
<% else %>
|
||||||
This product has no variants.
|
<%= Spree.t :product_without_variants %>
|
||||||
|
|
||||||
<% if @product.master.digital? %>
|
<% if @product.master.digital? %>
|
||||||
A digital version of this product currently exists:
|
<%= Spree.t :digital_exists %>
|
||||||
<%= render @product.master.digitals %>
|
<%= render @product.master.digitals %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<% if digital.attachment_file_name.present? %>
|
<% if digital.attachment_file_name.present? %>
|
||||||
<%= digital.attachment_file_name %> (<%= number_to_human_size(digital.attachment_file_size) %>)
|
<%= digital.attachment_file_name %> (<%= number_to_human_size(digital.attachment_file_size) %>)
|
||||||
<% else %>
|
<% else %>
|
||||||
<%=t 'broken_file' %>
|
<%=Spree.t 'broken_file' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
+26
-22
@@ -1,24 +1,28 @@
|
|||||||
en:
|
en:
|
||||||
broken_file: Warning! this file is broken
|
|
||||||
current_file: Current File
|
|
||||||
delete_file: Delete this file
|
|
||||||
delete_file_cofirmation: Are you sure you want to delete the file %{filename}?
|
|
||||||
digital_delivery: Digital Delivery
|
|
||||||
digital_download: Download %{type} ↓
|
|
||||||
digital_download_links: Digital Download Links
|
|
||||||
digital_format:
|
|
||||||
mp3: Audio MP3
|
|
||||||
mobi: Kindle eBook
|
|
||||||
epub: ePub eBook
|
|
||||||
pdf: pdf eBook
|
|
||||||
digital_versions: Digital Versions
|
|
||||||
downloads_reset: Digital Downloads Reset
|
|
||||||
new_file: New File
|
|
||||||
reset_downloads: Reset Digital Downloads
|
|
||||||
spree:
|
spree:
|
||||||
digitals:
|
broken_file: Warning! this file is broken
|
||||||
unauthorized:
|
current_file: Current File
|
||||||
explained: This download link has expired.
|
delete_file: Delete this file
|
||||||
unauthorized: Unauthorized
|
delete_file_cofirmation: Are you sure you want to delete the file %{filename}?
|
||||||
spree_digital:
|
digital_delivery: Digital Delivery
|
||||||
upload: Upload
|
digital_download: Download %{type} ↓
|
||||||
|
digital_download_links: Digital Download Links
|
||||||
|
digital_format:
|
||||||
|
mp3: Audio MP3
|
||||||
|
mobi: Kindle eBook
|
||||||
|
epub: ePub eBook
|
||||||
|
pdf: pdf eBook
|
||||||
|
gz: Archive
|
||||||
|
digital_versions: Digital Versions
|
||||||
|
downloads_reset: Digital Downloads Reset
|
||||||
|
new_file: New File
|
||||||
|
reset_downloads: Reset Digital Downloads
|
||||||
|
spree:
|
||||||
|
digitals:
|
||||||
|
unauthorized:
|
||||||
|
explained: This download link has expired.
|
||||||
|
unauthorized: Unauthorized
|
||||||
|
spree_digital:
|
||||||
|
upload: Upload
|
||||||
|
product_without_variants: This product has no variants.
|
||||||
|
digital_exists: 'A digital version of this product currently exists:'
|
||||||
|
|||||||
+21
-20
@@ -1,22 +1,23 @@
|
|||||||
it:
|
it:
|
||||||
broken_file: Attenzione! questo file sembra essere rotto
|
|
||||||
current_file: File Corrente
|
|
||||||
delete_file: Elimina questo file
|
|
||||||
delete_file_cofirmation: Sei sicuro di voler eliminare il file %{filename}?
|
|
||||||
digital_delivery: Consegna Digitale
|
|
||||||
digital_download: Download %{type} ↓
|
|
||||||
digital_download_links: Link al Download Digitale
|
|
||||||
digital_format:
|
|
||||||
mp3: Audio MP3
|
|
||||||
mobi: Kindle eBook
|
|
||||||
epub: ePub eBook
|
|
||||||
pdf: pdf eBook
|
|
||||||
digital_versions: Versioni Digitali
|
|
||||||
new_file: Nuovo File
|
|
||||||
spree:
|
spree:
|
||||||
digitals:
|
broken_file: Attenzione! questo file sembra essere rotto
|
||||||
unauthorized:
|
current_file: File Corrente
|
||||||
explained: This download link has expired.
|
delete_file: Elimina questo file
|
||||||
unauthorized: Unauthorized
|
delete_file_cofirmation: Sei sicuro di voler eliminare il file %{filename}?
|
||||||
spree_digital:
|
digital_delivery: Consegna Digitale
|
||||||
upload: Upload
|
digital_download: Download %{type} ↓
|
||||||
|
digital_download_links: Link al Download Digitale
|
||||||
|
digital_format:
|
||||||
|
mp3: Audio MP3
|
||||||
|
mobi: Kindle eBook
|
||||||
|
epub: ePub eBook
|
||||||
|
pdf: pdf eBook
|
||||||
|
digital_versions: Versioni Digitali
|
||||||
|
new_file: Nuovo File
|
||||||
|
spree:
|
||||||
|
digitals:
|
||||||
|
unauthorized:
|
||||||
|
explained: This download link has expired.
|
||||||
|
unauthorized: Unauthorized
|
||||||
|
spree_digital:
|
||||||
|
upload: Upload
|
||||||
+13
-12
@@ -1,14 +1,15 @@
|
|||||||
ja:
|
ja:
|
||||||
broken_file: 注意! このファイルが壊れている!
|
|
||||||
current_file: 現在のバージョン
|
|
||||||
delete_file: このファイルを削除
|
|
||||||
delete_file_cofirmation: 本当に「%{filename}」を削除しても宜しいですか?
|
|
||||||
digital_shipping: ダウンロードリンクを<strong>%{email}</strong>に送ります
|
|
||||||
digital_versions: デジタル版
|
|
||||||
new_file: 新しいファイル
|
|
||||||
spree:
|
spree:
|
||||||
digitals:
|
broken_file: 注意! このファイルが壊れている!
|
||||||
unauthorized:
|
current_file: 現在のバージョン
|
||||||
explained: This download link has expired.
|
delete_file: このファイルを削除
|
||||||
unauthorized: Unauthorized
|
delete_file_cofirmation: 本当に「%{filename}」を削除しても宜しいですか?
|
||||||
upload: アップロード
|
digital_shipping: ダウンロードリンクを<strong>%{email}</strong>に送ります
|
||||||
|
digital_versions: デジタル版
|
||||||
|
new_file: 新しいファイル
|
||||||
|
spree:
|
||||||
|
digitals:
|
||||||
|
unauthorized:
|
||||||
|
explained: This download link has expired.
|
||||||
|
unauthorized: Unauthorized
|
||||||
|
upload: アップロード
|
||||||
|
|||||||
+2
-2
@@ -6,10 +6,10 @@ Spree::Core::Engine.routes.draw do
|
|||||||
|
|
||||||
resources :orders do
|
resources :orders do
|
||||||
member do
|
member do
|
||||||
get :reset_digitals
|
get :reset_digitals
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
get '/digital/:secret', :to => 'digitals#show', :via => :get, :as => 'digital', :constraints => { :secret => /[a-zA-Z0-9]{30}/ }
|
get '/digital/:secret', :to => 'digitals#show', :via => :get, :as => 'digital', :constraints => { :secret => /[a-zA-Z0-9]{30}/ }
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,31 +1,31 @@
|
|||||||
module SpreeDigital
|
module SpreeDigital
|
||||||
module Generators
|
module Generators
|
||||||
class InstallGenerator < Rails::Generators::Base
|
class InstallGenerator < Rails::Generators::Base
|
||||||
|
|
||||||
# def add_javascripts
|
class_option :auto_run_migrations, :type => :boolean, :default => false
|
||||||
# append_file "app/assets/javascripts/store/all.js", "//= require store/spree_digital\n"
|
|
||||||
# append_file "app/assets/javascripts/admin/all.js", "//= require admin/spree_digital\n"
|
def add_javascripts
|
||||||
# end
|
append_file 'app/assets/javascripts/store/all.js', "//= require store/spree_digital\n"
|
||||||
|
append_file 'app/assets/javascripts/admin/all.js', "//= require admin/spree_digital\n"
|
||||||
# def add_stylesheets
|
end
|
||||||
# inject_into_file "app/assets/stylesheets/store/all.css", " *= require store/spree_digital\n",
|
|
||||||
# :before => /\*\//, :verbose => true
|
def add_stylesheets
|
||||||
# inject_into_file "app/assets/stylesheets/admin/all.css", " *= require admin/spree_digital\n",
|
inject_into_file 'app/assets/stylesheets/store/all.css', " *= require store/spree_digital\n", :before => /\*\//, :verbose => true
|
||||||
# :before => /\*\//, :verbose => true
|
inject_into_file 'app/assets/stylesheets/admin/all.css', " *= require admin/spree_digital\n", :before => /\*\//, :verbose => true
|
||||||
# end
|
end
|
||||||
|
|
||||||
def add_migrations
|
def add_migrations
|
||||||
run 'bundle exec rake railties:install:migrations FROM=spree_digital'
|
run 'bundle exec rake railties:install:migrations FROM=spree_digital'
|
||||||
end
|
end
|
||||||
|
|
||||||
def run_migrations
|
def run_migrations
|
||||||
res = ask "Would you like to run the migrations now? [Y/n]"
|
run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
|
||||||
if res == "" || res.downcase == "y"
|
if run_migrations
|
||||||
run 'bundle exec rake db:migrate'
|
run 'bundle exec rake db:migrate'
|
||||||
else
|
else
|
||||||
puts "Skipping rake db:migrate, don't forget to run it!"
|
puts 'Skipping rake db:migrate, don\'t forget to run it!'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
module SpreeDigital
|
module SpreeDigital
|
||||||
class Engine < Rails::Engine
|
class Engine < Rails::Engine
|
||||||
|
require 'spree/core'
|
||||||
|
isolate_namespace Spree
|
||||||
engine_name 'spree_digital'
|
engine_name 'spree_digital'
|
||||||
|
|
||||||
config.autoload_paths += %W(#{config.root}/lib)
|
config.autoload_paths += %W(#{config.root}/lib)
|
||||||
|
|
||||||
|
# use rspec for tests
|
||||||
|
config.generators do |g|
|
||||||
|
g.test_framework :rspec
|
||||||
|
end
|
||||||
|
|
||||||
initializer "spree.spree_digital.preferences", :after => "spree.environment" do |app|
|
initializer "spree.spree_digital.preferences", :after => "spree.environment" do |app|
|
||||||
Spree::DigitalConfiguration = Spree::SpreeDigitalConfiguration.new
|
Spree::DigitalConfiguration = Spree::SpreeDigitalConfiguration.new
|
||||||
end
|
end
|
||||||
@@ -11,10 +18,10 @@ module SpreeDigital
|
|||||||
initializer "spree.register.digital_shipping", :after => 'spree.register.calculators' do |app|
|
initializer "spree.register.digital_shipping", :after => 'spree.register.calculators' do |app|
|
||||||
app.config.spree.calculators.shipping_methods << Spree::Calculator::DigitalDelivery
|
app.config.spree.calculators.shipping_methods << Spree::Calculator::DigitalDelivery
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.activate
|
def self.activate
|
||||||
Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
|
Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
|
||||||
Rails.application.config.cache_classes ? require(c) : load(c)
|
Rails.configuration.cache_classes ? require(c) : load(c)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
FactoryGirl.define do
|
||||||
|
# Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them.
|
||||||
|
#
|
||||||
|
# Example adding this to your spec_helper will load these Factories for use:
|
||||||
|
# require 'spree_digital/factories'
|
||||||
|
|
||||||
|
factory :digital, :class => Spree::Digital do |f|
|
||||||
|
# TODO good to assign variant association if no association is manually defined
|
||||||
|
# f.variant { |p| p.association(:variant) }
|
||||||
|
|
||||||
|
attachment_content_type 'application/octet-stream'
|
||||||
|
attachment_file_name 'a_great_book.epub'
|
||||||
|
end
|
||||||
|
|
||||||
|
factory :digital_link, :class => Spree::DigitalLink do |f|
|
||||||
|
f.digital { |p| p.association(:digital) }
|
||||||
|
f.line_item { |p| p.association(:line_item) }
|
||||||
|
end
|
||||||
|
|
||||||
|
factory :digital_shipping_calculator, class: Spree::Calculator::DigitalDelivery do |c|
|
||||||
|
after(:create) { |c| c.set_preference(:amount, 0) }
|
||||||
|
end
|
||||||
|
|
||||||
|
factory :digital_shipping_method, parent: :shipping_method do |f|
|
||||||
|
name "Digital Delivery"
|
||||||
|
calculator { FactoryGirl.build :digital_shipping_calculator }
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -25,7 +25,7 @@ The idea is simple. You attach a file to a Product (or a Variant of this Product
|
|||||||
Add this line to your gemfile:
|
Add this line to your gemfile:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
gem 'spree_digital', :git => 'git://github.com/halo/spree_digital.git', :branch => 'master'
|
gem 'spree_digital', :git => 'git://github.com/dlage/spree_digital.git', :branch => 'master'
|
||||||
```
|
```
|
||||||
|
|
||||||
The following terminal commands will copy the migration files to the corresponding directory in your Rails application and apply the migrations to your database.
|
The following terminal commands will copy the migration files to the corresponding directory in your Rails application and apply the migrations to your database.
|
||||||
@@ -106,7 +106,7 @@ Get the spree framework and spree_digital extension for it:
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
git clone git://github.com/spree/spree.git
|
git clone git://github.com/spree/spree.git
|
||||||
git clone git://github.com/halo/spree_digital.git
|
git clone git://github.com/dlage/spree_digital.git
|
||||||
```
|
```
|
||||||
|
|
||||||
Go into the spree directory and run the bundle command:
|
Go into the spree directory and run the bundle command:
|
||||||
@@ -138,6 +138,7 @@ This link may be very helpful to you: [http://github.com/spree/spree](http://git
|
|||||||
|
|
||||||
* [iloveitaly](http://github.com/iloveitaly/)
|
* [iloveitaly](http://github.com/iloveitaly/)
|
||||||
* [halo](http://github.com/halo)
|
* [halo](http://github.com/halo)
|
||||||
|
* [dlage](http://github.com/dlage)
|
||||||
|
|
||||||
### License
|
### License
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
||||||
|
|
||||||
|
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
||||||
|
ENGINE_PATH = File.expand_path('../../lib/spree_digital/engine', __FILE__)
|
||||||
|
|
||||||
|
require 'rails/all'
|
||||||
|
require 'rails/engine/commands'
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
FactoryGirl.define do
|
|
||||||
factory :digital, :class => Spree::Digital do |f|
|
|
||||||
# TODO good to assign variant association if no association is manually defined
|
|
||||||
# f.variant { |p| p.association(:variant) }
|
|
||||||
|
|
||||||
attachment_content_type 'application/octet-stream'
|
|
||||||
attachment_file_name 'a_great_book.epub'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
FactoryGirl.define do
|
|
||||||
factory :digital_link, :class => Spree::DigitalLink do |f|
|
|
||||||
f.digital { |p| p.association(:digital) }
|
|
||||||
f.line_item { |p| p.association(:line_item) }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
FactoryGirl.define do
|
|
||||||
# https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#modifying-factories
|
|
||||||
|
|
||||||
factory :digital_shipping_calculator, class: Spree::Calculator::DigitalDelivery do |c|
|
|
||||||
after_create { |c| c.set_preference(:amount, 0) }
|
|
||||||
end
|
|
||||||
|
|
||||||
factory :digital_shipping_method, parent: :shipping_method do |f|
|
|
||||||
name "Digital Delivery"
|
|
||||||
calculator { FactoryGirl.build :digital_shipping_calculator }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
+16
-15
@@ -4,9 +4,9 @@ describe Spree::Order do
|
|||||||
context "#add_variant" do
|
context "#add_variant" do
|
||||||
it "should add digital Variants of quantity 1 to an order" do
|
it "should add digital Variants of quantity 1 to an order" do
|
||||||
order = FactoryGirl.create(:order)
|
order = FactoryGirl.create(:order)
|
||||||
order.add_variant variant1 = FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)])
|
order.contents.add variant1 = FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 1
|
||||||
order.add_variant variant2 = FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)])
|
order.contents.add variant2 = FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 1
|
||||||
order.add_variant variant3 = FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)])
|
order.contents.add variant3 = FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 1
|
||||||
order.line_items.first.variant.should == variant1
|
order.line_items.first.variant.should == variant1
|
||||||
order.line_items.second.variant.should == variant2
|
order.line_items.second.variant.should == variant2
|
||||||
order.line_items.third.variant.should == variant3
|
order.line_items.third.variant.should == variant3
|
||||||
@@ -15,9 +15,9 @@ describe Spree::Order do
|
|||||||
it "should handle quantity higher than 1 when adding one specific digital Variant" do
|
it "should handle quantity higher than 1 when adding one specific digital Variant" do
|
||||||
order = FactoryGirl.create(:order)
|
order = FactoryGirl.create(:order)
|
||||||
digital_variant = FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)])
|
digital_variant = FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)])
|
||||||
order.add_variant digital_variant, 3
|
order.contents.add digital_variant, 3
|
||||||
order.line_items.first.quantity.should == 3
|
order.line_items.first.quantity.should == 3
|
||||||
order.add_variant digital_variant, 2
|
order.contents.add digital_variant, 2
|
||||||
order.line_items.first.quantity.should == 5
|
order.line_items.first.quantity.should == 5
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -26,21 +26,21 @@ describe Spree::Order do
|
|||||||
it "should understand that all products are digital" do
|
it "should understand that all products are digital" do
|
||||||
order = FactoryGirl.create(:order)
|
order = FactoryGirl.create(:order)
|
||||||
3.times do
|
3.times do
|
||||||
order.add_variant FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)])
|
order.contents.add FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 1
|
||||||
end
|
end
|
||||||
order.digital?.should be_true
|
order.digital?.should be_true
|
||||||
order.add_variant FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 4
|
order.contents.add FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 4
|
||||||
order.digital?.should be_true
|
order.digital?.should be_true
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should understand that not all products are digital" do
|
it "should understand that not all products are digital" do
|
||||||
order = FactoryGirl.create(:order)
|
order = FactoryGirl.create(:order)
|
||||||
3.times do
|
3.times do
|
||||||
order.add_variant FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)])
|
order.contents.add FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 1
|
||||||
end
|
end
|
||||||
order.add_variant FactoryGirl.create(:variant) # this is the analog product
|
order.contents.add FactoryGirl.create(:variant), 1 # this is the analog product
|
||||||
order.digital?.should be_false
|
order.digital?.should be_false
|
||||||
order.add_variant FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 4
|
order.contents.add FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 4
|
||||||
order.digital?.should be_false
|
order.digital?.should be_false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -53,7 +53,7 @@ describe Spree::Order do
|
|||||||
@order.bill_address = FactoryGirl.create :address
|
@order.bill_address = FactoryGirl.create :address
|
||||||
@order.save!
|
@order.save!
|
||||||
|
|
||||||
3.times { @order.add_variant FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]) }
|
3.times { @order.contents.add FactoryGirl.create(:variant, :digitals => [FactoryGirl.create(:digital)]), 1 }
|
||||||
|
|
||||||
FactoryGirl.create :digital_shipping_method
|
FactoryGirl.create :digital_shipping_method
|
||||||
s = FactoryGirl.create :shipping_method
|
s = FactoryGirl.create :shipping_method
|
||||||
@@ -64,14 +64,15 @@ describe Spree::Order do
|
|||||||
|
|
||||||
it "should only offer digital shipping if all items are digital" do
|
it "should only offer digital shipping if all items are digital" do
|
||||||
order.digital?.should be_true
|
order.digital?.should be_true
|
||||||
order.rate_hash.count.should == 1
|
shipments = order.create_proposed_shipments
|
||||||
order.rate_hash.first.shipping_method.calculator.class.should == Spree::Calculator::DigitalDelivery
|
shipments.count.should == 1
|
||||||
order.rate_hash.first.cost.should == 0.0
|
shipments.first.shipping_method.calculator.class.should == Spree::Calculator::DigitalDelivery
|
||||||
|
shipments.first.cost.should == 0.0
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should not offer digital shipping if only some items are digital" do
|
it "should not offer digital shipping if only some items are digital" do
|
||||||
order.digital?.should be_true
|
order.digital?.should be_true
|
||||||
order.add_variant FactoryGirl.create(:variant) # this is the analog product
|
order.contents.add FactoryGirl.create(:variant), 1 # this is the analog product
|
||||||
order.digital?.should be_false
|
order.digital?.should be_false
|
||||||
|
|
||||||
order.rate_hash.count.should == 1
|
order.rate_hash.count.should == 1
|
||||||
|
|||||||
+65
-20
@@ -1,40 +1,85 @@
|
|||||||
ENV["RAILS_ENV"] = "test"
|
# Run Coverage report
|
||||||
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
require 'simplecov'
|
||||||
|
SimpleCov.start do
|
||||||
|
add_group 'Controllers', 'app/controllers'
|
||||||
|
add_group 'Helpers', 'app/helpers'
|
||||||
|
add_group 'Mailers', 'app/mailers'
|
||||||
|
add_group 'Models', 'app/models'
|
||||||
|
add_group 'Views', 'app/views'
|
||||||
|
add_group 'Libraries', 'lib'
|
||||||
|
end
|
||||||
|
|
||||||
|
# Configure Rails Environment
|
||||||
|
ENV['RAILS_ENV'] = 'test'
|
||||||
|
|
||||||
|
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
||||||
|
|
||||||
require 'rspec/rails'
|
require 'rspec/rails'
|
||||||
require 'database_cleaner'
|
require 'database_cleaner'
|
||||||
require 'ffaker'
|
require 'ffaker'
|
||||||
require 'shoulda-matchers'
|
require 'shoulda-matchers'
|
||||||
|
|
||||||
Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each {|f| require f }
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
||||||
|
# in spec/support/ and its subdirectories.
|
||||||
|
Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
|
||||||
|
|
||||||
require 'spree/core/testing_support/factories'
|
# Requires factories defined in spree_core
|
||||||
require 'spree/core/testing_support/controller_requests'
|
require 'spree/testing_support/factories'
|
||||||
require 'spree/core/url_helpers'
|
require 'spree/testing_support/controller_requests'
|
||||||
|
require 'spree/testing_support/authorization_helpers'
|
||||||
|
require 'spree/testing_support/url_helpers'
|
||||||
|
|
||||||
Dir[File.join(File.dirname(__FILE__), "factories/*.rb")].each {|f| require f }
|
# Requires factories defined in lib/spree_digital/factories.rb
|
||||||
|
require 'spree_digital/factories'
|
||||||
|
|
||||||
RSpec.configure do |config|
|
RSpec.configure do |config|
|
||||||
config.mock_with :rspec
|
|
||||||
config.include FactoryGirl::Syntax::Methods
|
config.include FactoryGirl::Syntax::Methods
|
||||||
config.include Spree::Core::UrlHelpers
|
|
||||||
config.include Spree::Core::TestingSupport::ControllerRequests
|
# == URL Helpers
|
||||||
|
#
|
||||||
|
# Allows access to Spree's routes in specs:
|
||||||
|
#
|
||||||
|
# visit spree.admin_path
|
||||||
|
# current_path.should eql(spree.products_path)
|
||||||
|
config.include Spree::TestingSupport::UrlHelpers
|
||||||
|
|
||||||
|
config.include Spree::TestingSupport::ControllerRequests, :type => :controller
|
||||||
|
config.include Spree::TestingSupport::AuthorizationHelpers
|
||||||
|
config.include Devise::TestHelpers, :type => :controller
|
||||||
|
# == Mock Framework
|
||||||
|
#
|
||||||
|
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
||||||
|
#
|
||||||
|
# config.mock_with :mocha
|
||||||
|
# config.mock_with :flexmock
|
||||||
|
# config.mock_with :rr
|
||||||
|
config.mock_with :rspec
|
||||||
|
config.color = true
|
||||||
|
|
||||||
|
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
||||||
|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
||||||
|
|
||||||
|
# Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
|
||||||
|
# to cleanup after each test instead. Without transactional fixtures set to false the records created
|
||||||
|
# to setup a test will be unavailable to the browser, which runs under a seperate server instance.
|
||||||
config.use_transactional_fixtures = false
|
config.use_transactional_fixtures = false
|
||||||
|
|
||||||
config.before(:each) do
|
# Ensure Suite is set to use transactions for speed.
|
||||||
if example.metadata[:js]
|
config.before :suite do
|
||||||
DatabaseCleaner.strategy = :truncation, { :except => ['spree_countries', 'spree_zones', 'spree_zone_members', 'spree_states', 'spree_roles'] }
|
DatabaseCleaner.strategy = :transaction
|
||||||
else
|
DatabaseCleaner.clean_with :truncation
|
||||||
DatabaseCleaner.strategy = :transaction
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
config.before(:each) do
|
# Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary.
|
||||||
|
config.before :each do
|
||||||
|
DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
|
||||||
DatabaseCleaner.start
|
DatabaseCleaner.start
|
||||||
# reset_spree_preferences
|
|
||||||
end
|
end
|
||||||
|
|
||||||
config.after(:each) do
|
# After each spec clean the database.
|
||||||
|
config.after :each do
|
||||||
DatabaseCleaner.clean
|
DatabaseCleaner.clean
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
config.fail_fast = ENV['FAIL_FAST'] || false
|
||||||
|
end
|
||||||
|
|||||||
+25
-20
@@ -1,26 +1,31 @@
|
|||||||
|
# encoding: UTF-8
|
||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
s.platform = Gem::Platform::RUBY
|
s.platform = Gem::Platform::RUBY
|
||||||
s.name = 'spree_digital'
|
s.name = 'spree_digital'
|
||||||
s.version = '1.1.1'
|
s.version = '2.0.0'
|
||||||
s.summary = ''
|
s.summary = 'Digital download functionality for spree'
|
||||||
s.description = 'Digital download functionality for spree'
|
s.description = 'Digital download functionality for spree'
|
||||||
s.authors = ['funkensturm', 'Michael Bianco']
|
s.required_ruby_version = '>= 1.9.3'
|
||||||
s.email = ['info@cliffsidedev.com']
|
|
||||||
s.homepage = 'http://www.funkensturm.com'
|
s.author = 'Dinis Lage'
|
||||||
s.files = `git ls-files`.split("\n")
|
s.email = 'dinis@senolage.com'
|
||||||
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
s.homepage = 'http://senolage.com'
|
||||||
|
|
||||||
|
#s.files = `git ls-files`.split("\n")
|
||||||
|
#s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
||||||
s.require_path = 'lib'
|
s.require_path = 'lib'
|
||||||
s.requirements << 'none'
|
s.requirements << 'none'
|
||||||
s.required_ruby_version = '>= 1.8.7'
|
|
||||||
|
|
||||||
s.add_dependency 'spree_core', '~> 1.3.0'
|
s.add_dependency 'spree_core', '~> 2.0.0'
|
||||||
|
|
||||||
# test suite
|
s.add_development_dependency 'capybara', '~> 2.1'
|
||||||
s.add_development_dependency 'shoulda-matchers'
|
s.add_development_dependency 'coffee-rails'
|
||||||
s.add_development_dependency 'capybara'
|
|
||||||
s.add_development_dependency 'factory_girl_rails', '~> 1.7.0'
|
|
||||||
s.add_development_dependency 'rspec-rails', '~> 2.8'
|
|
||||||
s.add_development_dependency 'sqlite3'
|
|
||||||
s.add_development_dependency 'ffaker'
|
|
||||||
s.add_development_dependency 'database_cleaner'
|
s.add_development_dependency 'database_cleaner'
|
||||||
end
|
s.add_development_dependency 'factory_girl', '~> 4.2'
|
||||||
|
s.add_development_dependency 'ffaker'
|
||||||
|
s.add_development_dependency 'rspec-rails', '~> 2.13'
|
||||||
|
s.add_development_dependency 'sass-rails'
|
||||||
|
s.add_development_dependency 'selenium-webdriver'
|
||||||
|
s.add_development_dependency 'simplecov'
|
||||||
|
s.add_development_dependency 'sqlite3'
|
||||||
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user