spree_devices 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.rspec +1 -0
- data/.rubocop +2 -0
- data/.rubocop.yml +37 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +402 -0
- data/Jenkinsfile +68 -0
- data/LICENSE +26 -0
- data/README.md +33 -0
- data/Rakefile +21 -0
- data/app/assets/javascripts/spree/backend/spree_devices.js +2 -0
- data/app/assets/javascripts/spree/frontend/spree_devices.js +2 -0
- data/app/assets/stylesheets/spree/backend/spree_devices.css +4 -0
- data/app/assets/stylesheets/spree/frontend/spree_devices.css +4 -0
- data/app/controllers/spree/api/base_controller_decorator.rb +24 -0
- data/app/controllers/spree/api/v1/devices_controller.rb +24 -0
- data/app/controllers/spree/devices_controller.rb +22 -0
- data/app/models/spree/device.rb +6 -0
- data/app/models/spree/user_decorator.rb +4 -0
- data/app/models/spree/user_device.rb +17 -0
- data/app/overrides/spree/users/show/add_devices_to_account_my_orders.html.erb.deface +2 -0
- data/app/services/spree/device_service.rb +36 -0
- data/app/views/spree/api/v1/devices/index.v1.rabl +2 -0
- data/app/views/spree/api/v1/devices/show.v1.rabl +2 -0
- data/app/views/spree/api/v1/shared/error.v1.rabl +5 -0
- data/app/views/spree/devices/index.html.erb +20 -0
- data/bin/rails +7 -0
- data/config/locales/ar.yml +3 -0
- data/config/locales/en.yml +6 -0
- data/config/routes.rb +11 -0
- data/db/migrate/20160317153123_create_devices.rb +9 -0
- data/db/migrate/20160317154122_create_user_devices.rb +9 -0
- data/db/migrate/20160321135103_rename_device_code_to_device_uid.rb +5 -0
- data/db/migrate/20160511093138_rename_devices_tables.rb +6 -0
- data/lib/generators/spree_devices/install/install_generator.rb +33 -0
- data/lib/spree_devices.rb +5 -0
- data/lib/spree_devices/engine.rb +31 -0
- data/lib/spree_devices/engine_factories/device_factory.rb +6 -0
- data/lib/spree_devices/engine_factories/user_device_factory.rb +6 -0
- data/lib/spree_devices/factories.rb +5 -0
- data/spec/api/v1/devices_spec.rb +96 -0
- data/spec/api/v1/products_spec.rb +33 -0
- data/spec/controllers/devices_controller_spec.rb +50 -0
- data/spec/spec_helper.rb +97 -0
- data/spec/support/devices_api.rb +22 -0
- data/spec/utils/rubocop_spec.rb +8 -0
- data/spree_devices.gemspec +26 -0
- metadata +215 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
module SpreeDevices
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
require 'spree/core'
|
4
|
+
isolate_namespace Spree
|
5
|
+
engine_name 'spree_devices'
|
6
|
+
|
7
|
+
# use rspec for tests
|
8
|
+
config.generators do |g|
|
9
|
+
g.test_framework :rspec
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.activate
|
13
|
+
Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
|
14
|
+
Rails.configuration.cache_classes ? require(c) : load(c)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
config.to_prepare(&method(:activate).to_proc)
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.setup(&block)
|
22
|
+
@config ||= SpreeDevices::Engine::Configuration.new
|
23
|
+
yield @config if block
|
24
|
+
|
25
|
+
@config
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.config
|
29
|
+
Rails.application.config
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'API', type: :request do
|
4
|
+
include DevicesAPISupport
|
5
|
+
|
6
|
+
describe 'POST /api/v1/devices' do
|
7
|
+
before :each do
|
8
|
+
@user = create(:user, email: FFaker::Internet.email, password: FFaker::Internet.password)
|
9
|
+
@headers = request_headers(@user)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'registers new user device' do
|
13
|
+
device_name = 'iPhone 6'
|
14
|
+
uid = FFaker::Guid.guid
|
15
|
+
|
16
|
+
post '/api/v1/devices', params: { name: device_name, uid: uid }.to_json, headers: @headers
|
17
|
+
|
18
|
+
expect(status).to eq 200
|
19
|
+
device = Spree::Device.where(name: device_name, uid: uid).first
|
20
|
+
expect(device).not_to be_nil
|
21
|
+
expect(Spree::UserDevice.where(device: device, user: @user).first).not_to be_nil
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'registers existing user device' do
|
25
|
+
max_number_of_devices = SpreeDevices.config.try(:max_number_of_devices) || 3
|
26
|
+
|
27
|
+
device = nil
|
28
|
+
max_number_of_devices.times do
|
29
|
+
device = create(:device)
|
30
|
+
create(:user_device, user: @user, device: device)
|
31
|
+
end
|
32
|
+
|
33
|
+
post '/api/v1/devices', params: { name: device.name, uid: device.uid }.to_json, headers: @headers
|
34
|
+
|
35
|
+
expect(status).to eq 200
|
36
|
+
expect(Spree::Device.count).to eq max_number_of_devices
|
37
|
+
expect(Spree::UserDevice.where(user: @user).count).to eq max_number_of_devices
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when device limit is reached' do
|
41
|
+
it 'blocks registering the device' do
|
42
|
+
device_name = 'iPhone 6'
|
43
|
+
uid = FFaker::Guid.guid
|
44
|
+
max_number_of_devices = SpreeDevices.config.try(:max_number_of_devices) || 3
|
45
|
+
|
46
|
+
max_number_of_devices.times do
|
47
|
+
create(:user_device, user: @user, device: create(:device))
|
48
|
+
end
|
49
|
+
|
50
|
+
post '/api/v1/devices', params: { name: device_name, uid: uid }.to_json, headers: @headers
|
51
|
+
|
52
|
+
expect(status).to eq 422
|
53
|
+
parsed_response = JSON.parse(response.body)
|
54
|
+
expect(parsed_response['error']).not_to be_nil
|
55
|
+
expect(parsed_response['errors']['device']).not_to be_nil
|
56
|
+
expect(Spree::Device.count).to eq max_number_of_devices
|
57
|
+
expect(Spree::UserDevice.where(user: @user).count).to eq max_number_of_devices
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'when device is missing parameters' do
|
62
|
+
it 'blocks registering the device' do
|
63
|
+
device = create(:device)
|
64
|
+
create(:user_device, user: @user, device: device)
|
65
|
+
|
66
|
+
post '/api/v1/devices', params: { name: nil, uid: nil }.to_json, headers: @headers
|
67
|
+
|
68
|
+
expect(status).to eq 422
|
69
|
+
parsed_response = JSON.parse(response.body)
|
70
|
+
expect(parsed_response['error']).not_to be_nil
|
71
|
+
expect(parsed_response['errors']['device']).not_to be_nil
|
72
|
+
expect(Spree::Device.count).to eq 1
|
73
|
+
expect(Spree::UserDevice.where(user: @user).count).to eq 1
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when multiple users has the same device' do
|
78
|
+
it 'registers same user device' do
|
79
|
+
user1 = create(:user, email: FFaker::Internet.email, password: FFaker::Internet.password)
|
80
|
+
user2 = create(:user, email: FFaker::Internet.email, password: FFaker::Internet.password)
|
81
|
+
user3 = create(:user, email: FFaker::Internet.email, password: FFaker::Internet.password)
|
82
|
+
device = create(:device)
|
83
|
+
|
84
|
+
create(:user_device, user: user1, device: device)
|
85
|
+
create(:user_device, user: user2, device: device)
|
86
|
+
create(:user_device, user: user3, device: device)
|
87
|
+
|
88
|
+
post '/api/v1/devices', params: { name: device.name, uid: device.uid }.to_json, headers: @headers
|
89
|
+
|
90
|
+
expect(status).to eq 200
|
91
|
+
expect(Spree::Device.count).to eq 1
|
92
|
+
expect(Spree::UserDevice.count).to eq 4
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'API', type: :request do
|
4
|
+
include DevicesAPISupport
|
5
|
+
|
6
|
+
describe 'GET /api/v1/products' do
|
7
|
+
before :each do
|
8
|
+
@user = create(:user, email: 'test@ingemark.com', password: 'password')
|
9
|
+
@user.generate_spree_api_key!
|
10
|
+
@device = create(:device)
|
11
|
+
create(:user_device, user: @user, device: @device)
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when valid device name and uid headers are provided' do
|
15
|
+
it 'lists protected resource' do
|
16
|
+
headers = request_headers_with_device(@user, @device)
|
17
|
+
|
18
|
+
get '/api/v1/products', params: {}, headers: headers
|
19
|
+
expect(status).to eq 200
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when invalid device name and uid headers are provided' do
|
24
|
+
it 'does not list protected resource' do
|
25
|
+
unused_device = create(:device)
|
26
|
+
headers = request_headers_with_device(@user, unused_device)
|
27
|
+
|
28
|
+
get '/api/v1/products', params: {}, headers: headers
|
29
|
+
expect(status).to eq 401
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Spree::DevicesController, type: :controller do
|
4
|
+
context 'when there are 3 user devices' do
|
5
|
+
before :each do
|
6
|
+
user = create(:user, email: FFaker::Internet.email, password: FFaker::Internet.password)
|
7
|
+
allow(controller).to receive(:spree_current_user).and_return(user)
|
8
|
+
device1 = create(:device)
|
9
|
+
device2 = create(:device)
|
10
|
+
device3 = create(:device)
|
11
|
+
@user_device1 = create(:user_device, user: user, device: device1)
|
12
|
+
@user_device2 = create(:user_device, user: user, device: device2)
|
13
|
+
@user_device3 = create(:user_device, user: user, device: device3)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'lists user devices' do
|
17
|
+
get :index
|
18
|
+
|
19
|
+
expect(response.status).to eq 200
|
20
|
+
expect(response).to render_template('index')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'deletes user device' do
|
24
|
+
delete :destroy, params: { id: @user_device3.device.id }
|
25
|
+
|
26
|
+
expect(response.status).to eq 302
|
27
|
+
expect(response).to redirect_to(devices_url)
|
28
|
+
expect(Spree::Device.count).to eq 2
|
29
|
+
expect(Spree::UserDevice.count).to eq 2
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when there are two users on the same device' do
|
34
|
+
it 'deletes user device' do
|
35
|
+
user1 = create(:user, email: FFaker::Internet.email, password: FFaker::Internet.password)
|
36
|
+
user2 = create(:user, email: FFaker::Internet.email, password: FFaker::Internet.password)
|
37
|
+
allow(controller).to receive(:spree_current_user).and_return(user1)
|
38
|
+
device = create(:device)
|
39
|
+
user_device1 = create(:user_device, user: user1, device: device)
|
40
|
+
create(:user_device, user: user2, device: device)
|
41
|
+
|
42
|
+
delete :destroy, params: { id: user_device1.device.id }
|
43
|
+
|
44
|
+
expect(response.status).to eq 302
|
45
|
+
expect(response).to redirect_to(devices_url)
|
46
|
+
expect(Spree::Device.count).to eq 1
|
47
|
+
expect(Spree::UserDevice.count).to eq 1
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
# Run Coverage report
|
2
|
+
require 'simplecov'
|
3
|
+
|
4
|
+
SimpleCov.start do
|
5
|
+
add_filter 'spec/dummy'
|
6
|
+
add_group 'Controllers', 'app/controllers'
|
7
|
+
add_group 'Helpers', 'app/helpers'
|
8
|
+
add_group 'Mailers', 'app/mailers'
|
9
|
+
add_group 'Models', 'app/models'
|
10
|
+
add_group 'Views', 'app/views'
|
11
|
+
add_group 'Libraries', 'lib'
|
12
|
+
end
|
13
|
+
|
14
|
+
# Configure Rails Environment
|
15
|
+
ENV['RAILS_ENV'] = 'test'
|
16
|
+
|
17
|
+
require File.expand_path('dummy/config/environment.rb', __dir__)
|
18
|
+
|
19
|
+
require 'rspec/rails'
|
20
|
+
require 'database_cleaner'
|
21
|
+
require 'ffaker'
|
22
|
+
|
23
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
24
|
+
# in spec/support/ and its subdirectories.
|
25
|
+
Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
|
26
|
+
|
27
|
+
# Requires factories and other useful helpers defined in spree_core.
|
28
|
+
require 'spree/testing_support/authorization_helpers'
|
29
|
+
require 'spree/testing_support/capybara_ext'
|
30
|
+
require 'spree/testing_support/controller_requests'
|
31
|
+
require 'spree/testing_support/factories'
|
32
|
+
require 'spree/testing_support/url_helpers'
|
33
|
+
|
34
|
+
# Requires factories defined in lib/spree_devices/factories.rb
|
35
|
+
require 'spree_devices/factories'
|
36
|
+
|
37
|
+
RSpec.configure do |config|
|
38
|
+
config.include FactoryBot::Syntax::Methods
|
39
|
+
|
40
|
+
# Infer an example group's spec type from the file location.
|
41
|
+
config.infer_spec_type_from_file_location!
|
42
|
+
|
43
|
+
# == URL Helpers
|
44
|
+
#
|
45
|
+
# Allows access to Spree's routes in specs:
|
46
|
+
#
|
47
|
+
# visit spree.admin_path
|
48
|
+
# current_path.should eql(spree.products_path)
|
49
|
+
config.include Spree::TestingSupport::UrlHelpers
|
50
|
+
|
51
|
+
# == Requests support
|
52
|
+
#
|
53
|
+
# Adds convenient methods to request Spree's controllers
|
54
|
+
# spree_get :index
|
55
|
+
config.include Spree::TestingSupport::ControllerRequests, type: :controller
|
56
|
+
|
57
|
+
# == Mock Framework
|
58
|
+
#
|
59
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
60
|
+
#
|
61
|
+
# config.mock_with :mocha
|
62
|
+
# config.mock_with :flexmock
|
63
|
+
# config.mock_with :rr
|
64
|
+
config.mock_with :rspec
|
65
|
+
config.color = true
|
66
|
+
|
67
|
+
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
|
68
|
+
config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
69
|
+
|
70
|
+
# Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
|
71
|
+
# to cleanup after each test instead. Without transactional fixtures set to false the records created
|
72
|
+
# to setup a test will be unavailable to the browser, which runs under a separate server instance.
|
73
|
+
config.use_transactional_fixtures = false
|
74
|
+
|
75
|
+
# Ensure Suite is set to use transactions for speed.
|
76
|
+
config.before :suite do
|
77
|
+
DatabaseCleaner.strategy = :transaction
|
78
|
+
DatabaseCleaner.clean_with :truncation
|
79
|
+
end
|
80
|
+
|
81
|
+
# Before each spec check if it is a Javascript test and switch between using
|
82
|
+
# database transactions or not where necessary.
|
83
|
+
config.before :each do
|
84
|
+
DatabaseCleaner.strategy = RSpec.current_example.metadata[:js] ? :truncation : :transaction
|
85
|
+
DatabaseCleaner.start
|
86
|
+
end
|
87
|
+
|
88
|
+
# After each spec clean the database.
|
89
|
+
config.after :each do
|
90
|
+
DatabaseCleaner.clean
|
91
|
+
end
|
92
|
+
|
93
|
+
config.fail_fast = ENV['FAIL_FAST'] || false
|
94
|
+
config.order = 'random'
|
95
|
+
|
96
|
+
config.include Warden::Test::Helpers
|
97
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module DevicesAPISupport
|
2
|
+
def request_headers(user)
|
3
|
+
user.generate_spree_api_key!
|
4
|
+
{
|
5
|
+
'X-Spree-Token' => user.spree_api_key,
|
6
|
+
'Content-Type' => 'application/json',
|
7
|
+
'Accept' => 'application/json'
|
8
|
+
}
|
9
|
+
end
|
10
|
+
|
11
|
+
def request_headers_with_device(user, device)
|
12
|
+
user.generate_spree_api_key!
|
13
|
+
{
|
14
|
+
'X-Spree-Token' => user.spree_api_key,
|
15
|
+
'Content-Type' => 'application/json',
|
16
|
+
'Accept' => 'application/json',
|
17
|
+
'Device-Name' => device.name,
|
18
|
+
'Device-Uid' => device.uid,
|
19
|
+
'X-OS' => 'iOS'
|
20
|
+
}
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# require_relative 'core/lib/spree/core/version.rb'
|
2
|
+
Gem::Specification.new do |s|
|
3
|
+
s.platform = Gem::Platform::RUBY
|
4
|
+
s.name = 'spree_devices'
|
5
|
+
s.version = '1.2.0'
|
6
|
+
s.summary = ''
|
7
|
+
s.description = ''
|
8
|
+
s.required_ruby_version = '>= 2.4.1'
|
9
|
+
|
10
|
+
s.author = 'Matej Minažek'
|
11
|
+
s.email = 'matej.minazek@ingemark.com'
|
12
|
+
s.homepage = 'http://ingemark.com'
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.require_path = 'lib'
|
16
|
+
|
17
|
+
s.add_runtime_dependency 'spree_api', ['>= 3.1.0', '<4.0']
|
18
|
+
s.add_runtime_dependency 'spree_core', ['>= 3.1.0', '<4.0']
|
19
|
+
|
20
|
+
s.add_development_dependency 'coffee-rails'
|
21
|
+
s.add_development_dependency 'database_cleaner'
|
22
|
+
s.add_development_dependency 'ffaker'
|
23
|
+
s.add_development_dependency 'poltergeist'
|
24
|
+
s.add_development_dependency 'sass-rails'
|
25
|
+
s.add_development_dependency 'sqlite3'
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: spree_devices
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matej Minažek
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-03-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: spree_api
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.1.0
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '4.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.1.0
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '4.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: spree_core
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 3.1.0
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '4.0'
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 3.1.0
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '4.0'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: coffee-rails
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: database_cleaner
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: ffaker
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: poltergeist
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
- !ruby/object:Gem::Dependency
|
110
|
+
name: sass-rails
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
type: :development
|
117
|
+
prerelease: false
|
118
|
+
version_requirements: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: sqlite3
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
type: :development
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
description: ''
|
138
|
+
email: matej.minazek@ingemark.com
|
139
|
+
executables: []
|
140
|
+
extensions: []
|
141
|
+
extra_rdoc_files: []
|
142
|
+
files:
|
143
|
+
- ".gitignore"
|
144
|
+
- ".rspec"
|
145
|
+
- ".rubocop"
|
146
|
+
- ".rubocop.yml"
|
147
|
+
- ".ruby-gemset"
|
148
|
+
- ".ruby-version"
|
149
|
+
- Gemfile
|
150
|
+
- Gemfile.lock
|
151
|
+
- Jenkinsfile
|
152
|
+
- LICENSE
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- app/assets/javascripts/spree/backend/spree_devices.js
|
156
|
+
- app/assets/javascripts/spree/frontend/spree_devices.js
|
157
|
+
- app/assets/stylesheets/spree/backend/spree_devices.css
|
158
|
+
- app/assets/stylesheets/spree/frontend/spree_devices.css
|
159
|
+
- app/controllers/spree/api/base_controller_decorator.rb
|
160
|
+
- app/controllers/spree/api/v1/devices_controller.rb
|
161
|
+
- app/controllers/spree/devices_controller.rb
|
162
|
+
- app/models/spree/device.rb
|
163
|
+
- app/models/spree/user_decorator.rb
|
164
|
+
- app/models/spree/user_device.rb
|
165
|
+
- app/overrides/spree/users/show/add_devices_to_account_my_orders.html.erb.deface
|
166
|
+
- app/services/spree/device_service.rb
|
167
|
+
- app/views/spree/api/v1/devices/index.v1.rabl
|
168
|
+
- app/views/spree/api/v1/devices/show.v1.rabl
|
169
|
+
- app/views/spree/api/v1/shared/error.v1.rabl
|
170
|
+
- app/views/spree/devices/index.html.erb
|
171
|
+
- bin/rails
|
172
|
+
- config/locales/ar.yml
|
173
|
+
- config/locales/en.yml
|
174
|
+
- config/routes.rb
|
175
|
+
- db/migrate/20160317153123_create_devices.rb
|
176
|
+
- db/migrate/20160317154122_create_user_devices.rb
|
177
|
+
- db/migrate/20160321135103_rename_device_code_to_device_uid.rb
|
178
|
+
- db/migrate/20160511093138_rename_devices_tables.rb
|
179
|
+
- lib/generators/spree_devices/install/install_generator.rb
|
180
|
+
- lib/spree_devices.rb
|
181
|
+
- lib/spree_devices/engine.rb
|
182
|
+
- lib/spree_devices/engine_factories/device_factory.rb
|
183
|
+
- lib/spree_devices/engine_factories/user_device_factory.rb
|
184
|
+
- lib/spree_devices/factories.rb
|
185
|
+
- spec/api/v1/devices_spec.rb
|
186
|
+
- spec/api/v1/products_spec.rb
|
187
|
+
- spec/controllers/devices_controller_spec.rb
|
188
|
+
- spec/spec_helper.rb
|
189
|
+
- spec/support/devices_api.rb
|
190
|
+
- spec/utils/rubocop_spec.rb
|
191
|
+
- spree_devices.gemspec
|
192
|
+
homepage: http://ingemark.com
|
193
|
+
licenses: []
|
194
|
+
metadata: {}
|
195
|
+
post_install_message:
|
196
|
+
rdoc_options: []
|
197
|
+
require_paths:
|
198
|
+
- lib
|
199
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: 2.4.1
|
204
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
requirements: []
|
210
|
+
rubyforge_project:
|
211
|
+
rubygems_version: 2.6.13
|
212
|
+
signing_key:
|
213
|
+
specification_version: 4
|
214
|
+
summary: ''
|
215
|
+
test_files: []
|