hyrax-spec 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 387b76ffb416aa87c56d3af3b5b9e3566e3e0628
|
4
|
+
data.tar.gz: e56c6f049baf9e5da3f3448642b2335cea1f3a5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20e0e71dfb0ac50e471d30d5c792339a02b5ef8f7f45652c80d29988c7411981f58a6df4944fc6f0805818ec45b98474dfd4c3d0fadfdb05a823287689e0053f
|
7
|
+
data.tar.gz: d06bba5e9d9378edd4195ab21521c18a4aa2425b4b1c53b0d9d2cd0284d0c38d6d8c89bcb8a04be63703da5752e64905fde2f1e7e125daae104d411eef9536d6
|
data/README.md
CHANGED
@@ -3,8 +3,48 @@ Hyrax::Spec
|
|
3
3
|
|
4
4
|
Shared examples and smoke tests for [Hyrax](https://github.com/samvera/hyrax) applications.
|
5
5
|
|
6
|
-
##
|
6
|
+
## `FactoryBot` Build Strategies for Hyrax
|
7
7
|
|
8
|
-
`
|
8
|
+
If your test suite uses `FactoryBot` (formerly `FactoryGirl`) to create test objects, `Hyrax::Spec` provides useful
|
9
|
+
custom build strategies that may simplify the setup phase of your tests. To register the build stratgies add the
|
10
|
+
following to your test helper (usually `spec/rails_helper.rb`):
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
# spec/rails_helper.rb
|
14
|
+
|
15
|
+
require 'hyrax/spec/factory_bot/build_strategies'
|
16
|
+
```
|
17
|
+
|
18
|
+
### `ActorCreate`
|
19
|
+
|
20
|
+
The `ActorCreate` strategy builds an object and passes it to the [Hyrax Actor
|
21
|
+
Stack](https://github.com/samvera/hyrax/wiki/Customizing-Actors) to be processed. In a normal RSpec Rails environment,
|
22
|
+
this will enqueue (but not perform) several background jobs (charactarization, derivatives, etc...). The specific actor
|
23
|
+
middleware called is `Hyrax::CurationConcern.actor`.
|
24
|
+
|
25
|
+
This strategy is registered by default as `actor_create`. You can use it with an existing factory, which must define
|
26
|
+
`user` as a [transient attribute](https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#transient).
|
9
27
|
|
28
|
+
```ruby
|
29
|
+
# factories/my_works.rb
|
30
|
+
FactoryBot.define do
|
31
|
+
factory(:my_work) do
|
32
|
+
title ['Comet in Moominland']
|
10
33
|
|
34
|
+
transient do
|
35
|
+
user { FactoryBot.create(:user) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# my_work_spec.rb
|
41
|
+
RSpec.describe MyWork do
|
42
|
+
subject(:my_work) { FactoryBot.actor_create(:my_work) }
|
43
|
+
|
44
|
+
it { is_expected.to have_attributes(date_uploaded: an_instance_of(DateTime)) }
|
45
|
+
end
|
46
|
+
```
|
47
|
+
|
48
|
+
## License
|
49
|
+
|
50
|
+
`Hyrax::Spec` is available under [the Apache 2.0 license](LICENSE).
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Hyrax
|
2
|
+
module Spec
|
3
|
+
if defined?(FactoryBot) || defined?(FactoryGirl)
|
4
|
+
# support legacy FactoryGirl name, but use always FactoryBot internally
|
5
|
+
FactoryBot = FactoryGirl unless defined?(FactoryBot)
|
6
|
+
|
7
|
+
require 'hyrax/spec/factory_bot/build_strategies/actor_create'
|
8
|
+
|
9
|
+
FactoryBot.register_strategy(:actor_create, Hyrax::Spec::ActorCreate)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Hyrax
|
2
|
+
module Spec
|
3
|
+
##
|
4
|
+
# A FactoryBot build strategy for creating Hyrax Works and running them
|
5
|
+
# through the actor stack.
|
6
|
+
#
|
7
|
+
# In a normal RSpec Rails environment, this will enqueue (but not perform)
|
8
|
+
# several background jobs (charactarization, derivatives, etc...). If you
|
9
|
+
# want to perform the jobs, configure that with:
|
10
|
+
#
|
11
|
+
# ActiveJob::Base.queue_adapter.perform_enqueued_jobs = true
|
12
|
+
# ActiveJob::Base.queue_adapter.perform_enqueued_at_jobs = true
|
13
|
+
#
|
14
|
+
# If you only want to perform specific job classes, you can do:
|
15
|
+
#
|
16
|
+
# ActiveJob::Base.queue_adapter.filter = [SpecificJobClassYouWantToRun]
|
17
|
+
#
|
18
|
+
# @example Registering the strategy and creating using an existing factory
|
19
|
+
# FactoryBot.register_strategy(:actor_create, ActorCreate)
|
20
|
+
#
|
21
|
+
# work = FactoryBot.actor_create(:a_work_factory)
|
22
|
+
#
|
23
|
+
# @see Hyrax::CurationConcern#actor
|
24
|
+
# @see https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#custom-strategies
|
25
|
+
class ActorCreate
|
26
|
+
def initialize
|
27
|
+
@association_strategy = FactoryBot.strategy_by_name(:create).new
|
28
|
+
end
|
29
|
+
|
30
|
+
delegate :association, to: :@association_strategy
|
31
|
+
|
32
|
+
def result(evaluation)
|
33
|
+
evaluation.object.tap do |instance|
|
34
|
+
evaluation.notify(:after_build, instance)
|
35
|
+
|
36
|
+
# @todo: is there a better way to get the evaluator at this stage?
|
37
|
+
# how should we handle a missing user?
|
38
|
+
ability = ::Ability.new(evaluation.instance_variable_get(:@evaluator).user)
|
39
|
+
env = Hyrax::Actors::Environment.new(instance, ability, {})
|
40
|
+
|
41
|
+
evaluation.notify(:before_create, instance)
|
42
|
+
evaluation.notify(:before_actor_create, instance)
|
43
|
+
Hyrax::CurationConcern.actor.create(env)
|
44
|
+
evaluation.notify(:after_create, instance)
|
45
|
+
evaluation.notify(:after_actor_create, instance)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/hyrax/spec/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyrax-spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Johnson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -70,6 +70,8 @@ files:
|
|
70
70
|
- Rakefile
|
71
71
|
- hyrax-spec.gemspec
|
72
72
|
- lib/hyrax/spec.rb
|
73
|
+
- lib/hyrax/spec/factory_bot/build_strategies.rb
|
74
|
+
- lib/hyrax/spec/factory_bot/build_strategies/actor_create.rb
|
73
75
|
- lib/hyrax/spec/matchers.rb
|
74
76
|
- lib/hyrax/spec/matchers/act.rb
|
75
77
|
- lib/hyrax/spec/matchers/have_editable_property.rb
|