ddr-models 2.4.0.rc2 → 2.4.0.rc3

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.
@@ -1,15 +1,32 @@
1
1
  module Ddr::Index
2
2
  RSpec.describe Filters do
3
3
 
4
- describe "HAS_CONTENT" do
5
- subject { Filters::HAS_CONTENT }
6
- its(:clauses) { is_expected.to eq(["active_fedora_model_ssi:(Component OR Attachment OR Target)"]) }
7
- end
8
-
9
4
  describe "class methods" do
10
- describe "is_governed_by(pid)" do
11
- subject { Filters.is_governed_by("test:1") }
12
- its(:clauses) { is_expected.to eq(["{!term f=is_governed_by_ssim}info:fedora/test:1"]) }
5
+ describe ".is_governed_by" do
6
+ describe "with an object" do
7
+ subject { Filters.is_governed_by(Item.new(pid: "test:1")) }
8
+ its(:clauses) { is_expected.to eq(["{!term f=is_governed_by_ssim}info:fedora/test:1"]) }
9
+ end
10
+ describe "with an ID" do
11
+ subject { Filters.is_governed_by("test:1") }
12
+ its(:clauses) { is_expected.to eq(["{!term f=is_governed_by_ssim}info:fedora/test:1"]) }
13
+ end
14
+ end
15
+
16
+ describe ".is_member_of_collection" do
17
+ describe "with an object" do
18
+ subject { Filters.is_member_of_collection(Item.new(pid: "test:1")) }
19
+ its(:clauses) { is_expected.to eq(["{!term f=is_member_of_collection_ssim}info:fedora/test:1"]) }
20
+ end
21
+ describe "with an ID" do
22
+ subject { Filters.is_member_of_collection("test:1") }
23
+ its(:clauses) { is_expected.to eq(["{!term f=is_member_of_collection_ssim}info:fedora/test:1"]) }
24
+ end
25
+ end
26
+
27
+ describe ".has_content" do
28
+ subject { Filters.has_content }
29
+ its(:clauses) { is_expected.to eq(["active_fedora_model_ssi:(Component OR Attachment OR Target)"]) }
13
30
  end
14
31
  end
15
32
 
