From 74d5b88ecdb42b5de574662a4a729616448f395d Mon Sep 17 00:00:00 2001 From: Dinis Lage Date: Sun, 2 Jun 2013 16:06:53 +0100 Subject: [PATCH] Initial working version of the BurstNet test API. --- .gitignore | 15 ++ .rspec | 1 + .ruby-gemset | 1 + .ruby-version | 1 + Gemfile | 8 + LICENSE | 26 +++ README.md | 40 +++++ Rakefile | 15 ++ Versionfile | 11 ++ .../javascripts/admin/spree_burstnet.js | 1 + .../javascripts/store/spree_burstnet.js | 1 + .../stylesheets/admin/spree_burstnet.css | 3 + .../stylesheets/store/spree_burstnet.css | 3 + app/models/burst_net/backup.rb | 4 + app/models/burst_net/cp.rb | 4 + app/models/burst_net/order.rb | 24 +++ app/models/burst_net/os.rb | 4 + app/models/burst_net/product.rb | 27 +++ app/models/burst_net/service.rb | 34 ++++ app/models/burst_net/site.rb | 4 + config/initializers/burst_net.rb.example | 3 + config/locales/en.yml | 5 + config/routes.rb | 3 + db/migrate/20130529065305_create_orders.rb | 8 + lib/burst_net/api.rb | 161 ++++++++++++++++++ lib/burst_net/model.rb | 7 + lib/burst_net_parser.rb | 15 ++ .../install/install_generator.rb | 31 ++++ lib/spree_burstnet.rb | 3 + lib/spree_burstnet/engine.rb | 22 +++ lib/spree_burstnet/factories.rb | 6 + script/rails | 7 + spec/spec_helper.rb | 81 +++++++++ spree_burstnet.gemspec | 32 ++++ 34 files changed, 611 insertions(+) create mode 100644 .gitignore create mode 100644 .rspec create mode 100644 .ruby-gemset create mode 100644 .ruby-version create mode 100644 Gemfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 Rakefile create mode 100644 Versionfile create mode 100644 app/assets/javascripts/admin/spree_burstnet.js create mode 100644 app/assets/javascripts/store/spree_burstnet.js create mode 100644 app/assets/stylesheets/admin/spree_burstnet.css create mode 100644 app/assets/stylesheets/store/spree_burstnet.css create mode 100644 app/models/burst_net/backup.rb create mode 100644 app/models/burst_net/cp.rb create mode 100644 app/models/burst_net/order.rb create mode 100644 app/models/burst_net/os.rb create mode 100644 app/models/burst_net/product.rb create mode 100644 app/models/burst_net/service.rb create mode 100644 app/models/burst_net/site.rb create mode 100644 config/initializers/burst_net.rb.example create mode 100644 config/locales/en.yml create mode 100644 config/routes.rb create mode 100644 db/migrate/20130529065305_create_orders.rb create mode 100644 lib/burst_net/api.rb create mode 100644 lib/burst_net/model.rb create mode 100644 lib/burst_net_parser.rb create mode 100644 lib/generators/spree_burstnet/install/install_generator.rb create mode 100644 lib/spree_burstnet.rb create mode 100644 lib/spree_burstnet/engine.rb create mode 100644 lib/spree_burstnet/factories.rb create mode 100644 script/rails create mode 100644 spec/spec_helper.rb create mode 100644 spree_burstnet.gemspec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ded584e --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +\#* +*~ +.#* +.DS_Store +.idea +.project +.sass-cache +coverage +Gemfile.lock +tmp +nbproject +pkg +*.swp +spec/dummy +config/initializers/burst_net.rb \ No newline at end of file diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..5052887 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--color \ No newline at end of file diff --git a/.ruby-gemset b/.ruby-gemset new file mode 100644 index 0000000..d4f7997 --- /dev/null +++ b/.ruby-gemset @@ -0,0 +1 @@ +spree2 diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..77fee73 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +1.9.3 diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..1bdb2a4 --- /dev/null +++ b/Gemfile @@ -0,0 +1,8 @@ +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 + +gem 'httparty' \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9822124 --- /dev/null +++ b/LICENSE @@ -0,0 +1,26 @@ +Copyright (c) 2013 [name of plugin creator] +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * 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. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..595ec43 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +SpreeBurstnet +============= + +Introduction goes here. + +Installation +------------ + +Add spree_burstnet to your Gemfile: + +```ruby +gem 'spree_burstnet' +``` + +Bundle your dependencies and run the installation generator: + +```shell +bundle +bundle exec rails g spree_burstnet: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_burstnet/factories' +``` + +Copyright (c) 2013 [name of extension creator], released under the New BSD License diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..0a18e55 --- /dev/null +++ b/Rakefile @@ -0,0 +1,15 @@ +require 'bundler' +Bundler::GemHelper.install_tasks + +require 'rspec/core/rake_task' +require 'spree/testing_support/extension_rake' + +RSpec::Core::RakeTask.new + +task :default => [:spec] + +desc 'Generates a dummy app for testing' +task :test_app do + ENV['LIB_NAME'] = 'spree_burstnet' + Rake::Task['extension:test_app'].invoke +end diff --git a/Versionfile b/Versionfile new file mode 100644 index 0000000..5db83aa --- /dev/null +++ b/Versionfile @@ -0,0 +1,11 @@ +# This file is used to designate compatibilty with different versions of Spree +# Please see http://spreecommerce.com/documentation/extensions.html#versionfile for details + +# Examples +# +# '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' } + diff --git a/app/assets/javascripts/admin/spree_burstnet.js b/app/assets/javascripts/admin/spree_burstnet.js new file mode 100644 index 0000000..b181e56 --- /dev/null +++ b/app/assets/javascripts/admin/spree_burstnet.js @@ -0,0 +1 @@ +//= require admin/spree_backend diff --git a/app/assets/javascripts/store/spree_burstnet.js b/app/assets/javascripts/store/spree_burstnet.js new file mode 100644 index 0000000..d10fba7 --- /dev/null +++ b/app/assets/javascripts/store/spree_burstnet.js @@ -0,0 +1 @@ +//= require store/spree_frontend diff --git a/app/assets/stylesheets/admin/spree_burstnet.css b/app/assets/stylesheets/admin/spree_burstnet.css new file mode 100644 index 0000000..ff89c72 --- /dev/null +++ b/app/assets/stylesheets/admin/spree_burstnet.css @@ -0,0 +1,3 @@ +/* + *= require admin/spree_backend +*/ diff --git a/app/assets/stylesheets/store/spree_burstnet.css b/app/assets/stylesheets/store/spree_burstnet.css new file mode 100644 index 0000000..bce0f84 --- /dev/null +++ b/app/assets/stylesheets/store/spree_burstnet.css @@ -0,0 +1,3 @@ +/* + *= require store/spree_frontend +*/ diff --git a/app/models/burst_net/backup.rb b/app/models/burst_net/backup.rb new file mode 100644 index 0000000..c350e86 --- /dev/null +++ b/app/models/burst_net/backup.rb @@ -0,0 +1,4 @@ +module BurstNet + class Backup < BurstNet::Model + end +end diff --git a/app/models/burst_net/cp.rb b/app/models/burst_net/cp.rb new file mode 100644 index 0000000..1d30cf4 --- /dev/null +++ b/app/models/burst_net/cp.rb @@ -0,0 +1,4 @@ +module BurstNet + class CP < BurstNet::Model + end +end diff --git a/app/models/burst_net/order.rb b/app/models/burst_net/order.rb new file mode 100644 index 0000000..e75d7b8 --- /dev/null +++ b/app/models/burst_net/order.rb @@ -0,0 +1,24 @@ +module BurstNet + class Product < BurstNet::Model + attr_accessor :id + + def initialize(params) + self.id = params['id'] + end + + def self.all + orders = self.burstnet.get_orders + orders_objs = [] + orders['order'].each do |order| + orders_objs << self.new(order) + end + orders_objs + end + + # Find a particular product, based on its name + def self.find(id) + order = self.burstnet.get_order(id) + self.new(order['order']) + end + end +end diff --git a/app/models/burst_net/os.rb b/app/models/burst_net/os.rb new file mode 100644 index 0000000..d07eba4 --- /dev/null +++ b/app/models/burst_net/os.rb @@ -0,0 +1,4 @@ +module BurstNet + class OS < BurstNet::Model + end +end diff --git a/app/models/burst_net/product.rb b/app/models/burst_net/product.rb new file mode 100644 index 0000000..587a175 --- /dev/null +++ b/app/models/burst_net/product.rb @@ -0,0 +1,27 @@ +module BurstNet + class Product < BurstNet::Model + attr_accessor :id, :name, :description, :config + + def initialize(params) + self.id = params['id'] + self.name = params['name'] + self.description = params['description'] + self.config = params['config'] unless params['config'].nil? + end + + def self.all + products = self.burstnet.get_products + products_objs = [] + products['product'].each do |prod| + products_objs << self.new(prod) + end + products_objs + end + + # Find a particular product, based on its name + def self.find(id) + product = self.burstnet.get_product(id) + self.new(product['product']) + end + end +end diff --git a/app/models/burst_net/service.rb b/app/models/burst_net/service.rb new file mode 100644 index 0000000..da6e77b --- /dev/null +++ b/app/models/burst_net/service.rb @@ -0,0 +1,34 @@ +module BurstNet + class Service < BurstNet::Model + attr_accessor :id, :name, :hostname, :order_id, :status, :product_id, :dedicatedip, :assignedips, :username, :password + + def initialize(params) + self.id = params['id'] + self.name = params['name'] + self.hostname = params['hostname'] + self.order_id = params['order'] + self.status = params['status'] + self.product_id = params['pid '] + self.dedicatedip = params['dedicatedip'] + self.assignedips = params['assignedips'] + self.username = params['username'] + self.password = params['password'] + end + + def self.all + services = self.burstnet.get_services + services_objs = [] + yield services_objs unless services.kind_of?(Array) + services.each do |serv| + services_objs << self.new(serv) + end + services_objs + end + + # Find a particular service, based on its name + def self.find(id) + service = self.burstnet.get_service(id) + self.new(service) + end + end +end diff --git a/app/models/burst_net/site.rb b/app/models/burst_net/site.rb new file mode 100644 index 0000000..236d48f --- /dev/null +++ b/app/models/burst_net/site.rb @@ -0,0 +1,4 @@ +module BurstNet + class Site < BurstNet::Model + end +end diff --git a/config/initializers/burst_net.rb.example b/config/initializers/burst_net.rb.example new file mode 100644 index 0000000..b23bc0e --- /dev/null +++ b/config/initializers/burst_net.rb.example @@ -0,0 +1,3 @@ +BurstNet::API.configure do |config| + config[:basic_auth] = {:username => 'username', :password => 'password'} +end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000..179c14c --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,5 @@ +# Sample localization file for English. Add more files in this directory for other locales. +# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +en: + hello: "Hello world" diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000..53e2eeb --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,3 @@ +Spree::Core::Engine.routes.draw do + # Add your extension routes here +end diff --git a/db/migrate/20130529065305_create_orders.rb b/db/migrate/20130529065305_create_orders.rb new file mode 100644 index 0000000..53b8481 --- /dev/null +++ b/db/migrate/20130529065305_create_orders.rb @@ -0,0 +1,8 @@ +class CreateOrders < ActiveRecord::Migration + def change + create_table :orders do |t| + + t.timestamps + end + end +end diff --git a/lib/burst_net/api.rb b/lib/burst_net/api.rb new file mode 100644 index 0000000..0f8ffaf --- /dev/null +++ b/lib/burst_net/api.rb @@ -0,0 +1,161 @@ +require 'rubygems' +require 'httparty' +require 'json' + +=begin BurstNet API methods + GET order + GET order/:id + GET order/active/ + GET order/cancelled/ + GET order/fraud/ + GET order/pending/ + GET product + GET product/:id + GET product/backup/ + GET product/backup/:id + GET product/cp/ + GET product/cp/:id + GET product/os/ + GET product/os/:id + GET product/site/ + GET product/site/:id + GET service + GET service/:id + GET service/active/ + GET service/cancelled/ + GET service/fraud/ + GET service/pending/ + GET service/suspended/ + GET service/terminated/ + POST order + POST service/:id + PUT service/:id +=end +module BurstNet + class API + include HTTParty + base_uri 'https://rsapi.burst.net' + format :json + headers 'Accept' => 'application/json', 'Content-Type' => 'application/json' + + def self.configuration + @configuration ||= {} + end + + def self.configure + yield(configuration) if block_given? + end + + def initialize + self.class.default_options.merge!(self.class.configuration) + end + + def get(path, options = {}) + response = self.class.get(path, options) + if response.success? + response.parsed_response + else + raise response.response + end + end + + def post(path, options = {}) + response = self.class.post(path, options).parsed_response + if response.success? + response.parsed_response + else + raise response.response + end + end + + def put(path, options = {}) + response = self.class.put(path, options).parsed_response + if response.success? + response.parsed_response + else + raise response.response + end + end + + def delete(path, options = {}) + response = self.class.delete(path, options).parsed_response + if response.success? + response.parsed_response + else + raise response.response + end + end + + def get_products + self.get('/product') + end + + def get_product(id) + self.get("/product/#{id}") + end + + def get_product_backup(id) + self.get("/product/backup/#{id}") + end + + def get_product_cp(id) + self.get("/product/cp/#{id}") + end + + def get_product_os(id) + self.get("/product/os/#{id}") + end + + def get_product_site(id) + self.get("/product/site/#{id}") + end + + def get_services + self.get('/service') + end + + def get_service(id) + self.get("/service/#{id}") + end + + def terminate_service(id) + self.delete("/service/#{id}") + end + + def change_service(id, params) + options = {:body => params} + self.post(id, options) + end + + def update_service(id, params) + options = {:body => params} + self.put(id, options) + end + + def get_services_by_status(status) + possible_status = %w(active cancelled fraud pending suspended terminated) + raise('Unknown service status') unless possible_status.include?(status) + self.get("/service/#{status}") + end + + def get_orders + self.get('/order') + end + + def get_orders_by_status(status) + possible_status = %w(active cancelled fraud pending) + raise('Unknown order status') unless possible_status.include?(status) + self.get("/order/#{status}") + end + + def get_order(id) + self.get("/order/#{id}") + end + + def create_order(params) + options = {:body => params} + self.post(id, options) + end + + end +end diff --git a/lib/burst_net/model.rb b/lib/burst_net/model.rb new file mode 100644 index 0000000..5309e0d --- /dev/null +++ b/lib/burst_net/model.rb @@ -0,0 +1,7 @@ +module BurstNet + class Model + def self.burstnet + @burstnet ||= BurstNet::API.new + end + end +end \ No newline at end of file diff --git a/lib/burst_net_parser.rb b/lib/burst_net_parser.rb new file mode 100644 index 0000000..b9dee36 --- /dev/null +++ b/lib/burst_net_parser.rb @@ -0,0 +1,15 @@ +class BurstNetParser < Faraday::Response::Middleware + def on_complete(env) + json = MultiJson.load(env[:body], symbolize_keys: true) + json.each do |k, v| + if k == :product + json = v[0] + break + end + end + puts json + env[:body] = { + data: json, + } + end +end \ No newline at end of file diff --git a/lib/generators/spree_burstnet/install/install_generator.rb b/lib/generators/spree_burstnet/install/install_generator.rb new file mode 100644 index 0000000..776a4b9 --- /dev/null +++ b/lib/generators/spree_burstnet/install/install_generator.rb @@ -0,0 +1,31 @@ +module SpreeBurstnet + module Generators + class InstallGenerator < Rails::Generators::Base + + class_option :auto_run_migrations, :type => :boolean, :default => false + + def add_javascripts + append_file 'app/assets/javascripts/store/all.js', "//= require store/spree_burstnet\n" + append_file 'app/assets/javascripts/admin/all.js', "//= require admin/spree_burstnet\n" + end + + def add_stylesheets + inject_into_file 'app/assets/stylesheets/store/all.css', " *= require store/spree_burstnet\n", :before => /\*\//, :verbose => true + inject_into_file 'app/assets/stylesheets/admin/all.css', " *= require admin/spree_burstnet\n", :before => /\*\//, :verbose => true + end + + def add_migrations + run 'bundle exec rake railties:install:migrations FROM=spree_burstnet' + end + + def run_migrations + run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]') + if run_migrations + run 'bundle exec rake db:migrate' + else + puts 'Skipping rake db:migrate, don\'t forget to run it!' + end + end + end + end +end diff --git a/lib/spree_burstnet.rb b/lib/spree_burstnet.rb new file mode 100644 index 0000000..e4c4090 --- /dev/null +++ b/lib/spree_burstnet.rb @@ -0,0 +1,3 @@ +require 'spree_core' +require 'spree_burstnet/engine' +require 'httparty' diff --git a/lib/spree_burstnet/engine.rb b/lib/spree_burstnet/engine.rb new file mode 100644 index 0000000..940d7d7 --- /dev/null +++ b/lib/spree_burstnet/engine.rb @@ -0,0 +1,22 @@ +module SpreeBurstnet + class Engine < Rails::Engine + require 'spree/core' + isolate_namespace Spree + engine_name 'spree_burstnet' + + config.autoload_paths += %W(#{config.root}/lib) + + # use rspec for tests + config.generators do |g| + g.test_framework :rspec + end + + def self.activate + Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c| + Rails.configuration.cache_classes ? require(c) : load(c) + end + end + + config.to_prepare &method(:activate).to_proc + end +end diff --git a/lib/spree_burstnet/factories.rb b/lib/spree_burstnet/factories.rb new file mode 100644 index 0000000..37eaf81 --- /dev/null +++ b/lib/spree_burstnet/factories.rb @@ -0,0 +1,6 @@ +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_burstnet/factories' +end diff --git a/script/rails b/script/rails new file mode 100644 index 0000000..9e9b48b --- /dev/null +++ b/script/rails @@ -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_burstnet/engine', __FILE__) + +require 'rails/all' +require 'rails/engine/commands' diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..becd61d --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,81 @@ +# Run Coverage report +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 'database_cleaner' +require 'ffaker' + +# 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 } + +# Requires factories defined in spree_core +require 'spree/testing_support/factories' +require 'spree/testing_support/controller_requests' +require 'spree/testing_support/authorization_helpers' +require 'spree/testing_support/url_helpers' + +# Requires factories defined in lib/spree_burstnet/factories.rb +require 'spree_burstnet/factories' + +RSpec.configure do |config| + config.include FactoryGirl::Syntax::Methods + + # == 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 + + # == 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 + + # Ensure Suite is set to use transactions for speed. + config.before :suite do + DatabaseCleaner.strategy = :transaction + DatabaseCleaner.clean_with :truncation + end + + # 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 + end + + # After each spec clean the database. + config.after :each do + DatabaseCleaner.clean + end + + config.fail_fast = ENV['FAIL_FAST'] || false +end diff --git a/spree_burstnet.gemspec b/spree_burstnet.gemspec new file mode 100644 index 0000000..6874627 --- /dev/null +++ b/spree_burstnet.gemspec @@ -0,0 +1,32 @@ +# encoding: UTF-8 +Gem::Specification.new do |s| + s.platform = Gem::Platform::RUBY + s.name = 'spree_burstnet' + s.version = '2.0.0' + s.summary = 'BurstNet API implementation' + s.description = 'Allow a store to use BurstNet API to sell products' + s.required_ruby_version = '>= 1.9.3' + + s.author = 'Dinis Lage' + s.email = 'dinis@lage.pw' + s.homepage = 'http://www.lage.pw' + + #s.files = `git ls-files`.split("\n") + #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") + s.require_path = 'lib' + s.requirements << 'none' + + s.add_dependency 'spree_core', '~> 2.0.0' + s.add_dependency 'httparty' + + s.add_development_dependency 'capybara', '~> 2.1' + s.add_development_dependency 'coffee-rails' + s.add_development_dependency 'database_cleaner' + 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