solidus_log_viewer 1.0.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.
@@ -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