solidus_log_viewer 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7c5954df032c67c0e0a9acf11f89cf09d044f10e
4
+ data.tar.gz: 4ed80f5bcb82e6bcf01c0b346b6d9b869c021e5b
5
+ SHA512:
6
+ metadata.gz: 97b285f846298675983d96e11a2c3c3bc615ad7c94559c252eae92ef57b1171c6f2cb4f060b81ea2da5c3b3ec22177983c71d33c05c40349137eb7dda0a8b34b
7
+ data.tar.gz: fdbd75bbde727f4f35f25d9b7b8c431ea1dfabab61679fd02a154764b84218f00de48b90622bae3ff4d89791e8a9b29df8be8bf00e182bb129fb36d6368bb1e8
@@ -0,0 +1,11 @@
1
+ \#*
2
+ *~
3
+ .#*
4
+ .DS_Store
5
+ .idea
6
+ .project
7
+ tmp
8
+ nbproject
9
+ *.swp
10
+ Gemfile.lock
11
+ spec/dummy
@@ -0,0 +1,21 @@
1
+ sudo: false
2
+ cache: bundler
3
+ language: ruby
4
+ rvm:
5
+ - 2.3.1
6
+ env:
7
+ matrix:
8
+ - SOLIDUS_BRANCH=v1.0 DB=postgres
9
+ - SOLIDUS_BRANCH=v1.1 DB=postgres
10
+ - SOLIDUS_BRANCH=v1.2 DB=postgres
11
+ - SOLIDUS_BRANCH=v1.3 DB=postgres
12
+ - SOLIDUS_BRANCH=v1.4 DB=postgres
13
+ - SOLIDUS_BRANCH=v2.0 DB=postgres
14
+ - SOLIDUS_BRANCH=master DB=postgres
15
+ - SOLIDUS_BRANCH=v1.0 DB=mysql
16
+ - SOLIDUS_BRANCH=v1.1 DB=mysql
17
+ - SOLIDUS_BRANCH=v1.2 DB=mysql
18
+ - SOLIDUS_BRANCH=v1.3 DB=mysql
19
+ - SOLIDUS_BRANCH=v1.4 DB=mysql
20
+ - SOLIDUS_BRANCH=v2.0 DB=mysql
21
+ - SOLIDUS_BRANCH=master DB=mysql
data/Gemfile ADDED
@@ -0,0 +1,18 @@
1
+ source "https://rubygems.org"
2
+
3
+ branch = ENV.fetch('SOLIDUS_BRANCH', 'master')
4
+ gem "solidus", github: "solidusio/solidus", branch: branch
5
+ gem 'solidus_auth_devise'
6
+
7
+ if branch == 'master' || branch >= "v2.0"
8
+ gem "rails-controller-testing", group: :test
9
+ end
10
+
11
+ gem 'pg'
12
+ gem 'mysql2'
13
+
14
+ group :development, :test do
15
+ gem "pry-rails"
16
+ end
17
+
18
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Redistribution and use in source and binary forms, with or without modification,
2
+ are permitted provided that the following conditions are met:
3
+
4
+ * Redistributions of source code must retain the above copyright notice,
5
+ this list of conditions and the following disclaimer.
6
+ * Redistributions in binary form must reproduce the above copyright notice,
7
+ this list of conditions and the following disclaimer in the documentation
8
+ and/or other materials provided with the distribution.
9
+ * Neither the name of the Rails Dog LLC nor the names of its
10
+ contributors may be used to endorse or promote products derived from this
11
+ software without specific prior written permission.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,39 @@
1
+ Solidus Log Viewer
2
+ ==============
3
+
4
+ [![Build Status](https://travis-ci.org/solidusio-contrib/solidus_log_viewer.svg?branch=master)](https://travis-ci.org/solidusio-contrib/solidus_log_viewer)
5
+
6
+ A log viewer for Solidus
7
+
8
+ Makes it easy for admin to view logs. Logs are anything in the log_entries table.
9
+
10
+ Currently only the payment model uses it, but the LogEntry is polymorphic so it will work with any other model
11
+
12
+ NOTE: app/views/admin/payments/_list.html.erb is overwritten by this gem
13
+
14
+
15
+ Routes
16
+ ==========
17
+
18
+ You will get the following route:
19
+
20
+ `admin_log_entries_path`
21
+
22
+ You can optionally pass filters:
23
+
24
+ `admin_log_entries_path(:source_type => 'Payment', :source_id => @payment.id)`
25
+
26
+ Installation
27
+ =======
28
+
29
+ Add this to your `Gemfile`
30
+
31
+ `gem 'solidus_log_viewer', github: 'solidusio-contrib/solidus_log_viewer'`
32
+
33
+ Run bundler
34
+
35
+ `bundle`
36
+
37
+ And you are done!!
38
+
39
+ Copyright (c) 2011 Dynamo Design Studio, released under the New BSD License
@@ -0,0 +1,21 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ require 'spree/testing_support/common_rake'
6
+
7
+ RSpec::Core::RakeTask.new
8
+
9
+ task :default do
10
+ if Dir["spec/dummy"].empty?
11
+ Rake::Task[:test_app].invoke
12
+ Dir.chdir("../../")
13
+ end
14
+ Rake::Task[:spec].invoke
15
+ end
16
+
17
+ desc 'Generates a dummy app for testing'
18
+ task :test_app do
19
+ ENV['LIB_NAME'] = 'solidus_log_viewer'
20
+ Rake::Task['common:test_app'].invoke("Spree::User")
21
+ end
@@ -0,0 +1 @@
1
+ //= require jquery-ui/dialog
@@ -0,0 +1,8 @@
1
+ /*
2
+ *= require jquery-ui/dialog
3
+ */
4
+
5
+ /* Although jQuery UI is still available in the backend, it's not very well supported */
6
+ .ui-front {
7
+ z-index: 10000;
8
+ }
@@ -0,0 +1,19 @@
1
+ module Spree
2
+ module Admin
3
+ class LogEntriesController < ResourceController
4
+
5
+
6
+ private
7
+ def collection
8
+ return @collection if @collection
9
+
10
+ scope = LogEntry.all
11
+
12
+ scope = scope.where(:source_type => params[:source_type]) if params[:source_type]
13
+ scope = scope.where(:source_id => params[:source_id]) if params[:source_id]
14
+
15
+ @collection = scope.page(params[:page])
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ Deface::Override.new(:virtual_path => "spree/admin/payments/_list",
2
+ :name => "add_history_header_to_payments_list",
3
+ :insert_before => "tr[data-hook='payments_header'] th.actions",
4
+ :text => %Q{<th>History</th>})
5
+
6
+
7
+ Deface::Override.new(:virtual_path => "spree/admin/payments/_list",
8
+ :name => "add_history_column_to_payments_list",
9
+ :insert_before => "tr[data-hook='payments_row'] td.actions",
10
+ :partial => "spree/admin/payments/history")
@@ -0,0 +1,50 @@
1
+ <dl>
2
+ <dt>Authorization Code</dt>
3
+ <dd><%= response.try(:authorization)%></dd>
4
+
5
+ <dt>Mode</dt>
6
+ <dd><%= response.try(:test?) ? "Test Mode" : "Production Mode"%></dd>
7
+
8
+ <% if response.try(:avs_result) %>
9
+ <dt>Address Verification (AVS)</dt>
10
+ <dd><%= response.avs_result['message'] %></dd>
11
+ <% end %>
12
+
13
+ <dt>Status</dt>
14
+ <dd><%= response.try(:success?) ? "Success" : "Failure"%></dd>
15
+
16
+ <dt>Mode</dt>
17
+ <dd><%= response.try(:test?) ? "Test Mode" : "Production Mode"%></dd>
18
+ </dl>
19
+
20
+ <% if Spree.respond_to?(:solidus_gem_version) && Spree.solidus_gem_version.release >= Gem::Version.new('1.3') %>
21
+ <%= link_to "More Info", '#', class: 'more_info', "data-toggle" => "modal", "data-target" => "#more_info_#{index}" %>
22
+
23
+ <!-- More Info Modal -->
24
+ <div class="modal fade" id="more_info_<%= index %>" tabindex="-1" role="dialog" aria-hidden="true">
25
+ <div class="modal-dialog" role="document">
26
+ <div class="modal-content">
27
+ <div class="modal-body">
28
+ <%= render(:partial => 'hash_table', :locals => {:hash => response.avs_result, :title => 'Address Verification (AVS)'}) if response.try(:avs_result) %>
29
+ <%= render(:partial => 'hash_table', :locals => {:hash => response.cvv_result, :title => 'Card Code Verfication (CVV)'}) if response.try(:cvv_result) %>
30
+ <%= render(:partial => 'hash_table', :locals => {:hash => response.params, :title => 'More Details'}) if response.try(:params) %>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+
36
+ <script>
37
+ // Bootstrap modals need to be appended to body to display correctly
38
+ // This is a hacky script as an alternative to using Deface to get there
39
+ document.body.appendChild(document.getElementById("more_info_<%= index %>"));
40
+ </script>
41
+
42
+ <% else %>
43
+
44
+ <%= link_to "More Info", '#', class: 'more_info', 'data-index' => index %>
45
+ <div id="more_info_<%= index %>" style="display:none">
46
+ <%= render(:partial => 'hash_table', :locals => {:hash => response.avs_result, :title => 'Address Verification (AVS)'}) if response.try(:avs_result) %>
47
+ <%= render(:partial => 'hash_table', :locals => {:hash => response.cvv_result, :title => 'Card Code Verfication (CVV)'}) if response.try(:cvv_result) %>
48
+ <%= render(:partial => 'hash_table', :locals => {:hash => response.params, :title => 'More Details'}) if response.try(:params) %>
49
+ </div>
50
+ <% end %>
@@ -0,0 +1,27 @@
1
+ <div class="sixteen columns">
2
+ <h3><%= title %></h3>
3
+ <table class="index">
4
+ <thead>
5
+ <tr>
6
+ <% hash.to_a.sort.each do |key, value| %>
7
+ <% next if key.include?('fee') || key.include?('invoice') || key.include?('livemode') %>
8
+ <th><%= key.humanize.titleize %></th>
9
+ <% end %>
10
+ </tr>
11
+ </thead>
12
+ <tbody>
13
+ <tr>
14
+ <% hash.to_a.sort.each do |key, value| %>
15
+ <% next if key.include?('fee') || key.include?('invoice') || key.include?('livemode') %>
16
+ <td>
17
+ <% if value.is_a?(Hash) %>
18
+ <%= debug value %>
19
+ <% else %>
20
+ <%= value %>
21
+ <% end %>
22
+ </td>
23
+ <% end %>
24
+ </tr>
25
+ </tbody>
26
+ </table>
27
+ </div>
@@ -0,0 +1,50 @@
1
+ <% content_for :page_title do %>
2
+ Log Entries
3
+ <% end %>
4
+ <table class="index">
5
+ <thead>
6
+ <tr>
7
+ <th>Source</th>
8
+ <th>Date</th>
9
+ <th width="70%">Details</th>
10
+ <th></th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <% @log_entries.each_with_index do |log_entry, index| %>
15
+ <tr>
16
+ <td><%= log_entry.source_type %></td>
17
+ <td><%= log_entry.created_at %></td>
18
+ <td>
19
+ <% if log_entry.details.present? %>
20
+ <% object = YAML.load(log_entry.details) %>
21
+ <% if object.kind_of?(ActiveMerchant::Billing::Response) %>
22
+ <%= render :partial => 'active_merchant_response', :locals => { :response => object, :index => index } %>
23
+ <% else %>
24
+ <% object.inspect %>
25
+ <% end %>
26
+ <% else %>
27
+ unavailable
28
+ <% end %>
29
+ </td>
30
+ <td><%= link_to("View Payment", admin_order_payments_path(log_entry.source.order)) if log_entry.source.kind_of?(Spree::Payment) %></td>
31
+ </tr>
32
+ <% end %>
33
+ </tbody>
34
+ </table>
35
+
36
+ <%= paginate @log_entries %>
37
+
38
+ <% unless Spree.respond_to?(:solidus_gem_version) && Spree.solidus_gem_version.release >= Gem::Version.new('1.3') %>
39
+ <script>
40
+ $(".more_info").click(function() {
41
+ var index = $(this).data('index');
42
+
43
+ $("#more_info_" + index).dialog({
44
+ modal: true,
45
+ width: 1020
46
+ })
47
+ return false;
48
+ });
49
+ </script>
50
+ <% end %>
@@ -0,0 +1,4 @@
1
+ <td class='align-center'>
2
+ <%= link_to("history", admin_log_entries_path(:source_type => 'Spree::Payment', :source_id => payment.id))%>
3
+ (<%= payment.log_entries.count %>)
4
+ </td>
@@ -0,0 +1,6 @@
1
+ Spree::Core::Engine.routes.draw do
2
+ namespace :admin do
3
+ resources :log_entries
4
+ end
5
+ end
6
+
@@ -0,0 +1,13 @@
1
+ module SolidusLogViewer
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ def add_javascripts
5
+ append_file "vendor/assets/javascripts/spree/backend/all.js", "//= require spree/backend/solidus_log_viewer\n"
6
+ end
7
+
8
+ def add_stylesheets
9
+ inject_into_file "vendor/assets/stylesheets/spree/frontend/all.css", " *= require spree/backend/solidus_log_viewer\n", before: '*/', verbose: true
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ require 'spree_core'
2
+ require 'solidus_log_viewer/version'
3
+
4
+ module SolidusLogViewer
5
+ class Engine < Rails::Engine
6
+
7
+ config.autoload_paths += %W(#{config.root}/lib)
8
+
9
+ def self.activate
10
+ Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
11
+ Rails.env.production? ? require(c) : load(c)
12
+ end
13
+ end
14
+
15
+ config.to_prepare &method(:activate).to_proc
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ module SolidusLogViewer
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1 @@
1
+ # add custom rake tasks here
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib/', __FILE__)
3
+ $:.unshift lib unless $:.include?(lib)
4
+
5
+ require 'solidus_log_viewer/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.platform = Gem::Platform::RUBY
9
+ s.name = 'solidus_log_viewer'
10
+ s.version = SolidusLogViewer::VERSION
11
+ s.summary = 'View log entries in admin'
12
+ s.description = 'Adds the ability to view payment logs in the admin'
13
+ s.required_ruby_version = '>= 1.8.7'
14
+
15
+ s.author = 'Joshua Nussbaum'
16
+ s.email = 'josh@godynamo.com'
17
+ s.homepage = 'https://solidus.io'
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ s.require_path = 'lib'
22
+ s.requirements << 'none'
23
+
24
+ s.add_dependency 'solidus_backend', ['>= 1.0', '< 3']
25
+ s.add_development_dependency 'sqlite3'
26
+ s.add_development_dependency 'database_cleaner'
27
+ s.add_development_dependency 'rspec-rails'
28
+ s.add_development_dependency 'capybara'
29
+ s.add_development_dependency 'poltergeist'
30
+ s.add_development_dependency 'ffaker'
31
+ s.add_development_dependency 'factory_girl'
32
+ s.add_development_dependency 'capybara-screenshot'
33
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.feature 'Payment History', js: true do
4
+ let!(:order) { create(:completed_order_with_pending_payment) }
5
+
6
+ before :each do
7
+ login_as_admin
8
+ end
9
+
10
+ it "tracks order payment history" do
11
+ visit spree.admin_order_payments_path(order)
12
+ expect(page).to have_text('history (0)')
13
+
14
+ click_icon 'capture'
15
+ expect(page).to have_text('Payment Updated')
16
+ expect(page).to have_text('history (1)')
17
+
18
+ click_link 'history'
19
+ expect(page).to have_text('Log Entries')
20
+ expect(page).to have_text(Spree::LogEntry.first.created_at)
21
+
22
+ expect(page).not_to have_text('CVV')
23
+ click_link 'More Info'
24
+ expect(page).to have_text('CVV')
25
+ end
26
+ end
@@ -0,0 +1,32 @@
1
+ ENV["RAILS_ENV"] ||= 'test'
2
+
3
+ begin
4
+ require File.expand_path('../dummy/config/environment', __FILE__)
5
+ rescue LoadError
6
+ fail 'Could not load dummy application. Please ensure you have run `bundle exec rake test_app`'
7
+ end
8
+
9
+ require 'rspec/rails'
10
+ require 'pry'
11
+
12
+ # Requires supporting files with custom matchers and macros, etc,
13
+ # in ./support/ and its subdirectories.
14
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |file| require file }
15
+
16
+ RSpec.configure do |config|
17
+ # == Mock Framework
18
+ #
19
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
20
+ #
21
+ # config.mock_with :mocha
22
+ # config.mock_with :flexmock
23
+ # config.mock_with :rr
24
+ config.mock_with :rspec
25
+
26
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
27
+
28
+ # because database cleaner
29
+ config.use_transactional_fixtures = false
30
+
31
+ config.include FeatureHelper, type: :feature
32
+ end
@@ -0,0 +1,13 @@
1
+ require 'capybara/rspec'
2
+ require 'capybara/rails'
3
+ require 'capybara/poltergeist'
4
+ require 'capybara-screenshot/rspec'
5
+
6
+ RSpec.configure do |config|
7
+ config.include Rack::Test::Methods, type: :requests
8
+
9
+ Capybara.javascript_driver = :poltergeist
10
+ Capybara.register_driver(:poltergeist) do |app|
11
+ Capybara::Poltergeist::Driver.new app, js_errors: true, timeout: 60
12
+ end
13
+ end
@@ -0,0 +1,24 @@
1
+ require 'database_cleaner'
2
+
3
+ RSpec.configure do |config|
4
+
5
+ config.before(:suite) do
6
+ DatabaseCleaner.clean_with :truncation
7
+ end
8
+
9
+ config.before do
10
+ DatabaseCleaner.strategy = :transaction
11
+ end
12
+
13
+ config.before(:each, js: true) do
14
+ DatabaseCleaner.strategy = :truncation
15
+ end
16
+
17
+ config.before do
18
+ DatabaseCleaner.start
19
+ end
20
+
21
+ config.after do
22
+ DatabaseCleaner.clean
23
+ end
24
+ end
@@ -0,0 +1,8 @@
1
+ require 'factory_girl'
2
+ require 'ffaker'
3
+
4
+ FactoryGirl.find_definitions
5
+
6
+ RSpec.configure do |config|
7
+ config.include FactoryGirl::Syntax::Methods
8
+ end
@@ -0,0 +1,10 @@
1
+ module FeatureHelper
2
+ def login_as_admin
3
+ admin = create(:admin_user, password: 'test123', password_confirmation: 'test123')
4
+ visit spree.admin_path
5
+ fill_in 'Email', with: admin.email
6
+ fill_in 'Password', with: 'test123'
7
+ click_button 'Login'
8
+ admin
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ require 'spree/testing_support/factories'
2
+ require 'spree/testing_support/url_helpers'
3
+ require 'spree/testing_support/capybara_ext'
4
+
5
+ RSpec.configure do |config|
6
+ config.include Spree::TestingSupport::UrlHelpers
7
+ end
metadata ADDED
@@ -0,0 +1,211 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: solidus_log_viewer
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Joshua Nussbaum
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-09-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: solidus_backend
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
33
+ - !ruby/object:Gem::Dependency
34
+ name: sqlite3
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: database_cleaner
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec-rails
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: capybara
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: poltergeist
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: ffaker
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: factory_girl
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: capybara-screenshot
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ description: Adds the ability to view payment logs in the admin
146
+ email: josh@godynamo.com
147
+ executables: []
148
+ extensions: []
149
+ extra_rdoc_files: []
150
+ files:
151
+ - ".gitignore"
152
+ - ".travis.yml"
153
+ - Gemfile
154
+ - LICENSE
155
+ - README.md
156
+ - Rakefile
157
+ - app/assets/javascripts/spree/backend/solidus_log_viewer.js
158
+ - app/assets/javascripts/spree/frontend/solidus_log_viewer.js
159
+ - app/assets/stylesheets/spree/backend/solidus_log_viewer.css
160
+ - app/assets/stylesheets/spree/frontend/solidus_log_viewer.css
161
+ - app/controllers/spree/admin/log_entries_controller.rb
162
+ - app/overrides/add_history_to_payment_list.rb
163
+ - app/views/spree/admin/log_entries/_active_merchant_response.html.erb
164
+ - app/views/spree/admin/log_entries/_hash_table.html.erb
165
+ - app/views/spree/admin/log_entries/index.html.erb
166
+ - app/views/spree/admin/payments/_history.html.erb
167
+ - config/routes.rb
168
+ - lib/generators/solidus_log_viewer/install/install_generator.rb
169
+ - lib/solidus_log_viewer.rb
170
+ - lib/solidus_log_viewer/version.rb
171
+ - lib/tasks/solidus_log_viewer.rake
172
+ - solidus_log_viewer.gemspec
173
+ - spec/features/admin/payment_history_spec.rb
174
+ - spec/spec_helper.rb
175
+ - spec/support/capybara.rb
176
+ - spec/support/database_cleaner.rb
177
+ - spec/support/factory_girl.rb
178
+ - spec/support/feature_helper.rb
179
+ - spec/support/spree.rb
180
+ homepage: https://solidus.io
181
+ licenses: []
182
+ metadata: {}
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: 1.8.7
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ requirements:
198
+ - none
199
+ rubyforge_project:
200
+ rubygems_version: 2.5.1
201
+ signing_key:
202
+ specification_version: 4
203
+ summary: View log entries in admin
204
+ test_files:
205
+ - spec/features/admin/payment_history_spec.rb
206
+ - spec/spec_helper.rb
207
+ - spec/support/capybara.rb
208
+ - spec/support/database_cleaner.rb
209
+ - spec/support/factory_girl.rb
210
+ - spec/support/feature_helper.rb
211
+ - spec/support/spree.rb