answers-testing 0.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.
- checksums.yaml +7 -0
- data/answers-testing.gemspec +29 -0
- data/lib/answers-testing.rb +1 -0
- data/lib/answers/tasks/testing.rake +84 -0
- data/lib/answers/testing.rb +33 -0
- data/lib/answers/testing/controller_macros.rb +8 -0
- data/lib/answers/testing/controller_macros/authentication.rb +62 -0
- data/lib/answers/testing/controller_macros/methods.rb +37 -0
- data/lib/answers/testing/feature_macros.rb +7 -0
- data/lib/answers/testing/feature_macros/authentication.rb +15 -0
- data/lib/answers/testing/railtie.rb +31 -0
- data/lib/generators/answers/testing/templates/spec/spec_helper.rb +26 -0
- data/lib/generators/answers/testing/testing_generator.rb +14 -0
- metadata +163 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a9b8f82fe093a47a91ea6e9bcfbc9b5347910615
|
4
|
+
data.tar.gz: 5e5188e1e0fbe80aabf4fbbc5a97ef5147669f0e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 69ef7630de31304a4f63a336e4ade864dcd6485d41041ffe46b6a08a7ed2c4890ba58528404e9d0500cf9d5ca6a53789ecb327044f7fa6f1a50c13b3b3b3217f
|
7
|
+
data.tar.gz: 06d7d3f642e0d5972b769b719f2756f425bc843e64df5003dac49b408553501ba7f3c7db85db25b65f157fda7027afe4413c80050bb9bc562398342bfca4de37
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Encoding: UTF-8
|
2
|
+
require File.expand_path('../../core/lib/answers/version', __FILE__)
|
3
|
+
|
4
|
+
version = Answers::Version.to_s
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.name = %q{answers-testing}
|
9
|
+
s.version = '0.0.0'
|
10
|
+
s.summary = %q{Testing plugin for Answers}
|
11
|
+
s.description = %q{This plugin adds the ability to test against the Answers CMS gem while inside an Answers extension}
|
12
|
+
s.email = ["justin.grevich@gsa.gov", "amos.stone@gsa.gov", "alan.delevie@gsa.gov"]
|
13
|
+
s.homepage = %q{https://answers.18f.us}
|
14
|
+
s.rubyforge_project = %q{answers}
|
15
|
+
s.authors = ['Nick Bristow', 'Alan deLevie', 'Justin Grevich', 'Sasha Magee', 'John Stone', 'Ben Willman', 'John P. Yuda']
|
16
|
+
s.license = %q{CC0}
|
17
|
+
s.require_paths = %w(lib)
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
|
21
|
+
s.add_dependency 'answers-core'
|
22
|
+
s.add_dependency 'database_cleaner', '~> 1.2.0'
|
23
|
+
s.add_dependency 'factory_girl_rails', '~> 4.2.1'
|
24
|
+
s.add_dependency 'rspec-rails', '~> 3.1.0'
|
25
|
+
s.add_dependency 'capybara', '~> 2.4.1'
|
26
|
+
s.add_dependency 'capybara-webkit', '~> 1.3.0'
|
27
|
+
s.add_dependency 'devise', '~> 3.2.0'
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'answers/testing'
|
@@ -0,0 +1,84 @@
|
|
1
|
+
namespace :answers do
|
2
|
+
namespace :testing do
|
3
|
+
desc "Generates a dummy app for testing"
|
4
|
+
task :dummy_app do
|
5
|
+
unless dummy_app_path.exist?
|
6
|
+
Rake::Task["answers:testing:setup_dummy_app"].invoke
|
7
|
+
Rake::Task["answers:testing:setup_extension"].invoke
|
8
|
+
Rake::Task["answers:testing:init_test_database"].invoke
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
task :setup_dummy_app do
|
13
|
+
require 'answers-core'
|
14
|
+
params = %w(--quiet)
|
15
|
+
params << "--database=#{ENV['DB']}" if ENV['DB']
|
16
|
+
|
17
|
+
Answers::DummyGenerator.start params
|
18
|
+
|
19
|
+
# Ensure the database is not there from a previous run.
|
20
|
+
Rake::Task['answers:testing:drop_dummy_app_database'].invoke
|
21
|
+
|
22
|
+
Answers::CmsGenerator.start %w[--quiet --fresh-installation]
|
23
|
+
|
24
|
+
Dir.chdir dummy_app_path
|
25
|
+
end
|
26
|
+
|
27
|
+
# This task is a hook to allow extensions to pass configuration
|
28
|
+
# Just define this inside your extension's Rakefile or a .rake file
|
29
|
+
# and pass arbitrary code. Example:
|
30
|
+
#
|
31
|
+
# namespace :answers do
|
32
|
+
# namespace :testing do
|
33
|
+
# task :setup_extension do
|
34
|
+
# require 'answers-my-extension'
|
35
|
+
# Answers::MyEngineGenerator.start %w[--quiet]
|
36
|
+
# end
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
task :setup_extension do
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "Remove the dummy app used for testing"
|
43
|
+
task :clean_dummy_app do
|
44
|
+
Rake::Task['answers:testing:drop_dummy_app_database'].invoke
|
45
|
+
dummy_app_path.rmtree if dummy_app_path.exist?
|
46
|
+
end
|
47
|
+
|
48
|
+
desc "Remove the dummy app's database."
|
49
|
+
task :drop_dummy_app_database do
|
50
|
+
system "bundle exec rake -f #{File.join(dummy_app_path, 'Rakefile')} db:drop"
|
51
|
+
end
|
52
|
+
|
53
|
+
task :init_test_database do
|
54
|
+
system "RAILS_ENV=test bundle exec rake -f #{File.join(dummy_app_path, 'Rakefile')} db:{create,migrate}"
|
55
|
+
end
|
56
|
+
|
57
|
+
task :specs do
|
58
|
+
paths = Dir.glob('vendor/extensions/*/spec')
|
59
|
+
paths << Rails.root
|
60
|
+
|
61
|
+
status = 0
|
62
|
+
paths.each do |path|
|
63
|
+
if Rails.root.join(path).basename.to_s == 'spec'
|
64
|
+
path = Rails.root.join(path).parent
|
65
|
+
end
|
66
|
+
cmd = "running specs in #{ path.basename }"
|
67
|
+
puts "\n#{ "-" * cmd.to_s.length }\n#{ cmd }\n#{"-" * cmd.to_s.length }"
|
68
|
+
Dir.chdir(path) do
|
69
|
+
IO.popen("bundle exec bundle install && bundle exec rake answers:testing:dummy_app") unless path == Rails.root
|
70
|
+
IO.popen("bundle exec rake spec") do |f|
|
71
|
+
f.each { |line| puts line }
|
72
|
+
f.close
|
73
|
+
status = 1 if $?.to_i > 0
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
abort "Some tests failed" if status > 0
|
78
|
+
end
|
79
|
+
|
80
|
+
def dummy_app_path
|
81
|
+
Answers::Testing::Railtie.target_extension_path.join('spec', 'dummy')
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'answers-core'
|
2
|
+
require 'devise'
|
3
|
+
require 'rspec-rails'
|
4
|
+
require 'factory_girl_rails'
|
5
|
+
|
6
|
+
module Answers
|
7
|
+
autoload :TestingGenerator, 'generators/answers/testing/testing_generator'
|
8
|
+
|
9
|
+
module Testing
|
10
|
+
class << self
|
11
|
+
def root
|
12
|
+
@root ||= Pathname.new(File.expand_path('../../../', __FILE__))
|
13
|
+
end
|
14
|
+
|
15
|
+
# Load the factories of all currently loaded extensions
|
16
|
+
def load_factories
|
17
|
+
Answers.extensions.each do |extension_const|
|
18
|
+
if extension_const.respond_to?(:factory_paths)
|
19
|
+
extension_const.send(:factory_paths).each do |path|
|
20
|
+
FactoryGirl.definition_file_paths << path
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
FactoryGirl.find_definitions
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
require 'answers/testing/railtie'
|
29
|
+
|
30
|
+
autoload :ControllerMacros, 'answers/testing/controller_macros'
|
31
|
+
autoload :FeatureMacros, 'answers/testing/feature_macros'
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Answers
|
2
|
+
module Testing
|
3
|
+
module ControllerMacros
|
4
|
+
module Authentication
|
5
|
+
def self.extended(base)
|
6
|
+
base.send :include, Devise::TestHelpers
|
7
|
+
end
|
8
|
+
|
9
|
+
def answers_login_with(*roles)
|
10
|
+
mock_user roles
|
11
|
+
end
|
12
|
+
|
13
|
+
def answers_login_with_factory(factory)
|
14
|
+
factory_user factory
|
15
|
+
end
|
16
|
+
|
17
|
+
def mock_user(roles)
|
18
|
+
let(:controller_permission) { true }
|
19
|
+
roles = handle_deprecated_roles! roles
|
20
|
+
let(:logged_in_user) do
|
21
|
+
user = double 'Answers::User', :username => 'Joe Fake'
|
22
|
+
|
23
|
+
roles.each do |role|
|
24
|
+
user.stub(:has_role?).with(role).and_return true
|
25
|
+
end
|
26
|
+
user.stub(:has_role?).with(:superuser).and_return false if roles.exclude? :superuser
|
27
|
+
|
28
|
+
user
|
29
|
+
end
|
30
|
+
|
31
|
+
before do
|
32
|
+
controller.should_receive(:require_answers_users!).and_return false
|
33
|
+
controller.should_receive(:authenticate_answers_user!).and_return true
|
34
|
+
controller.should_receive(:restrict_plugins).and_return true
|
35
|
+
controller.should_receive(:allow_controller?).and_return controller_permission
|
36
|
+
controller.stub(:answers_user?).and_return true
|
37
|
+
controller.stub(:current_answers_user).and_return logged_in_user
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def factory_user(factory)
|
42
|
+
let(:logged_in_user) { FactoryGirl.create factory }
|
43
|
+
before do
|
44
|
+
@request.env["devise.mapping"] = Devise.mappings[:admin]
|
45
|
+
sign_in logged_in_user
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
def handle_deprecated_roles!(*roles)
|
51
|
+
mappings = {
|
52
|
+
:user => [],
|
53
|
+
:answers_user => [:answers],
|
54
|
+
:answers_superuser => [:answers, :superuser],
|
55
|
+
:answers_translator => [:answers, :translator]
|
56
|
+
}
|
57
|
+
mappings[roles.first] || roles
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Answers
|
2
|
+
module Testing
|
3
|
+
module ControllerMacros
|
4
|
+
module Methods
|
5
|
+
def get(action, options = {})
|
6
|
+
process_answers_action(action, 'GET', options)
|
7
|
+
end
|
8
|
+
|
9
|
+
# Executes a request simulating POST HTTP method and set/volley the response
|
10
|
+
def post(action, options = {})
|
11
|
+
process_answers_action(action, 'POST', options)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Executes a request simulating PUT HTTP method and set/volley the response
|
15
|
+
def put(action, options = {})
|
16
|
+
process_answers_action(action, 'PUT', options)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Executes a request simulating PATCH HTTP method and set/volley the response
|
20
|
+
def patch(action, options = {})
|
21
|
+
process_answers_action(action, 'PATCH', options)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Executes a request simulating DELETE HTTP method and set/volley the response
|
25
|
+
def delete(action, options = {})
|
26
|
+
process_answers_action(action, 'DELETE', options)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def process_answers_action(action, http_method = 'GET', options)
|
32
|
+
process(action, http_method, options.merge(:use_route => :answers))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Answers
|
2
|
+
module Testing
|
3
|
+
module FeatureMacros
|
4
|
+
module Authentication
|
5
|
+
def answers_login_with(factory)
|
6
|
+
let!(:logged_in_user) { FactoryGirl.create(factory) }
|
7
|
+
|
8
|
+
before do
|
9
|
+
login_as logged_in_user, :scope => :answers_user
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Answers
|
2
|
+
module Testing
|
3
|
+
class Railtie < Rails::Railtie
|
4
|
+
railtie_name :answers_testing
|
5
|
+
|
6
|
+
class << self
|
7
|
+
attr_reader :target_extension_path # :nodoc:
|
8
|
+
alias_method :target_engine_path, :target_extension_path
|
9
|
+
|
10
|
+
# Loads Rake tasks to assist with manipulating dummy applications for testing extensions. Takes
|
11
|
+
# a string representing the path to your application or extension.
|
12
|
+
#
|
13
|
+
# This function should be used in the Rakefile of your application or extension
|
14
|
+
#
|
15
|
+
# Example:
|
16
|
+
# Answers::Testing::Railtie.load_dummy_tasks(File.dirname(__FILE__))
|
17
|
+
#
|
18
|
+
# Answers::Testing::Railtie.load_dummy_tasks('/users/reset/code/mynew_app')
|
19
|
+
def load_dummy_tasks(app_root)
|
20
|
+
@target_extension_path = Pathname.new(app_root.to_s)
|
21
|
+
load 'answers/tasks/testing.rake'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
config.after_initialize do
|
26
|
+
Answers.register_extension(Answers::Testing)
|
27
|
+
Testing.load_factories
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../') unless defined?(ENGINE_RAILS_ROOT)
|
2
|
+
|
3
|
+
# Configure Rails Environment
|
4
|
+
ENV["RAILS_ENV"] ||= 'test'
|
5
|
+
|
6
|
+
require File.expand_path("../../config/environment", __FILE__)
|
7
|
+
|
8
|
+
require 'rspec/rails'
|
9
|
+
require 'capybara/rspec'
|
10
|
+
|
11
|
+
Rails.backtrace_cleaner.remove_silencers!
|
12
|
+
|
13
|
+
RSpec.configure do |config|
|
14
|
+
config.mock_with :rspec
|
15
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
16
|
+
config.filter_run :focus => true
|
17
|
+
config.run_all_when_everything_filtered = true
|
18
|
+
end
|
19
|
+
|
20
|
+
# Requires supporting files with custom matchers and macros, etc,
|
21
|
+
# in ./support/ and its subdirectories including factories.
|
22
|
+
([ENGINE_RAILS_ROOT, Rails.root.to_s].uniq | ::Answers::Plugins.registered.pathnames).map{|p|
|
23
|
+
Dir[File.join(p, 'spec', 'support', '**', '*.rb').to_s]
|
24
|
+
}.flatten.sort.each do |support_file|
|
25
|
+
require support_file
|
26
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Answers
|
2
|
+
class TestingGenerator < Rails::Generators::Base
|
3
|
+
source_root File.expand_path('../templates', __FILE__)
|
4
|
+
|
5
|
+
def rake_db
|
6
|
+
rake "answers_testing:install:migrations"
|
7
|
+
end
|
8
|
+
|
9
|
+
def copy_spec_helper
|
10
|
+
directory "spec"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
metadata
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: answers-testing
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nick Bristow
|
8
|
+
- Alan deLevie
|
9
|
+
- Justin Grevich
|
10
|
+
- Sasha Magee
|
11
|
+
- John Stone
|
12
|
+
- Ben Willman
|
13
|
+
- John P. Yuda
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
18
|
+
dependencies:
|
19
|
+
- !ruby/object:Gem::Dependency
|
20
|
+
name: answers-core
|
21
|
+
requirement: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
26
|
+
type: :runtime
|
27
|
+
prerelease: false
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: database_cleaner
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 1.2.0
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.2.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: factory_girl_rails
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 4.2.1
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 4.2.1
|
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: 3.1.0
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 3.1.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: 2.4.1
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 2.4.1
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: capybara-webkit
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 1.3.0
|
96
|
+
type: :runtime
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.3.0
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: devise
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 3.2.0
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 3.2.0
|
117
|
+
description: This plugin adds the ability to test against the Answers CMS gem while
|
118
|
+
inside an Answers extension
|
119
|
+
email:
|
120
|
+
- justin.grevich@gsa.gov
|
121
|
+
- amos.stone@gsa.gov
|
122
|
+
- alan.delevie@gsa.gov
|
123
|
+
executables: []
|
124
|
+
extensions: []
|
125
|
+
extra_rdoc_files: []
|
126
|
+
files:
|
127
|
+
- answers-testing.gemspec
|
128
|
+
- lib/answers-testing.rb
|
129
|
+
- lib/answers/tasks/testing.rake
|
130
|
+
- lib/answers/testing.rb
|
131
|
+
- lib/answers/testing/controller_macros.rb
|
132
|
+
- lib/answers/testing/controller_macros/authentication.rb
|
133
|
+
- lib/answers/testing/controller_macros/methods.rb
|
134
|
+
- lib/answers/testing/feature_macros.rb
|
135
|
+
- lib/answers/testing/feature_macros/authentication.rb
|
136
|
+
- lib/answers/testing/railtie.rb
|
137
|
+
- lib/generators/answers/testing/templates/spec/spec_helper.rb
|
138
|
+
- lib/generators/answers/testing/testing_generator.rb
|
139
|
+
homepage: https://answers.18f.us
|
140
|
+
licenses:
|
141
|
+
- CC0
|
142
|
+
metadata: {}
|
143
|
+
post_install_message:
|
144
|
+
rdoc_options: []
|
145
|
+
require_paths:
|
146
|
+
- lib
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
requirements: []
|
158
|
+
rubyforge_project: answers
|
159
|
+
rubygems_version: 2.2.2
|
160
|
+
signing_key:
|
161
|
+
specification_version: 4
|
162
|
+
summary: Testing plugin for Answers
|
163
|
+
test_files: []
|