skala 0.3.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -4
- data/Gemfile +10 -1
- data/LICENSE.txt +17 -18
- data/README.md +1 -34
- data/README.primo_adapter.md +42 -0
- data/bin/console +11 -0
- data/config/initializers/skala.rb +5 -0
- data/config/skala.yml +65 -0
- data/db/migrate/20141006133522_create_skala_users.rb +13 -0
- data/db/migrate/20141006133649_create_skala_user_watch_lists.rb +14 -0
- data/db/migrate/20141006135644_create_skala_user_watch_list_entries.rb +13 -0
- data/db/migrate/20141006140435_create_skala_user_notes.rb +16 -0
- data/lib/skala.rb +36 -3
- data/lib/skala/adapter.rb +122 -4
- data/lib/skala/adapter/authenticate_user.rb +4 -0
- data/lib/skala/adapter/create_user_hold_request.rb +7 -0
- data/lib/skala/adapter/create_user_hold_request/result.rb +10 -0
- data/lib/skala/adapter/delete_user_hold_request.rb +7 -0
- data/lib/skala/adapter/get_record_holdable_items.rb +5 -0
- data/lib/skala/adapter/get_record_holdable_items/result.rb +14 -0
- data/lib/skala/adapter/get_record_items.rb +5 -0
- data/lib/skala/adapter/get_record_items/result.rb +14 -0
- data/lib/skala/adapter/get_records.rb +5 -0
- data/lib/skala/adapter/get_records/result.rb +28 -0
- data/lib/skala/adapter/get_user.rb +4 -0
- data/lib/skala/adapter/get_user_former_loans.rb +5 -0
- data/lib/skala/adapter/get_user_former_loans/result.rb +14 -0
- data/lib/skala/adapter/get_user_hold_requests.rb +5 -0
- data/lib/skala/adapter/get_user_hold_requests/result.rb +14 -0
- data/lib/skala/adapter/get_user_inter_library_loans.rb +5 -0
- data/lib/skala/adapter/get_user_inter_library_loans/result.rb +14 -0
- data/lib/skala/adapter/get_user_loans.rb +5 -0
- data/lib/skala/adapter/get_user_loans/result.rb +14 -0
- data/lib/skala/adapter/get_user_transactions.rb +5 -0
- data/lib/skala/adapter/get_user_transactions/result.rb +14 -0
- data/lib/skala/adapter/operation.rb +2 -0
- data/lib/skala/adapter/operation/request.rb +6 -0
- data/lib/skala/adapter/operation/result.rb +7 -0
- data/lib/skala/adapter/renew_user_loan.rb +7 -0
- data/lib/skala/adapter/renew_user_loan/result.rb +7 -0
- data/lib/skala/adapter/renew_user_loans.rb +5 -0
- data/lib/skala/adapter/renew_user_loans/result.rb +9 -0
- data/lib/skala/adapter/search.rb +6 -0
- data/lib/skala/adapter/search/request.rb +91 -0
- data/lib/skala/adapter/search/request/date_histogram_facet.rb +5 -0
- data/lib/skala/adapter/search/request/facet.rb +29 -0
- data/lib/skala/adapter/search/request/histogram_facet.rb +8 -0
- data/lib/skala/adapter/search/request/ids_query.rb +6 -0
- data/lib/skala/adapter/search/request/match_query.rb +7 -0
- data/lib/skala/adapter/search/request/ordered_terms_query.rb +7 -0
- data/lib/skala/adapter/search/request/query.rb +18 -0
- data/lib/skala/adapter/search/request/query_string_query.rb +9 -0
- data/lib/skala/adapter/search/request/range_facet.rb +10 -0
- data/lib/skala/adapter/search/request/range_facet/range.rb +9 -0
- data/lib/skala/adapter/search/request/range_query.rb +8 -0
- data/lib/skala/adapter/search/request/simple_query_string_query.rb +8 -0
- data/lib/skala/adapter/search/request/sort_request.rb +15 -0
- data/lib/skala/adapter/search/request/terms_facet.rb +8 -0
- data/lib/skala/adapter/search/request/unscored_terms_query.rb +7 -0
- data/lib/skala/adapter/search/result.rb +22 -0
- data/lib/skala/adapter/search/result/facet.rb +15 -0
- data/lib/skala/adapter/search/result/histogram_facet.rb +12 -0
- data/lib/skala/adapter/search/result/histogram_facet/entry.rb +8 -0
- data/lib/skala/adapter/search/result/hit.rb +13 -0
- data/lib/skala/adapter/search/result/terms_facet.rb +14 -0
- data/lib/skala/adapter/search/result/terms_facet/term.rb +8 -0
- data/lib/skala/adapter/update_user.rb +4 -0
- data/lib/skala/aleph_adapter.rb +47 -0
- data/lib/skala/aleph_adapter/authenticate_user.rb +27 -0
- data/lib/skala/aleph_adapter/create_user_hold_request.rb +63 -0
- data/lib/skala/aleph_adapter/delete_user_hold_request.rb +29 -0
- data/lib/skala/aleph_adapter/get_record.rb +22 -0
- data/lib/skala/aleph_adapter/get_record_holdable_items.rb +29 -0
- data/lib/skala/aleph_adapter/get_record_items.rb +111 -0
- data/lib/skala/aleph_adapter/get_user.rb +49 -0
- data/lib/skala/aleph_adapter/get_user_former_loans.rb +21 -0
- data/lib/skala/aleph_adapter/get_user_hold_requests.rb +102 -0
- data/lib/skala/aleph_adapter/get_user_inter_library_loans.rb +66 -0
- data/lib/skala/aleph_adapter/get_user_loans.rb +93 -0
- data/lib/skala/aleph_adapter/get_user_transactions.rb +96 -0
- data/lib/skala/aleph_adapter/renew_user_loan.rb +27 -0
- data/lib/skala/aleph_adapter/renew_user_loans.rb +39 -0
- data/lib/skala/aleph_adapter/resolve_user.rb +19 -0
- data/lib/skala/aleph_adapter/update_user.rb +105 -0
- data/lib/skala/common_attributes.rb +19 -0
- data/lib/skala/elasticsearch_adapter.rb +33 -0
- data/lib/skala/elasticsearch_adapter/search.rb +20 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation.rb +20 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_aggregations.rb +50 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_from.rb +10 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb +107 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_size.rb +12 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_sort.rb +18 -0
- data/lib/skala/elasticsearch_adapter/search/request_transformation/add_version.rb +10 -0
- data/lib/skala/elasticsearch_adapter/search/result_transformation.rb +21 -0
- data/lib/skala/elasticsearch_adapter/search/result_transformation/set_facets.rb +44 -0
- data/lib/skala/elasticsearch_adapter/search/result_transformation/set_hits.rb +18 -0
- data/lib/skala/elasticsearch_adapter/search/result_transformation/set_total_hits.rb +10 -0
- data/lib/skala/engine.rb +14 -0
- data/lib/skala/get_user_result.rb +14 -0
- data/lib/skala/hold_request.rb +24 -0
- data/lib/skala/item.rb +15 -0
- data/lib/skala/loan.rb +18 -0
- data/lib/skala/primo_adapter.rb +34 -0
- data/lib/skala/primo_adapter/get_records.rb +24 -0
- data/lib/skala/primo_adapter/search.rb +13 -0
- data/lib/skala/primo_adapter/search/request_transformation.rb +40 -0
- data/lib/skala/primo_adapter/search/request_transformation/add_queries.rb +97 -0
- data/lib/skala/primo_adapter/search/request_transformation/add_sort_by_list.rb +37 -0
- data/lib/skala/primo_adapter/search/request_transformation/embed_inner_search_request.rb +13 -0
- data/lib/skala/primo_adapter/search/request_transformation/serialize_target_as_xml.rb +11 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_bulk_size.rb +12 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_institution.rb +12 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_languages.rb +15 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_locations.rb +19 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_on_campus.rb +13 -0
- data/lib/skala/primo_adapter/search/request_transformation/set_start_index.rb +12 -0
- data/lib/skala/primo_adapter/search/request_transformation/setup_inner_search_request.rb +33 -0
- data/lib/skala/primo_adapter/search/request_transformation/setup_target.rb +28 -0
- data/lib/skala/primo_adapter/search/request_transformation/toggle_bool_operator.rb +13 -0
- data/lib/skala/primo_adapter/search/result_transformation.rb +30 -0
- data/lib/skala/primo_adapter/search/result_transformation/add_hits.rb +13 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation.rb +46 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_creator.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_description.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_edition.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_fulltext_available.rb +12 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_id.rb +11 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_identifier.rb +46 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_is_part_of.rb +14 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_language.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_metadata.rb +13 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_openurl.rb +23 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_publisher.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_source.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_subject.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_title.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/doc_transformation/set_year_of_publication.rb +10 -0
- data/lib/skala/primo_adapter/search/result_transformation/fix_primo_facets_bugs.rb +108 -0
- data/lib/skala/primo_adapter/search/result_transformation/parse_search_brief_response.rb +20 -0
- data/lib/skala/primo_adapter/search/result_transformation/set_facets.rb +71 -0
- data/lib/skala/primo_adapter/search/result_transformation/set_total_hits.rb +13 -0
- data/lib/skala/primo_adapter/search/result_transformation/sort_terms_facets_terms.rb +14 -0
- data/lib/skala/primo_adapter/soap_api.rb +15 -0
- data/lib/skala/primo_adapter/soap_api/search_brief.rb +25 -0
- data/lib/skala/record.rb +85 -0
- data/lib/skala/record/identifier.rb +9 -0
- data/lib/skala/record/is_part_of.rb +11 -0
- data/lib/skala/record/link.rb +9 -0
- data/lib/skala/record/relation.rb +9 -0
- data/lib/skala/transaction.rb +13 -0
- data/lib/skala/version.rb +1 -1
- data/skala.gemspec +21 -12
- data/spec/skala/search_request/ordered_terms_query_spec.rb +6 -0
- data/spec/spec_helper.rb +7 -28
- metadata +237 -85
- data/lib/skala/i18n.rb +0 -46
- data/lib/skala/transformation.rb +0 -54
- data/lib/skala/transformation/step.rb +0 -24
- data/spec/assets/locales/de.yml +0 -14
- data/spec/assets/locales/en.yml +0 -9
- data/spec/assets/transformation/some_class.rb +0 -2
- data/spec/skala/adapter/operation_spec.rb +0 -19
- data/spec/skala/adapter_spec.rb +0 -2
- data/spec/skala/i18n_spec.rb +0 -95
- data/spec/skala/transformation/step_spec.rb +0 -36
- data/spec/skala/transformation_spec.rb +0 -89
- data/spec/skala_spec.rb +0 -2
data/lib/skala/i18n.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require "active_support"
|
2
|
-
require "active_support/core_ext"
|
3
|
-
require "mighty_tap"
|
4
|
-
require "yaml"
|
5
|
-
require_relative "../skala"
|
6
|
-
|
7
|
-
module Skala::I18n
|
8
|
-
def self.included(klass)
|
9
|
-
klass.extend(ClassMethods)
|
10
|
-
end
|
11
|
-
|
12
|
-
module ClassMethods
|
13
|
-
def load_locales_from_directory(path)
|
14
|
-
Dir.glob("#{File.expand_path(path)}/*.yml").inject({}) do |_locales, _filename|
|
15
|
-
_locales.mtap(:deep_merge!, YAML.load_file(_filename))
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
# override this to provide locales
|
20
|
-
def locales
|
21
|
-
{}
|
22
|
-
end
|
23
|
-
|
24
|
-
def translate(key, options = {})
|
25
|
-
raise "Destination locale missing!" if options[:locale].nil?
|
26
|
-
|
27
|
-
fully_qualified_key = "#{options[:locale]}.#{key}"
|
28
|
-
keys_path = fully_qualified_key.split(".")
|
29
|
-
|
30
|
-
translated_key = keys_path.inject(locales) do |hash, hash_key|
|
31
|
-
unless hash.nil?
|
32
|
-
hash[hash_key.to_s] || hash[hash_key.to_sym]
|
33
|
-
end
|
34
|
-
end || keys_path.last
|
35
|
-
|
36
|
-
translated_key.gsub(/%{[^}]+}+/) do |match|
|
37
|
-
interpolation_key = match.gsub(/(\A%{)|(}\Z)/, "")
|
38
|
-
options[interpolation_key.to_s] || options[interpolation_key.to_sym] || match
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def translate(*args)
|
44
|
-
self.class.translate(*args)
|
45
|
-
end
|
46
|
-
end
|
data/lib/skala/transformation.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
require_relative "../skala"
|
2
|
-
|
3
|
-
class Skala::Transformation
|
4
|
-
require_relative "./transformation/step"
|
5
|
-
|
6
|
-
#
|
7
|
-
# class methods
|
8
|
-
#
|
9
|
-
class << self
|
10
|
-
attr_accessor :steps
|
11
|
-
end
|
12
|
-
|
13
|
-
# since a transformation can have many steps, writing a "require" for each is tedious
|
14
|
-
def self.require_directory(directory)
|
15
|
-
Dir.glob("#{File.expand_path(directory)}/*.rb").each do |filename|
|
16
|
-
require filename
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# convenience wrapper for @steps setter to enhance readability
|
21
|
-
def self.sequence(value)
|
22
|
-
self.steps = value
|
23
|
-
end
|
24
|
-
|
25
|
-
#
|
26
|
-
# instance methods
|
27
|
-
#
|
28
|
-
attr_accessor :source
|
29
|
-
attr_accessor :target
|
30
|
-
|
31
|
-
def apply(options = {})
|
32
|
-
if (@source = options[:source] ||= options[:to]).nil?
|
33
|
-
raise ArgumentError, "No source given to apply transformation to!"
|
34
|
-
end
|
35
|
-
|
36
|
-
@target = options[:target]
|
37
|
-
|
38
|
-
self.class.steps.flatten.each do |step|
|
39
|
-
break if @__aborted
|
40
|
-
|
41
|
-
if step.is_a?(Class)
|
42
|
-
step.new(self).call
|
43
|
-
else
|
44
|
-
step.call(self)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
return @target
|
49
|
-
end
|
50
|
-
|
51
|
-
def abort!
|
52
|
-
@__aborted = true
|
53
|
-
end
|
54
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require_relative "../transformation"
|
2
|
-
|
3
|
-
class Skala::Transformation::Step
|
4
|
-
attr_accessor :transformation
|
5
|
-
|
6
|
-
def initialize(transformation)
|
7
|
-
@transformation = transformation
|
8
|
-
end
|
9
|
-
|
10
|
-
#
|
11
|
-
# Each step has transparent access to all methods of it's transformation
|
12
|
-
#
|
13
|
-
def method_missing(method_name, *args, &block)
|
14
|
-
if @transformation.respond_to?(method_name)
|
15
|
-
@transformation.send(method_name, *args, &block)
|
16
|
-
else
|
17
|
-
super
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def respond_to_missing?(method_name, include_private = false)
|
22
|
-
@transformation.respond_to?(method_name) || super
|
23
|
-
end
|
24
|
-
end
|
data/spec/assets/locales/de.yml
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
de:
|
2
|
-
field_names:
|
3
|
-
_all: Alle Felder
|
4
|
-
_score: Relevanz
|
5
|
-
created: Erscheinungsjahr
|
6
|
-
creator: Autor/Herausgeber
|
7
|
-
identifier: Identifikator
|
8
|
-
subject: Schlagwort
|
9
|
-
title: Titel
|
10
|
-
|
11
|
-
records:
|
12
|
-
items:
|
13
|
-
loan_status:
|
14
|
-
expected: Erwartet zum %{expected_date}
|
data/spec/assets/locales/en.yml
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
describe Skala::Adapter::Operation do
|
2
|
-
let(:adapter) do
|
3
|
-
{
|
4
|
-
some: "adapter"
|
5
|
-
}
|
6
|
-
end
|
7
|
-
|
8
|
-
context "if initialized with a adapter" do
|
9
|
-
let(:operation) do
|
10
|
-
described_class.new(adapter)
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "#adapter" do
|
14
|
-
it "returns the adapter the operation was initialized with" do
|
15
|
-
expect(operation.adapter).to eq(adapter)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/spec/skala/adapter_spec.rb
DELETED
data/spec/skala/i18n_spec.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
describe Skala::I18n do
|
2
|
-
let(:class_with_i18n_included) do
|
3
|
-
Class.new.tap do |_klass|
|
4
|
-
_klass.send(:include, described_class)
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
context "when included into a class" do
|
9
|
-
it "defines a class method #load_locales_from_directory" do
|
10
|
-
expect(class_with_i18n_included).to respond_to(:load_locales_from_directory)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "defines a class method #locales" do
|
14
|
-
expect(class_with_i18n_included).to respond_to(:locales)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "defines a class method #translate" do
|
18
|
-
expect(class_with_i18n_included).to respond_to(:translate)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "defines an instance method .translate" do
|
22
|
-
expect(class_with_i18n_included.new).to respond_to(:translate)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#load_locales_from_directory" do
|
27
|
-
it "loads all yaml encoded locales from a directory" do
|
28
|
-
loaded_locales =
|
29
|
-
class_with_i18n_included.load_locales_from_directory(
|
30
|
-
File.expand_path("#{File.dirname(__FILE__)}/../assets/locales")
|
31
|
-
)
|
32
|
-
|
33
|
-
expect(loaded_locales).not_to be_empty
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe "#translate" do
|
38
|
-
context "if the class defines .locales" do
|
39
|
-
let(:class_with_i18n_included_and_locales) do
|
40
|
-
Class.new(class_with_i18n_included).tap do |_klass|
|
41
|
-
def _klass.locales
|
42
|
-
load_locales_from_directory(
|
43
|
-
File.expand_path("#{File.dirname(__FILE__)}/../assets/locales")
|
44
|
-
)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
let(:object) do
|
50
|
-
class_with_i18n_included_and_locales.new
|
51
|
-
end
|
52
|
-
|
53
|
-
it "translates the given key into the language specified by the locale option" do
|
54
|
-
translated_key_de = object.translate("field_names.creator", locale: :de)
|
55
|
-
translated_key_en = object.translate("field_names.creator", locale: :en)
|
56
|
-
|
57
|
-
expected_translation_de = object.class.locales["de"]["field_names"]["creator"]
|
58
|
-
expected_translation_en = object.class.locales["en"]["field_names"]["creator"]
|
59
|
-
|
60
|
-
expect(translated_key_de).to eq(expected_translation_de)
|
61
|
-
expect(translated_key_en).to eq(expected_translation_en)
|
62
|
-
end
|
63
|
-
|
64
|
-
it "supports rails style interpolation" do
|
65
|
-
expected_date = "1. Januar 2015"
|
66
|
-
translated_key = object.translate("records.items.loan_status.expected", locale: :de, expected_date: expected_date)
|
67
|
-
expected_translation = object.class.locales["de"]["records"]["items"]["loan_status"]["expected"].gsub("%{expected_date}", expected_date)
|
68
|
-
|
69
|
-
expect(translated_key).to eq(expected_translation)
|
70
|
-
end
|
71
|
-
|
72
|
-
context "when there is no translation" do
|
73
|
-
it "returns the last key path" do
|
74
|
-
expect(object.translate("foo.bar.muff", locale: :en)).to eq("muff")
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
context "when no locale option is given" do
|
79
|
-
it "raises an exception" do
|
80
|
-
expect { object.translate("field_names.creator") }.to raise_error
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
context "if the class does not define .locales" do
|
86
|
-
let(:object) do
|
87
|
-
class_with_i18n_included.new
|
88
|
-
end
|
89
|
-
|
90
|
-
it "returns the last key path" do
|
91
|
-
expect(object.translate("foo.bar.muff", locale: :en)).to eq("muff")
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
describe Skala::Transformation::Step do
|
2
|
-
context "when initialized with a transformation" do
|
3
|
-
let(:transformation) do
|
4
|
-
Class.new(Skala::Transformation) do
|
5
|
-
def some_transformation_method
|
6
|
-
true
|
7
|
-
end
|
8
|
-
end.new
|
9
|
-
end
|
10
|
-
|
11
|
-
let(:step) do
|
12
|
-
described_class.new(transformation)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "#transformation" do
|
16
|
-
it "allows access to the transformation" do
|
17
|
-
expect(step.transformation).to be(transformation)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
context "if a unknown method is called" do
|
22
|
-
context "if the transformation has a matching method" do
|
23
|
-
it "calls the method on the transformation" do
|
24
|
-
expect(step).to respond_to(:some_transformation_method)
|
25
|
-
expect(step.some_transformation_method).to eq(transformation.some_transformation_method)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context "if the transformation has no matching method" do
|
30
|
-
it "raises an error" do
|
31
|
-
expect { step.some_unknown_method }.to raise_error
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,89 +0,0 @@
|
|
1
|
-
describe Skala::Transformation do
|
2
|
-
describe ".require_directory" do
|
3
|
-
it "requires all *.rb files in the given directory" do
|
4
|
-
described_class.require_directory "#{File.dirname(__FILE__)}/../assets/transformation"
|
5
|
-
expect(defined?(SomeClass)).to eq("constant")
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "#sequence" do
|
10
|
-
let(:steps_array) do
|
11
|
-
[ -> { } ]
|
12
|
-
end
|
13
|
-
|
14
|
-
let(:transformation) do
|
15
|
-
steps = steps_array
|
16
|
-
|
17
|
-
Class.new(described_class) do
|
18
|
-
sequence steps
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
it "is a wrapper for the steps setter" do
|
23
|
-
expect(transformation.steps).to be(steps_array)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "#abort!" do
|
28
|
-
let(:transformation) do
|
29
|
-
Class.new(described_class) do
|
30
|
-
def abort_execution?
|
31
|
-
!!@abort_execution
|
32
|
-
end
|
33
|
-
|
34
|
-
def initialize(abort_execution = true)
|
35
|
-
@abort_execution = abort_execution
|
36
|
-
end
|
37
|
-
|
38
|
-
sequence [
|
39
|
-
-> (transformation) do
|
40
|
-
transformation.target = "first_steps_output"
|
41
|
-
transformation.abort! if transformation.abort_execution?
|
42
|
-
end,
|
43
|
-
-> (transformation) do
|
44
|
-
transformation.target = "second_steps_output"
|
45
|
-
end
|
46
|
-
]
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
it "aborts the execution of the steps sequence" do
|
51
|
-
expect(transformation.new.apply to: {}).to eq("first_steps_output")
|
52
|
-
expect(transformation.new(false).apply to: {}).to eq("second_steps_output")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe "#apply" do
|
57
|
-
let(:transformation) do
|
58
|
-
step_class = Class.new(described_class::Step) do
|
59
|
-
def call
|
60
|
-
transformation.target = source.dup
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
step_lambda = -> (transformation) do
|
65
|
-
transformation.target.upcase!
|
66
|
-
end
|
67
|
-
|
68
|
-
Class.new(described_class) do
|
69
|
-
sequence [
|
70
|
-
step_class,
|
71
|
-
step_lambda
|
72
|
-
]
|
73
|
-
end.new
|
74
|
-
end
|
75
|
-
|
76
|
-
context "if no :source or :to option is given" do
|
77
|
-
it "raises an error" do
|
78
|
-
expect { transformation.apply }.to raise_error(ArgumentError)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
it "applies the transformation" do
|
83
|
-
some_string = "foo"
|
84
|
-
|
85
|
-
expect(transformation.apply(to: some_string)).to eq(some_string.upcase)
|
86
|
-
expect(some_string).to eq("foo")
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
data/spec/skala_spec.rb
DELETED