supplejack_api 1
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/README.md +80 -0
- data/Rakefile +42 -0
- data/app/assets/javascripts/supplejack_api/application.js +26 -0
- data/app/assets/stylesheets/supplejack_api/application.css +30 -0
- data/app/controllers/supplejack_api/admin/base_controller.rb +24 -0
- data/app/controllers/supplejack_api/admin/sessions_controller.rb +25 -0
- data/app/controllers/supplejack_api/admin/site_activities_controller.rb +21 -0
- data/app/controllers/supplejack_api/admin/users_controller.rb +55 -0
- data/app/controllers/supplejack_api/application_controller.rb +70 -0
- data/app/controllers/supplejack_api/concepts_controller.rb +52 -0
- data/app/controllers/supplejack_api/concerns/ignore_metrics.rb +14 -0
- data/app/controllers/supplejack_api/concerns/records_controller_metrics.rb +26 -0
- data/app/controllers/supplejack_api/concerns/set_items_controller_metrics.rb +20 -0
- data/app/controllers/supplejack_api/concerns/user_sets_controller_metrics.rb +26 -0
- data/app/controllers/supplejack_api/harvester/concepts_controller.rb +41 -0
- data/app/controllers/supplejack_api/harvester/fragments_controller.rb +30 -0
- data/app/controllers/supplejack_api/harvester/records_controller.rb +68 -0
- data/app/controllers/supplejack_api/metrics_api_controller.rb +44 -0
- data/app/controllers/supplejack_api/partners_controller.rb +39 -0
- data/app/controllers/supplejack_api/records_controller.rb +71 -0
- data/app/controllers/supplejack_api/schema_controller.rb +19 -0
- data/app/controllers/supplejack_api/set_items_controller.rb +38 -0
- data/app/controllers/supplejack_api/sources_controller.rb +67 -0
- data/app/controllers/supplejack_api/status_controller.rb +67 -0
- data/app/controllers/supplejack_api/user_sets_controller.rb +97 -0
- data/app/controllers/supplejack_api/users_controller.rb +49 -0
- data/app/helpers/supplejack_api/application_helper.rb +39 -0
- data/app/helpers/supplejack_api/facets_helper.rb +30 -0
- data/app/mailers/supplejack_api/request_limit_mailer.rb +43 -0
- data/app/models/supplejack_api/api_concept/concept_fragment.rb +31 -0
- data/app/models/supplejack_api/api_record/record_fragment.rb +15 -0
- data/app/models/supplejack_api/concept.rb +46 -0
- data/app/models/supplejack_api/concept_search.rb +86 -0
- data/app/models/supplejack_api/concerns/queryable_by_date.rb +31 -0
- data/app/models/supplejack_api/concerns/record.rb +108 -0
- data/app/models/supplejack_api/concerns/record_fragmentable.rb +24 -0
- data/app/models/supplejack_api/concerns/searchable.rb +430 -0
- data/app/models/supplejack_api/concerns/user_set.rb +219 -0
- data/app/models/supplejack_api/daily_metrics.rb +20 -0
- data/app/models/supplejack_api/faceted_metrics.rb +55 -0
- data/app/models/supplejack_api/fragment.rb +82 -0
- data/app/models/supplejack_api/interaction_models/record.rb +60 -0
- data/app/models/supplejack_api/interaction_models/set.rb +13 -0
- data/app/models/supplejack_api/interaction_updaters/all_usage_metric.rb +41 -0
- data/app/models/supplejack_api/interaction_updaters/set_metrics.rb +32 -0
- data/app/models/supplejack_api/interaction_updaters/usage_metrics.rb +73 -0
- data/app/models/supplejack_api/partner.rb +24 -0
- data/app/models/supplejack_api/preview_record.rb +30 -0
- data/app/models/supplejack_api/record.rb +18 -0
- data/app/models/supplejack_api/record_search.rb +12 -0
- data/app/models/supplejack_api/schema_definition.rb +147 -0
- data/app/models/supplejack_api/search.rb +14 -0
- data/app/models/supplejack_api/set_item.rb +57 -0
- data/app/models/supplejack_api/site_activity.rb +59 -0
- data/app/models/supplejack_api/source.rb +28 -0
- data/app/models/supplejack_api/source_activity.rb +36 -0
- data/app/models/supplejack_api/source_authority.rb +42 -0
- data/app/models/supplejack_api/supplejack_schema.rb +37 -0
- data/app/models/supplejack_api/support/concept/searchable.rb +79 -0
- data/app/models/supplejack_api/support/concept/storable.rb +59 -0
- data/app/models/supplejack_api/support/fragment_helpers.rb +96 -0
- data/app/models/supplejack_api/support/harvestable.rb +105 -0
- data/app/models/supplejack_api/support/searchable.rb +115 -0
- data/app/models/supplejack_api/support/status_logger.rb +23 -0
- data/app/models/supplejack_api/support/storable.rb +49 -0
- data/app/models/supplejack_api/support/validation_logger.rb +23 -0
- data/app/models/supplejack_api/usage_metrics.rb +25 -0
- data/app/models/supplejack_api/user.rb +211 -0
- data/app/models/supplejack_api/user_activity.rb +65 -0
- data/app/models/supplejack_api/user_set.rb +17 -0
- data/app/serializers/supplejack_api/application_serializer.rb +12 -0
- data/app/serializers/supplejack_api/concept_record_serializer.rb +23 -0
- data/app/serializers/supplejack_api/concept_search_serializer.rb +12 -0
- data/app/serializers/supplejack_api/concept_serializer.rb +100 -0
- data/app/serializers/supplejack_api/concerns/record_serializable.rb +119 -0
- data/app/serializers/supplejack_api/concerns/search_serializable.rb +24 -0
- data/app/serializers/supplejack_api/record_search_serializer.rb +64 -0
- data/app/serializers/supplejack_api/record_serializer.rb +13 -0
- data/app/serializers/supplejack_api/search_serializer.rb +13 -0
- data/app/serializers/supplejack_api/source_authority_serializer.rb +23 -0
- data/app/serializers/supplejack_api/user_serializer.rb +13 -0
- data/app/serializers/supplejack_api/user_set_record_serializer.rb +14 -0
- data/app/serializers/supplejack_api/user_set_serializer.rb +77 -0
- data/app/services/metrics_api/v3/api.rb +30 -0
- data/app/services/metrics_api/v3/endpoints/facets.rb +23 -0
- data/app/services/metrics_api/v3/endpoints/global.rb +26 -0
- data/app/services/metrics_api/v3/endpoints/helpers.rb +14 -0
- data/app/services/metrics_api/v3/endpoints/root.rb +97 -0
- data/app/services/metrics_api/v3/presenters/daily_metric.rb +23 -0
- data/app/services/metrics_api/v3/presenters/extended_metadata.rb +41 -0
- data/app/services/metrics_api/v3/presenters/record.rb +26 -0
- data/app/services/metrics_api/v3/presenters/view.rb +28 -0
- data/app/views/layouts/supplejack_api/_head.html.erb +17 -0
- data/app/views/layouts/supplejack_api/_top_nav.html.erb +33 -0
- data/app/views/layouts/supplejack_api/application.html.erb +33 -0
- data/app/views/supplejack_api/admin/sessions/new.html.erb +25 -0
- data/app/views/supplejack_api/admin/shared/_links.erb +34 -0
- data/app/views/supplejack_api/admin/site_activities/index.csv.erb +22 -0
- data/app/views/supplejack_api/admin/site_activities/index.html.erb +54 -0
- data/app/views/supplejack_api/admin/users/edit.html.erb +16 -0
- data/app/views/supplejack_api/admin/users/index.csv.erb +22 -0
- data/app/views/supplejack_api/admin/users/index.html.erb +57 -0
- data/app/views/supplejack_api/admin/users/show.html.erb +33 -0
- data/app/views/supplejack_api/request_limit_mailer/at100percent.text.erb +13 -0
- data/app/views/supplejack_api/request_limit_mailer/at100percent_admin.text.erb +1 -0
- data/app/views/supplejack_api/request_limit_mailer/at90percent.text.erb +13 -0
- data/app/views/supplejack_api/request_limit_mailer/at90percent_admin.text.erb +1 -0
- data/app/workers/supplejack_api/daily_metrics_worker.rb +112 -0
- data/app/workers/supplejack_api/interaction_metrics_worker.rb +45 -0
- data/config/cucumber.yml +16 -0
- data/config/initializers/force_eagerload.rb +11 -0
- data/config/initializers/interaction_updaters.rb +7 -0
- data/config/routes.rb +81 -0
- data/db/binding_records.development.json +7 -0
- data/db/binding_records.staging.json +7 -0
- data/db/concepts.json +33 -0
- data/db/concepts_data.json +569745 -0
- data/db/source_authorities.json +119 -0
- data/lib/generators/supplejack_api/install_generator.rb +124 -0
- data/lib/mongoid/paperclip.rb +53 -0
- data/lib/mongoid/string.rb +20 -0
- data/lib/sunspot/mongoid.rb +51 -0
- data/lib/sunspot/resque_session_proxy.rb +72 -0
- data/lib/sunspot/sunspot_spellcheck.rb +98 -0
- data/lib/supplejack_api.rb +13 -0
- data/lib/supplejack_api/admin/sortable.rb +40 -0
- data/lib/supplejack_api/engine.rb +46 -0
- data/lib/supplejack_api/harvester_constraint.rb +28 -0
- data/lib/supplejack_api/stylesheets.rb +36 -0
- data/lib/supplejack_api/utils.rb +75 -0
- data/lib/supplejack_api/version.rb +11 -0
- data/lib/tasks/resque.rake +22 -0
- data/lib/url_validator.rb +38 -0
- data/spec/controllers/supplejack_api/admin/base_controller_spec.rb +55 -0
- data/spec/controllers/supplejack_api/admin/site_activities_controller_spec.rb +43 -0
- data/spec/controllers/supplejack_api/admin/users_controller_spec.rb +79 -0
- data/spec/controllers/supplejack_api/application_controller_spec.rb +133 -0
- data/spec/controllers/supplejack_api/concepts_controller_spec.rb +83 -0
- data/spec/controllers/supplejack_api/concerns/records_controller_metrics_spec.rb +60 -0
- data/spec/controllers/supplejack_api/harvester/concepts_controller_spec.rb +57 -0
- data/spec/controllers/supplejack_api/harvester/records_controller_spec.rb +138 -0
- data/spec/controllers/supplejack_api/metrics_api_controller_spec.rb +71 -0
- data/spec/controllers/supplejack_api/partners_controller_spec.rb +77 -0
- data/spec/controllers/supplejack_api/records_controller_spec.rb +143 -0
- data/spec/controllers/supplejack_api/set_items_controller_spec.rb +78 -0
- data/spec/controllers/supplejack_api/sources_controller_spec.rb +161 -0
- data/spec/controllers/supplejack_api/status_controller_spec.rb +120 -0
- data/spec/controllers/supplejack_api/user_sets_controller_spec.rb +233 -0
- data/spec/controllers/supplejack_api/users_controller_spec.rb +61 -0
- data/spec/dummy/README.rdoc +268 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +23 -0
- data/spec/dummy/app/assets/stylesheets/application.css +22 -0
- data/spec/dummy/app/controllers/application_controller.rb +10 -0
- data/spec/dummy/app/helpers/application_helper.rb +9 -0
- data/spec/dummy/app/supplejack_api/concept_schema.rb +83 -0
- data/spec/dummy/app/supplejack_api/record_schema.rb +64 -0
- data/spec/dummy/app/supplejack_api/record_schema.txt +66 -0
- data/spec/dummy/app/views/layouts/application.html.erb +23 -0
- data/spec/dummy/app/workers/supplejack_api/clear_index_buffer.rb +32 -0
- data/spec/dummy/app/workers/supplejack_api/flush_old_records_worker.rb +17 -0
- data/spec/dummy/app/workers/supplejack_api/index_buffer.rb +49 -0
- data/spec/dummy/app/workers/supplejack_api/index_source_worker.rb +39 -0
- data/spec/dummy/app/workers/supplejack_api/index_worker.rb +82 -0
- data/spec/dummy/app/workers/supplejack_api/store_user_activity_worker.rb +24 -0
- data/spec/dummy/config.ru +11 -0
- data/spec/dummy/config/application.rb +76 -0
- data/spec/dummy/config/application.yml +31 -0
- data/spec/dummy/config/application.yml.example +36 -0
- data/spec/dummy/config/boot.rb +17 -0
- data/spec/dummy/config/environment.rb +12 -0
- data/spec/dummy/config/environments/development.rb +42 -0
- data/spec/dummy/config/environments/production.rb +76 -0
- data/spec/dummy/config/environments/test.rb +46 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +14 -0
- data/spec/dummy/config/initializers/devise.rb +214 -0
- data/spec/dummy/config/initializers/inflections.rb +22 -0
- data/spec/dummy/config/initializers/kaminari_config.rb +17 -0
- data/spec/dummy/config/initializers/mime_types.rb +12 -0
- data/spec/dummy/config/initializers/mongoid.rb +9 -0
- data/spec/dummy/config/initializers/quiet_logger.rb +23 -0
- data/spec/dummy/config/initializers/resque.rb +18 -0
- data/spec/dummy/config/initializers/secret_token.rb +14 -0
- data/spec/dummy/config/initializers/session_store.rb +15 -0
- data/spec/dummy/config/initializers/simple_form.rb +149 -0
- data/spec/dummy/config/initializers/simple_form_foundation.rb +33 -0
- data/spec/dummy/config/initializers/state_machine.rb +8 -0
- data/spec/dummy/config/initializers/sunspot.rb +32 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +17 -0
- data/spec/dummy/config/locales/devise.en.yml +63 -0
- data/spec/dummy/config/locales/en.yml +66 -0
- data/spec/dummy/config/locales/simple_form.en.yml +33 -0
- data/spec/dummy/config/mongoid.travis.yml +34 -0
- data/spec/dummy/config/mongoid.yml +36 -0
- data/spec/dummy/config/resque-pool.yml +18 -0
- data/spec/dummy/config/resque_schedule.yml +12 -0
- data/spec/dummy/config/routes.rb +11 -0
- data/spec/dummy/config/secrets.yml +8 -0
- data/spec/dummy/config/sunspot.yml +38 -0
- data/spec/dummy/db/concepts.json +37 -0
- data/spec/dummy/db/source_authorities.json +116 -0
- data/spec/dummy/public/404.html +35 -0
- data/spec/dummy/public/422.html +35 -0
- data/spec/dummy/public/500.html +34 -0
- data/spec/dummy/public/favicon.ico +8 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/solr/collection1/conf/elevate.xml +36 -0
- data/spec/dummy/solr/collection1/conf/mapping-FoldToASCII.txt +3813 -0
- data/spec/dummy/solr/collection1/conf/schema.xml +292 -0
- data/spec/dummy/solr/collection1/conf/solrconfig.xml +1780 -0
- data/spec/dummy/solr/collection1/conf/spellings.txt +2 -0
- data/spec/dummy/solr/collection1/conf/stopwords.txt +58 -0
- data/spec/dummy/solr/collection1/conf/synonyms.txt +31 -0
- data/spec/factories/concepts.rb +16 -0
- data/spec/factories/daily_metrics.rb +10 -0
- data/spec/factories/faceted_metrics.rb +25 -0
- data/spec/factories/fragment.rb +14 -0
- data/spec/factories/partners.rb +14 -0
- data/spec/factories/record_interaction.rb +17 -0
- data/spec/factories/records.rb +47 -0
- data/spec/factories/set_interaction.rb +15 -0
- data/spec/factories/source_authorities.rb +19 -0
- data/spec/factories/sources.rb +16 -0
- data/spec/factories/usage_metrics.rb +20 -0
- data/spec/factories/user_activities.rb +14 -0
- data/spec/factories/user_sets.rb +27 -0
- data/spec/factories/users.rb +23 -0
- data/spec/helpers/application_helper_spec.rb +35 -0
- data/spec/models/concept_spec.rb +163 -0
- data/spec/models/fragment_spec.rb +15 -0
- data/spec/models/site_activity_spec.rb +103 -0
- data/spec/models/source_activity_spec.rb +56 -0
- data/spec/models/source_authority_spec.rb +42 -0
- data/spec/models/supplejack_api/api_concept/concept_fragment_spec.rb +189 -0
- data/spec/models/supplejack_api/api_record/record_fragment_spec.rb +189 -0
- data/spec/models/supplejack_api/concept_spec.rb +0 -0
- data/spec/models/supplejack_api/interaction_updaters/all_usage_metric_spec.rb +41 -0
- data/spec/models/supplejack_api/interaction_updaters/set_metrics_spec.rb +32 -0
- data/spec/models/supplejack_api/interaction_updaters/usage_metrics_spec.rb +44 -0
- data/spec/models/supplejack_api/partner_spec.rb +20 -0
- data/spec/models/supplejack_api/record_search_spec.rb +429 -0
- data/spec/models/supplejack_api/record_spec.rb +280 -0
- data/spec/models/supplejack_api/schema_definition_spec.rb +272 -0
- data/spec/models/supplejack_api/search_spec.rb +243 -0
- data/spec/models/supplejack_api/set_item_spec.rb +123 -0
- data/spec/models/supplejack_api/source_spec.rb +22 -0
- data/spec/models/supplejack_api/support/fragment_helpers_spec.rb +216 -0
- data/spec/models/supplejack_api/support/harvestable_spec.rb +177 -0
- data/spec/models/supplejack_api/support/searchable_spec.rb +85 -0
- data/spec/models/supplejack_api/support/storable_spec.rb +18 -0
- data/spec/models/supplejack_api/user_activity_spec.rb +88 -0
- data/spec/models/supplejack_api/user_set_spec.rb +559 -0
- data/spec/models/supplejack_api/user_spec.rb +348 -0
- data/spec/routing/concepts_routing_spec.rb +22 -0
- data/spec/routing/harvester_constraint_spec.rb +66 -0
- data/spec/routing/harvester_routing_spec.rb +51 -0
- data/spec/routing/partner_routing_spec.rb +34 -0
- data/spec/routing/records_routing_spec.rb +26 -0
- data/spec/routing/sets_routing_spec.rb +44 -0
- data/spec/routing/source_routing_spec.rb +38 -0
- data/spec/routing/users_routing_spec.rb +18 -0
- data/spec/serializers/concept_record_serializer_spec.rb +30 -0
- data/spec/serializers/supplejack_api/application_serializer_spec.rb +14 -0
- data/spec/serializers/supplejack_api/concept_search_serializer_spec.rb +34 -0
- data/spec/serializers/supplejack_api/concept_serializer_spec.rb +92 -0
- data/spec/serializers/supplejack_api/record_search_serializer_spec.rb +34 -0
- data/spec/serializers/supplejack_api/record_serializer_spec.rb +271 -0
- data/spec/serializers/supplejack_api/search_serializer_spec.rb +90 -0
- data/spec/serializers/supplejack_api/user_serializer_spec.rb +22 -0
- data/spec/serializers/supplejack_api/user_set_serializer_spec.rb +96 -0
- data/spec/services/metrics_api/v3/api_spec.rb +23 -0
- data/spec/services/metrics_api/v3/endpoints/facets_spec.rb +25 -0
- data/spec/services/metrics_api/v3/endpoints/global_spec.rb +22 -0
- data/spec/services/metrics_api/v3/endpoints/root_spec.rb +49 -0
- data/spec/services/metrics_api/v3/presenters/extended_metadata_spec.rb +49 -0
- data/spec/spec_helper.rb +70 -0
- data/spec/support/api/schemas/metrics/daily_metrics_metadata.json +24 -0
- data/spec/support/api/schemas/metrics/extended_metrics.json +26 -0
- data/spec/support/api/schemas/metrics/extended_response.json +6 -0
- data/spec/support/api/schemas/metrics/facets_response.json +6 -0
- data/spec/support/api/schemas/metrics/record_metadata.json +33 -0
- data/spec/support/api/schemas/metrics/top_level_response.json +6 -0
- data/spec/support/api/schemas/metrics/view_metadata.json +33 -0
- data/spec/support/api_schema_matcher.rb +14 -0
- data/spec/support/devise.rb +10 -0
- data/spec/workers/supplejack_api/daily_metrics_worker_spec.rb +140 -0
- data/spec/workers/supplejack_api/flush_old_records_worker_spec.rb +20 -0
- data/spec/workers/supplejack_api/index_worker_spec.rb +52 -0
- data/spec/workers/supplejack_api/source_index_worker_spec.rb +61 -0
- metadata +1231 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
# The majority of the Supplejack API code is Crown copyright (C) 2014, New Zealand Government,
|
2
|
+
# and is licensed under the GNU General Public License, version 3.
|
3
|
+
# One component is a third party component. See https://github.com/DigitalNZ/supplejack_api for details.
|
4
|
+
#
|
5
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ and
|
6
|
+
# the Department of Internal Affairs. http://digitalnz.org/supplejack
|
7
|
+
|
8
|
+
require 'spec_helper'
|
9
|
+
|
10
|
+
module SupplejackApi
|
11
|
+
describe SearchSerializer do
|
12
|
+
|
13
|
+
def facet_row(value, count)
|
14
|
+
double(:facet_row, value: value, count: count)
|
15
|
+
end
|
16
|
+
|
17
|
+
def facet_objects
|
18
|
+
[
|
19
|
+
double(:facet, name: :full_name ,rows: [
|
20
|
+
facet_row('Nick Miller', 123),
|
21
|
+
facet_row('Winston Bishop', 10)
|
22
|
+
]),
|
23
|
+
double(:facet, name: :coffee ,rows: [
|
24
|
+
facet_row('Dark', 3022),
|
25
|
+
facet_row('Mid', 104),
|
26
|
+
facet_row('Light', 11)
|
27
|
+
])
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
before {
|
32
|
+
@facets = facet_objects
|
33
|
+
@search = double(:search, results: [], total: 10, per_page: 20, page: 1, facets: @facets,
|
34
|
+
request_url: "http://foo.com/records", collation: 'whanganui').as_null_object
|
35
|
+
|
36
|
+
# Test using RecordSearchSerializer
|
37
|
+
@serializer = RecordSearchSerializer.new(@search)
|
38
|
+
}
|
39
|
+
|
40
|
+
describe '#json_facets' do
|
41
|
+
it 'returns a hash of facets' do
|
42
|
+
expect(@serializer.json_facets).to be_a(Hash)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should have two facets' do
|
46
|
+
expect(@serializer.json_facets.size).to eq(2)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'returns facets with name as key' do
|
50
|
+
expect(@serializer.json_facets.keys).to include(:full_name, :coffee)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'returns each facet as a hash' do
|
54
|
+
expect(@serializer.json_facets[:full_name]).to be_a(Hash)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'returns facet-values and their counts' do
|
58
|
+
expect(@serializer.json_facets[:full_name]).to include('Nick Miller' => 123, 'Winston Bishop' => 10)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#xml_facets' do
|
63
|
+
it 'returns a array of facets' do
|
64
|
+
expect(@serializer.xml_facets).to be_a(Array)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should have two facets' do
|
68
|
+
expect(@serializer.xml_facets.size).to eq(2)
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'includes the name of each facet' do
|
72
|
+
facet = @serializer.xml_facets.first
|
73
|
+
expect(facet[:name]).to eq 'full_name'
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'each facet should have a array of values with name and count' do
|
77
|
+
facet = @serializer.xml_facets.first
|
78
|
+
expect(facet[:values]).to eq [{ name: 'Nick Miller', count: 123 }, { name: 'Winston Bishop', count: 10 }]
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe '#to_json' do
|
83
|
+
# it 'wraps everything in a jsonp function' do
|
84
|
+
# allow(@search).to receive(:jsonp) { 'SupplejackApi.function' }
|
85
|
+
# expect(@serializer.to_json).to match(/^SupplejackApi.function\(.*\)$/)
|
86
|
+
# end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# The majority of the Supplejack API code is Crown copyright (C) 2014, New Zealand Government,
|
2
|
+
# and is licensed under the GNU General Public License, version 3.
|
3
|
+
# One component is a third party component. See https://github.com/DigitalNZ/supplejack_api for details.
|
4
|
+
#
|
5
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ and
|
6
|
+
# the Department of Internal Affairs. http://digitalnz.org/supplejack
|
7
|
+
|
8
|
+
require 'spec_helper'
|
9
|
+
|
10
|
+
module SupplejackApi
|
11
|
+
describe UserSerializer do
|
12
|
+
let(:user) { User.new(name: 'Fed', email: 'fed@boost.com', username: 'fede', authentication_token: '12345') }
|
13
|
+
let(:serializer) { UserSerializer.new(user) }
|
14
|
+
|
15
|
+
it 'includes the basic user information' do
|
16
|
+
allow(user).to receive(:id) { 'abc1234567' }
|
17
|
+
expect(serializer.as_json).to eq({user: {id: 'abc1234567', name: 'Fed', email: 'fed@boost.com', username: 'fede', api_key: '12345'}})
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# The majority of the Supplejack API code is Crown copyright (C) 2014, New Zealand Government,
|
2
|
+
# and is licensed under the GNU General Public License, version 3.
|
3
|
+
# One component is a third party component. See https://github.com/DigitalNZ/supplejack_api for details.
|
4
|
+
#
|
5
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ and
|
6
|
+
# the Department of Internal Affairs. http://digitalnz.org/supplejack
|
7
|
+
|
8
|
+
require 'spec_helper'
|
9
|
+
|
10
|
+
module SupplejackApi
|
11
|
+
class FakeSet
|
12
|
+
ATTRIBUTES = [:id, :name, :description, :tags, :count, :privacy]
|
13
|
+
def initialize(attributes={})
|
14
|
+
@attributes = attributes
|
15
|
+
end
|
16
|
+
|
17
|
+
def read_attribute_for_serialization(method)
|
18
|
+
@attributes[method]
|
19
|
+
end
|
20
|
+
|
21
|
+
def method_missing(method, *args, &block)
|
22
|
+
@attributes[method]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe UserSetSerializer do
|
27
|
+
before :each do
|
28
|
+
@user_set = FactoryGirl.create(:user_set, name: "Dogs and cats", priority: 5)
|
29
|
+
@user_set.set_items.build(record_id: 1)
|
30
|
+
@user_set.save
|
31
|
+
end
|
32
|
+
|
33
|
+
context "with user's name" do
|
34
|
+
before :each do
|
35
|
+
allow(@user_set).to receive(:user) { double(:user, name: "John", api_key: "12345").as_null_object }
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should include the user's name" do
|
39
|
+
serializer = UserSetSerializer.new(@user_set, user: true, items: false)
|
40
|
+
expect(serializer.as_json[:set]).to include({user: {name: "John"}})
|
41
|
+
end
|
42
|
+
|
43
|
+
it "includes the user api key when the user option is an admin" do
|
44
|
+
allow(RecordSchema).to receive(:roles) { { admin: double(:admin, admin: true) } }
|
45
|
+
admin = User.new(role: "admin")
|
46
|
+
serializer = UserSetSerializer.new(@user_set, user: admin, items: false)
|
47
|
+
expect(serializer.as_json[:set]).to include({user: {name: "John", api_key: "12345"}})
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "requesting a single item" do
|
52
|
+
it "should only fetch 1 record" do
|
53
|
+
serializer = UserSetSerializer.new(@user_set, featured: true, items: false)
|
54
|
+
expect(@user_set).to receive(:items_with_records).with(1) { [] }
|
55
|
+
serializer.as_json
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context "not requesting set items" do
|
60
|
+
it "only returns the name, id, count and priority" do
|
61
|
+
serializer = UserSetSerializer.new(@user_set, items: false)
|
62
|
+
expect(serializer.as_json[:set]).to include({id: @user_set.id, name: "Dogs and cats", count: 0, priority: 5})
|
63
|
+
end
|
64
|
+
|
65
|
+
it "includes the set items without extra info" do
|
66
|
+
serializer = UserSetSerializer.new(@user_set, items: false)
|
67
|
+
expect(serializer.as_json[:set]).to include({records: [{record_id: 1, position: 1}]})
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "requesting set items" do
|
72
|
+
before(:each) do
|
73
|
+
@user_set = FakeSet.new(id: "1", name: "Dogs and cats", description: "Ugly dogs and cats", tags: ["dog"], count:1, privacy:"hidden", featured: true, approved: true)
|
74
|
+
allow(@user_set).to receive(:items_with_records){[double(:item, record_id: 5, position: 1, name: "John Smith", address: "Wellington").as_null_object]}
|
75
|
+
allow(@user_set).to receive(:user) { double(:user, name: "Tony").as_null_object }
|
76
|
+
end
|
77
|
+
|
78
|
+
let(:serializer) { UserSetSerializer.new(@user_set) }
|
79
|
+
|
80
|
+
it "returns the full set information" do
|
81
|
+
expect(serializer.as_json[:set]).to include({id: "1", name: "Dogs and cats", description: "Ugly dogs and cats", tags: ["dog"], count: 1, privacy: "hidden", featured: true, approved: true })
|
82
|
+
end
|
83
|
+
|
84
|
+
it "returns the set items with the records information" do
|
85
|
+
expect(serializer.as_json[:set][:records]).to eq [{record_id: 5, position: 1, name: "John Smith", address: "Wellington"}]
|
86
|
+
end
|
87
|
+
|
88
|
+
it "returns the user information" do
|
89
|
+
serializer = UserSetSerializer.new(@user_set, user: true)
|
90
|
+
expect(serializer.as_json[:set][:user]).to eq({name: "Tony"})
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module MetricsApi
|
4
|
+
module V3
|
5
|
+
describe Api do
|
6
|
+
let!(:daily_item_metric){create(:daily_item_metric)}
|
7
|
+
let(:api) do
|
8
|
+
Api.new({
|
9
|
+
start_date: @start_date,
|
10
|
+
end_date: @end_date,
|
11
|
+
metrics: "usage,display_collection"
|
12
|
+
})
|
13
|
+
end
|
14
|
+
|
15
|
+
before do
|
16
|
+
@start_date = Date.current
|
17
|
+
@end_date = Date.current
|
18
|
+
|
19
|
+
5.times.map{create(:usage_metrics)}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module MetricsApi
|
4
|
+
module V3
|
5
|
+
module Endpoints
|
6
|
+
describe Facets, search: true, slow: true do
|
7
|
+
let(:facet) {Facets.new(nil)}
|
8
|
+
|
9
|
+
before do
|
10
|
+
Sunspot.session = Sunspot.session.original_session
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#call" do
|
14
|
+
it 'returns a list of all facets' do
|
15
|
+
create(:record_with_fragment, display_collection: 'dc1')
|
16
|
+
create(:record_with_fragment, display_collection: 'dc2')
|
17
|
+
Sunspot.commit
|
18
|
+
|
19
|
+
expect(facet.call).to eq(['dc1', 'dc2'])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module MetricsApi
|
4
|
+
module V3
|
5
|
+
module Endpoints
|
6
|
+
describe Global do
|
7
|
+
let(:global) {Global.new({})}
|
8
|
+
|
9
|
+
describe "#call" do
|
10
|
+
it "returns an array of hashes representing the DailyMetrics for the supplied date range" do
|
11
|
+
create(:daily_metrics, date: Date.today, total_public_sets: 10)
|
12
|
+
|
13
|
+
expect(global.call).to eq([{
|
14
|
+
day: Date.today,
|
15
|
+
total_public_sets: 10
|
16
|
+
}])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module MetricsApi
|
4
|
+
module V3
|
5
|
+
module Endpoints
|
6
|
+
describe Root do
|
7
|
+
let(:extended) do
|
8
|
+
Root.new({
|
9
|
+
facets: @facets,
|
10
|
+
start_date: @start_date,
|
11
|
+
end_date: @end_date,
|
12
|
+
metrics: @metrics
|
13
|
+
})
|
14
|
+
end
|
15
|
+
|
16
|
+
before do
|
17
|
+
@facets = 'dc1,dc2'
|
18
|
+
@start_date = Date.current.strftime
|
19
|
+
@end_date = Date.current.strftime
|
20
|
+
@metrics = 'view,record'
|
21
|
+
|
22
|
+
create(:faceted_metrics, name: 'dc1')
|
23
|
+
create(:faceted_metrics, name: 'dc2')
|
24
|
+
create(:usage_metrics, record_field_value: 'dc1', created_at: Date.current.midday)
|
25
|
+
create(:usage_metrics, record_field_value: 'dc2', created_at: Date.current.midday)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#call" do
|
29
|
+
it 'retrieves a range of metrics' do
|
30
|
+
result = extended.call
|
31
|
+
|
32
|
+
expect(result.first[:date]).to eq(Date.current)
|
33
|
+
expect(result.first["record"].length).to eq(2)
|
34
|
+
expect(result.first["view"].length).to eq(2)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'filters metrics based on the facets argument' do
|
38
|
+
@facets = 'dc1'
|
39
|
+
result = extended.call
|
40
|
+
|
41
|
+
expect(result.first[:date]).to eq(Date.current)
|
42
|
+
expect(result.first["record"].length).to eq(1)
|
43
|
+
expect(result.first["view"].length).to eq(1)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module MetricsApi
|
4
|
+
module V3
|
5
|
+
module Presenters
|
6
|
+
describe ExtendedMetadata do
|
7
|
+
let(:presenter){ExtendedMetadata.new(@models, Date.yesterday, Date.current)}
|
8
|
+
|
9
|
+
before do
|
10
|
+
@models = [
|
11
|
+
{
|
12
|
+
metric: 'view',
|
13
|
+
models: {
|
14
|
+
Date.current => [
|
15
|
+
create(:usage_metrics),
|
16
|
+
create(:usage_metrics)
|
17
|
+
],
|
18
|
+
Date.yesterday => [
|
19
|
+
create(:usage_metrics, created_at: Date.yesterday.midday)
|
20
|
+
]
|
21
|
+
}
|
22
|
+
},
|
23
|
+
{
|
24
|
+
metric: 'record',
|
25
|
+
models: {
|
26
|
+
Date.current => [
|
27
|
+
create(:faceted_metrics),
|
28
|
+
],
|
29
|
+
Date.yesterday => [
|
30
|
+
create(:faceted_metrics, date: Date.yesterday)
|
31
|
+
]
|
32
|
+
}
|
33
|
+
}
|
34
|
+
]
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'presents them' do
|
38
|
+
json = presenter.to_json
|
39
|
+
|
40
|
+
expect(json.length).to eq(2)
|
41
|
+
expect(json.first[:date]).to eq(Date.yesterday)
|
42
|
+
expect(json.last[:date]).to eq(Date.current)
|
43
|
+
expect(json.first['record'].length).to eq(1)
|
44
|
+
expect(json.first['view'].length).to eq(1)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
# The majority of the Supplejack API code is Crown copyright (C) 2014, New Zealand Government,
|
2
|
+
# and is licensed under the GNU General Public License, version 3.
|
3
|
+
# One component is a third party component. See https://github.com/DigitalNZ/supplejack_api for details.
|
4
|
+
#
|
5
|
+
# Supplejack was created by DigitalNZ at the National Library of NZ and
|
6
|
+
# the Department of Internal Affairs. http://digitalnz.org/supplejack
|
7
|
+
|
8
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
9
|
+
ENV['RAILS_ENV'] ||= 'test'
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'pry'
|
13
|
+
rescue LoadError
|
14
|
+
end
|
15
|
+
|
16
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
17
|
+
require 'rails/application'
|
18
|
+
require 'rails/mongoid'
|
19
|
+
require 'rspec/rails'
|
20
|
+
require 'factory_girl_rails'
|
21
|
+
require 'timecop'
|
22
|
+
require 'sunspot_matchers'
|
23
|
+
require 'mongoid-rspec'
|
24
|
+
require 'simplecov'
|
25
|
+
require 'rspec/active_model/mocks'
|
26
|
+
require 'sunspot_test/rspec'
|
27
|
+
|
28
|
+
require "codeclimate-test-reporter"
|
29
|
+
CodeClimate::TestReporter.start
|
30
|
+
# SimpleCov.start
|
31
|
+
|
32
|
+
Rails.backtrace_cleaner.remove_silencers!
|
33
|
+
|
34
|
+
# Load support files
|
35
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
36
|
+
|
37
|
+
RSpec.configure do |config|
|
38
|
+
config.mock_with :rspec
|
39
|
+
config.infer_spec_type_from_file_location!
|
40
|
+
config.infer_base_class_for_anonymous_controllers = false
|
41
|
+
config.order = "random"
|
42
|
+
# Ignore focus on CI
|
43
|
+
config.filter_run focus: true unless ENV['CI']
|
44
|
+
config.run_all_when_everything_filtered = true
|
45
|
+
|
46
|
+
require 'database_cleaner'
|
47
|
+
config.before(:suite) do
|
48
|
+
DatabaseCleaner[:mongoid].strategy = :truncation
|
49
|
+
end
|
50
|
+
|
51
|
+
config.before(:each) do
|
52
|
+
# We have added this as database cleaner appears to not be working for mongo
|
53
|
+
SupplejackApi::Record.destroy_all
|
54
|
+
SupplejackApi::Concept.destroy_all
|
55
|
+
DatabaseCleaner.clean
|
56
|
+
Sunspot.session = Sunspot::Rails::StubSessionProxy.new(Sunspot.session)
|
57
|
+
Timecop.return
|
58
|
+
|
59
|
+
%w(record concept).each do |model|
|
60
|
+
klass = "#{model.capitalize}Schema".constantize
|
61
|
+
|
62
|
+
allow(klass).to receive(:default_role) { double(:role, name: :developer) }
|
63
|
+
allow(klass).to receive_message_chain(:roles, :keys) { [:developer] }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
config.include SunspotMatchers
|
68
|
+
config.include Mongoid::Matchers
|
69
|
+
config.include FactoryGirl::Syntax::Methods
|
70
|
+
end
|