@@ -0,0 +1,21 @@
1
+ module Ddr::Index
2
+ RSpec.describe Queries do
3
+
4
+ describe "module methods" do
5
+ let(:obj) { FactoryGirl.create(:item) }
6
+
7
+ describe ".id" do
8
+ specify {
9
+ expect(Queries.id(obj.pid).pids.to_a).to eq [obj.pid]
10
+ }
11
+ end
12
+
13
+ describe ".object" do
14
+ specify {
15
+ expect(Queries.object(obj).pids.to_a).to eq [obj.pid]
16
+ }
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,95 @@
1
+ module Ddr::Index
2
+ RSpec.describe QueryBuilder do
3
+
4
+ describe "DSL" do
5
+ describe "id" do
6
+ subject { described_class.new { id "test:1" } }
7
+ specify {
8
+ expect(subject.query.rows).to eq 1
9
+ expect(subject.query.q).to eq "{!term f=id}test:1"
10
+ }
11
+ end
12
+
13
+ describe "q" do
14
+ subject { described_class.new { q "foo:bar" } }
15
+ specify { expect(subject.query.q).to eq "foo:bar" }
16
+ end
17
+
18
+ describe "asc" do
19
+ subject { described_class.new { asc "foo" } }
20
+ specify { expect(subject.query.sort).to eq [SortOrder.new(field: "foo", order: "asc")] }
21
+ end
22
+
23
+ describe "desc" do
24
+ subject { described_class.new { desc "foo" } }
25
+ specify { expect(subject.query.sort).to eq [SortOrder.new(field: "foo", order: "desc")] }
26
+ end
27
+
28
+ describe "filter" do
29
+ subject { described_class.new { filter Filter.where("foo"=>"bar") } }
30
+ specify { expect(subject.query.filters).to eq [Filter.where("foo"=>"bar")] }
31
+ end
32
+
33
+ describe "field" do
34
+ subject { described_class.new { field "foo", "bar" } }
35
+ specify { expect(subject.query.fields).to include("foo", "bar") }
36
+ end
37
+
38
+ describe "fields" do
39
+ subject { described_class.new { fields "foo", "bar" } }
40
+ specify { expect(subject.query.fields).to include("foo", "bar") }
41
+ end
42
+
43
+ describe "sort" do
44
+ subject { described_class.new { sort "foo"=>"asc", "bar"=>"desc" } }
45
+ specify { expect(subject.query.sort).to eq [SortOrder.new(field: "foo", order: "asc"), SortOrder.new(field: "bar", order: "desc")] }
46
+ end
47
+
48
+ describe "order_by" do
49
+ subject { described_class.new { order_by "foo"=>"asc", "bar"=>"desc" } }
50
+ specify { expect(subject.query.sort).to eq [SortOrder.new(field: "foo", order: "asc"), SortOrder.new(field: "bar", order: "desc")] }
51
+ end
52
+
53
+ describe "limit" do
54
+ subject { described_class.new { limit 5 } }
55
+ specify { expect(subject.query.rows).to eq 5 }
56
+ end
57
+
58
+ describe "rows" do
59
+ subject { described_class.new { rows 5 } }
60
+ specify { expect(subject.query.rows).to eq 5 }
61
+ end
62
+
63
+ describe "raw" do
64
+ subject { described_class.new { raw "foo:bar" } }
65
+ specify { expect(subject.query.filters).to eq [Filter.raw("foo:bar")] }
66
+ end
67
+
68
+ describe "where" do
69
+ subject { described_class.new { where "foo"=>"bar" } }
70
+ specify { expect(subject.query.filters).to eq [Filter.where("foo"=>"bar")] }
71
+ end
72
+
73
+ describe "absent" do
74
+ subject { described_class.new { absent "foo" } }
75
+ specify { expect(subject.query.filters).to eq [Filter.absent("foo")] }
76
+ end
77
+
78
+ describe "present" do
79
+ subject { described_class.new { present "foo" } }
80
+ specify { expect(subject.query.filters).to eq [Filter.present("foo")] }
81
+ end
82
+
83
+ describe "before" do
84
+ subject { described_class.new { before "foo", DateTime.parse("2015-12-14T20:40:06Z") } }
85
+ specify { expect(subject.query.filters).to eq [Filter.before("foo", DateTime.parse("2015-12-14T20:40:06Z"))] }
86
+ end
87
+
88
+ describe "before_days" do
89
+ subject { described_class.new { before_days "foo", 7 } }
90
+ specify { expect(subject.query.filters).to eq [Filter.before_days("foo", 7)] }
91
+ end
92
+ end
93
+
94
+ end
95
+ end
@@ -0,0 +1,46 @@
1
+ module Ddr::Index
2
+ RSpec.describe QueryClause do
3
+
4
+ describe "class methods" do
5
+ describe ".build" do
6
+ subject { QueryClause.build("foo", "bar") }
7
+ it { is_expected.to eq "foo:bar" }
8
+ end
9
+ describe ".unique_key" do
10
+ subject { QueryClause.unique_key("test:1") }
11
+ it { is_expected.to eq "{!term f=id}test:1" }
12
+ end
13
+ describe ".id" do
14
+ subject { QueryClause.id("test:1") }
15
+ it { is_expected.to eq "{!term f=id}test:1" }
16
+ end
17
+ describe ".negative" do
18
+ subject { QueryClause.negative("foo", "bar") }
19
+ it { is_expected.to eq "-foo:bar" }
20
+ end
21
+ describe ".present" do
22
+ subject { QueryClause.present("foo") }
23
+ it { is_expected.to eq "foo:[* TO *]" }
24
+ end
25
+ describe ".absent" do
26
+ subject { QueryClause.absent("foo") }
27
+ it { is_expected.to eq "-foo:[* TO *]" }
28
+ end
29
+ describe ".or_values" do
30
+ subject { QueryClause.or_values("foo", ["bar", "baz"]) }
31
+ it { is_expected.to eq "foo:(bar OR baz)" }
32
+ end
33
+ describe ".before" do
34
+
35
+ end
36
+ describe ".before_days" do
37
+ subject { QueryClause.before_days("foo", 5) }
38
+ it { is_expected.to eq "foo:[* TO NOW-5DAYS]" }
39
+ end
40
+ describe ".term" do
41
+
42
+ end
43
+ end
44
+
45
+ end
46
+ end
@@ -1,19 +1,23 @@
1
1
  module Ddr::Index
2
2
  RSpec.describe Query do
3
-
4
- subject do
5
- QueryBuilder.build do |query|
6
- query
7
- .q("foo:bar")
8
- .where("spam"=>"eggs")
9
- .fields("id", "foo", "spam")
10
- .limit(50)
11
- end
12
- end
13
-
14
- its(:to_s) { is_expected.to eq("q=foo%3Abar&fq=%7B%21term+f%3Dspam%7Deggs&fl=id%2Cfoo%2Cspam&rows=50") }
15
-
16
- its(:params) { is_expected.to eq({q: "foo:bar", fl: "id,foo,spam", fq: ["{!term f=spam}eggs"], rows: 50}) }
17
-
3
+ let(:id) { UniqueKeyField.instance }
4
+ let(:foo) { Field.new("foo") }
5
+ let(:spam) { Field.new("spam") }
6
+ let(:filter) { Filter.where(spam=>"eggs") }
7
+ let(:sort_order) { SortOrder.new(field: foo, order: "asc") }
8
+ let(:fields) { [id, foo, spam] }
9
+ subject {
10
+ described_class.new(q: "foo:bar",
11
+ filters: filter,
12
+ fields: fields,
13
+ sort: sort_order,
14
+ rows: 50)
15
+ }
16
+ its(:to_s) {
17
+ is_expected.to eq "q=foo%3Abar&fq=%7B%21term+f%3Dspam%7Deggs&fl=id%2Cfoo%2Cspam&sort=foo+asc&rows=50"
18
+ }
19
+ its(:params) {
20
+ is_expected.to eq({q: "foo:bar", fl: "id,foo,spam", fq: ["{!term f=spam}eggs"], sort: "foo asc", rows: 50})
21
+ }
18
22
  end
19
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ddr-models
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0.rc2
4
+ version: 2.4.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Coble
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-12-11 00:00:00.000000000 Z
12
+ date: 2015-12-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -213,6 +213,20 @@ dependencies:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
215
  version: 2.1.1
216
+ - !ruby/object:Gem::Dependency
217
+ name: virtus
218
+ requirement: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: 1.0.5
223
+ type: :runtime
224
+ prerelease: false
225
+ version_requirements: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: 1.0.5
216
230
  - !ruby/object:Gem::Dependency
217
231
  name: bundler
218
232
  requirement: !ruby/object:Gem::Requirement
@@ -355,6 +369,7 @@ files:
355
369
  - config/initializers/active_fedora_datastream.rb
356
370
  - config/initializers/devise.rb
357
371
  - config/initializers/subscriptions.rb
372
+ - config/locales/ddr-models.en.yml
358
373
  - config/routes.rb
359
374
  - db/migrate/20141021233359_create_events.rb
360
375
  - db/migrate/20141021234156_create_minted_ids.rb
@@ -455,12 +470,15 @@ files:
455
470
  - lib/ddr/index/filter.rb
456
471
  - lib/ddr/index/filters.rb
457
472
  - lib/ddr/index/legacy_license_fields.rb
473
+ - lib/ddr/index/queries.rb
458
474
  - lib/ddr/index/query.rb
459
475
  - lib/ddr/index/query_builder.rb
460
476
  - lib/ddr/index/query_clause.rb
477
+ - lib/ddr/index/query_params.rb
461
478
  - lib/ddr/index/query_result.rb
462
479
  - lib/ddr/index/query_value.rb
463
480
  - lib/ddr/index/response.rb
481
+ - lib/ddr/index/sort_order.rb
464
482
  - lib/ddr/index/unique_key_field.rb
465
483
  - lib/ddr/jobs.rb
466
484
  - lib/ddr/jobs/fits_file_characterization.rb
@@ -615,8 +633,12 @@ files:
615
633
  - spec/fixtures/sample.pdf
616
634
  - spec/fixtures/target.png
617
635
  - spec/helpers/models_helper_spec.rb
636
+ - spec/index/fields_spec.rb
618
637
  - spec/index/filter_spec.rb
619
638
  - spec/index/filters_spec.rb
639
+ - spec/index/queries_spec.rb
640
+ - spec/index/query_builder_spec.rb
641
+ - spec/index/query_clause_spec.rb
620
642
  - spec/index/query_spec.rb
621
643
  - spec/index/query_value_spec.rb
622
644
  - spec/jobs/fits_file_characterization_spec.rb
@@ -786,8 +808,12 @@ test_files:
786
808
  - spec/fixtures/sample.pdf
787
809
  - spec/fixtures/target.png
788
810
  - spec/helpers/models_helper_spec.rb
811
+ - spec/index/fields_spec.rb
789
812
  - spec/index/filter_spec.rb
790
813
  - spec/index/filters_spec.rb
814
+ - spec/index/queries_spec.rb
815
+ - spec/index/query_builder_spec.rb
816
+ - spec/index/query_clause_spec.rb
791
817
  - spec/index/query_spec.rb
792
818
  - spec/index/query_value_spec.rb
793
819
  - spec/jobs/fits_file_characterization_spec.rb