hydramata-work 0.0.1.pre
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/.gitignore +8 -0
- data/.rspec +2 -0
- data/.travis.yml +14 -0
- data/Gemfile +26 -0
- data/LICENSE +15 -0
- data/README.md +8 -0
- data/Rakefile +43 -0
- data/app/models/hydramata/work/entity.rb +12 -0
- data/app/models/hydramata/work/presentation_structure.rb +6 -0
- data/app/models/hydramata/work/renderer.rb +12 -0
- data/fs +3 -0
- data/hydramata-work.gemspec +35 -0
- data/lib/hydramata-work.rb +5 -0
- data/lib/hydramata/work/engine.rb +7 -0
- data/lib/hydramata/work/version.rb +5 -0
- data/lib/hydramata_work.rb +2 -0
- data/lib/tasks/hydramata_work_tasks.rake +4 -0
- data/script/fast_specs +22 -0
- data/spec/fast_helper.rb +11 -0
- data/spec/feature_helper.rb +1 -0
- data/spec/features/entity_rendering_spec.rb +51 -0
- data/spec/models/hydramata/work/entity_spec.rb +20 -0
- data/spec/models/hydramata/work/property_set_spec.rb +0 -0
- data/spec/spec_helper.rb +34 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +14 -0
- metadata +146 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0fcc0738988470157183521706aecb2f57b0c1b0
|
4
|
+
data.tar.gz: 96f1fd8eee6cc2197f7dff5c2ab065758bd1f4e8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0842a0403ac0df1850fd8f010312fdab55d2ab679d2e81f785775c8c0aec09f81f613656a2ef39ba2180eeed0180dd099b6f5ab1185b14d43682f31fff17ae36
|
7
|
+
data.tar.gz: f667803f1c33a3ea377bc58a67f84778d9d79e07e4e3ca1462191b325d60ca0b8a68de51a7bcea94a5b70c0463ca5c5bb03b77fd6628326503887e3f14a8cba9
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
# Declare your gem's dependencies in hydramata-work.gemspec.
|
4
|
+
# Bundler will treat runtime dependencies like base dependencies, and
|
5
|
+
# development dependencies will be added by default to the :development group.
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
# Declare any dependencies that are still in development here instead of in
|
9
|
+
# your gemspec. These might include edge Rails or gems from your path or
|
10
|
+
# Git. Remember to move these dependencies to your gemspec before releasing
|
11
|
+
# your gem to rubygems.org.
|
12
|
+
|
13
|
+
# To use debugger
|
14
|
+
# gem 'debugger'
|
15
|
+
|
16
|
+
gem "rake"
|
17
|
+
gem 'coveralls', require: false
|
18
|
+
gem 'simplecov', require: false
|
19
|
+
|
20
|
+
file = File.expand_path("Gemfile", ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path("../spec/internal", __FILE__))
|
21
|
+
if File.exists?(file)
|
22
|
+
puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
|
23
|
+
instance_eval File.read(file)
|
24
|
+
end
|
25
|
+
|
26
|
+
gem 'sprockets', '2.11.0'
|
data/LICENSE
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
##########################################################################
|
2
|
+
# Copyright 2014 University of Notre Dame
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
data/README.md
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# Hydramata::Work
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/hydramata-work)
|
4
|
+
[](https://travis-ci.org/jeremyf/hydramata-work)
|
5
|
+
[](https://codeclimate.com/github/jeremyf/hydramata-work)
|
6
|
+
[](https://coveralls.io/r/jeremyf/hydramata-work)
|
7
|
+
[](http://rubydoc.info/gems/hydramata-work/0.8.0/frames)
|
8
|
+
[](./LICENSE)
|
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
Bundler::GemHelper.install_tasks
|
8
|
+
|
9
|
+
begin
|
10
|
+
APP_RAKEFILE = File.expand_path('../spec/internal/Rakefile', __FILE__)
|
11
|
+
load 'rails/tasks/engine.rake'
|
12
|
+
rescue LoadError
|
13
|
+
puts "Unable to load all app tasks for #{APP_RAKEFILE}"
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'engine_cart/rake_task'
|
17
|
+
require 'rspec/core/rake_task'
|
18
|
+
|
19
|
+
namespace :spec do
|
20
|
+
RSpec::Core::RakeTask.new(:all) do
|
21
|
+
ENV['COVERAGE'] = 'true'
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'Run the Travis CI specs'
|
25
|
+
task :travis do
|
26
|
+
ENV['RAILS_ENV'] = 'test'
|
27
|
+
ENV['SPEC_OPTS'] = '--profile 20'
|
28
|
+
Rake::Task['engine_cart:clean'].invoke
|
29
|
+
Rake::Task['engine_cart:generate'].invoke
|
30
|
+
Rake::Task['spec:all'].invoke
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
begin
|
35
|
+
Rake::Task['default'].clear
|
36
|
+
rescue RuntimeError
|
37
|
+
# This isn't a big deal if we don't have a default
|
38
|
+
end
|
39
|
+
|
40
|
+
Rake::Task['spec'].clear
|
41
|
+
|
42
|
+
task spec: 'spec:all'
|
43
|
+
task default: 'spec:travis'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
2
|
+
|
3
|
+
# Maintain your gem's version:
|
4
|
+
require 'hydramata/work/version'
|
5
|
+
|
6
|
+
# Describe your gem and declare its dependencies:
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = 'hydramata-work'
|
9
|
+
s.version = Hydramata::Work::VERSION
|
10
|
+
s.authors = [
|
11
|
+
'Jeremy Friesen'
|
12
|
+
]
|
13
|
+
s.email = [
|
14
|
+
'jeremy.n.friesen@gmail.com'
|
15
|
+
]
|
16
|
+
s.homepage = 'https://github.com/jeremyf/hydramata-work'
|
17
|
+
s.summary = 'A Thought Experiement on Modeling Hydramata::Work'
|
18
|
+
s.description = 'A Thought Experiement on Modeling Hydramata::Work'
|
19
|
+
|
20
|
+
s.license = 'APACHE2'
|
21
|
+
|
22
|
+
s.files = `git ls-files -z`.split("\x0")
|
23
|
+
s.executables = s.files.grep(%r{^bin/}) do |f|
|
24
|
+
f == 'bin/rails' ? nil : File.basename(f)
|
25
|
+
end.compact
|
26
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
27
|
+
s.require_paths = ['lib']
|
28
|
+
|
29
|
+
s.add_dependency 'rails', '~> 4.0.3'
|
30
|
+
|
31
|
+
s.add_development_dependency 'engine_cart'
|
32
|
+
s.add_development_dependency 'rspec-given'
|
33
|
+
s.add_development_dependency 'rspec-html-matchers'
|
34
|
+
s.add_development_dependency 'sqlite3'
|
35
|
+
end
|
data/script/fast_specs
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
|
5
|
+
# A helper function for answering: Does this spec run fast?
|
6
|
+
module Fast
|
7
|
+
module_function
|
8
|
+
def spec?(fn)
|
9
|
+
open(fn) { |f| f.gets =~ /fast_helper/ }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
fast_specs = FileList['spec/**/*_spec.rb'].select do |fn|
|
14
|
+
Fast.spec?(fn)
|
15
|
+
end
|
16
|
+
|
17
|
+
if fast_specs.any?
|
18
|
+
system "rspec #{fast_specs}"
|
19
|
+
else
|
20
|
+
puts 'Unable to find any fast specs'
|
21
|
+
exit(-1)
|
22
|
+
end
|
data/spec/fast_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rspec/given'
|
2
|
+
Dir[File.expand_path("../../app/*", __FILE__)].each do |dir|
|
3
|
+
$LOAD_PATH << dir
|
4
|
+
end
|
5
|
+
$LOAD_PATH << File.expand_path("../../lib", __FILE__)
|
6
|
+
|
7
|
+
unless defined?(require_dependency)
|
8
|
+
def require_dependency(*files)
|
9
|
+
require *files
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'spec_helper'
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'feature_helper'
|
2
|
+
|
3
|
+
describe 'An entity and presentation structure' do
|
4
|
+
let(:entity) do
|
5
|
+
Hydramata::Work::Entity.new do |entity|
|
6
|
+
entity.properties << { predicate: :title, value: 'Hello' }
|
7
|
+
entity.properties << { predicate: :title, value: 'World' }
|
8
|
+
entity.properties << { predicate: :title, value: 'Bang!' }
|
9
|
+
entity.properties << { predicate: :abstract, value: 'Long Text' }
|
10
|
+
entity.properties << { predicate: :abstract, value: 'Longer Text' }
|
11
|
+
entity.properties << { predicate: :keyword, value: 'Programming' }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:presentation_structure) do
|
16
|
+
Hydramata::Work::PresentationStructure.new do |struct|
|
17
|
+
struct.fieldset(:required) do |fieldset|
|
18
|
+
fieldset.push predicate: :title
|
19
|
+
end
|
20
|
+
struct.fieldset(:optional) do |fieldset|
|
21
|
+
fieldset.push predicate: :abstract
|
22
|
+
fieldset.push predicate: :keyword
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
let(:renderer) do
|
28
|
+
Hydramata::Work::Renderer.new(
|
29
|
+
context: :show,
|
30
|
+
content_type: :html,
|
31
|
+
entity: entity,
|
32
|
+
presentation_structure: presentation_structure
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
xit 'renders as a well-structured HTML document' do
|
37
|
+
rendered_output = renderer.call
|
38
|
+
|
39
|
+
expect(rendered_output).to have_tag('.work') do
|
40
|
+
with_tag('.required .title .label', text: 'Title')
|
41
|
+
with_tag('.required .title .value', text: 'Hello')
|
42
|
+
with_tag('.required .title .value', text: 'World')
|
43
|
+
with_tag('.required .title .value', text: 'Bang!')
|
44
|
+
with_tag('.optional .abstract .label', text: 'Abstract')
|
45
|
+
with_tag('.optional .abstract .value', text: 'Long Text')
|
46
|
+
with_tag('.optional .abstract .value', text: 'Longer Text')
|
47
|
+
with_tag('.optional .keyword .label', text: 'Keyword')
|
48
|
+
with_tag('.optional .keyword .value', text: 'Programming')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'fast_helper'
|
2
|
+
require 'hydramata/work/entity'
|
3
|
+
|
4
|
+
module Hydramata
|
5
|
+
module Work
|
6
|
+
describe Entity do
|
7
|
+
subject { described_class.new }
|
8
|
+
it { expect(subject).to respond_to(:entity_type) }
|
9
|
+
|
10
|
+
context '#properties' do
|
11
|
+
let(:property) { { predicate: :title, value: 'Hello' } }
|
12
|
+
it 'can be appended' do
|
13
|
+
expect {
|
14
|
+
subject.properties << property
|
15
|
+
}.to change { subject.properties.count }.by(1)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
File without changes
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
ENV["RAILS_ENV"] ||= 'test'
|
2
|
+
if ENV['COVERAGE']
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start 'rails'
|
5
|
+
SimpleCov.command_name "spec"
|
6
|
+
end
|
7
|
+
|
8
|
+
if ENV['TRAVIS']
|
9
|
+
require 'coveralls'
|
10
|
+
Coveralls.wear!('rails')
|
11
|
+
end
|
12
|
+
|
13
|
+
require 'engine_cart'
|
14
|
+
require File.expand_path("../internal/config/environment.rb", __FILE__)
|
15
|
+
|
16
|
+
EngineCart.load_application!
|
17
|
+
|
18
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
19
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
20
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
21
|
+
# loaded once.
|
22
|
+
#
|
23
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
24
|
+
RSpec.configure do |config|
|
25
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
26
|
+
config.run_all_when_everything_filtered = true
|
27
|
+
config.filter_run :focus
|
28
|
+
|
29
|
+
# Run specs in random order to surface order dependencies. If you find an
|
30
|
+
# order dependency and want to debug it, you can fix the order by providing
|
31
|
+
# the seed, which is printed after each run.
|
32
|
+
# --seed 1234
|
33
|
+
config.order = 'random'
|
34
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
class TestAppGenerator < Rails::Generators::Base
|
4
|
+
source_root "./spec/test_app_templates"
|
5
|
+
|
6
|
+
# if you need to generate any additional configuration
|
7
|
+
# into the test app, this generator will be run immediately
|
8
|
+
# after setting up the application
|
9
|
+
|
10
|
+
def install_engine
|
11
|
+
generate 'hydramata-work:install'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hydramata-work
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.pre
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeremy Friesen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-05-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: engine_cart
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec-given
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-html-matchers
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sqlite3
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: A Thought Experiement on Modeling Hydramata::Work
|
84
|
+
email:
|
85
|
+
- jeremy.n.friesen@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- .gitignore
|
91
|
+
- .rspec
|
92
|
+
- .travis.yml
|
93
|
+
- Gemfile
|
94
|
+
- LICENSE
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- app/models/hydramata/work/entity.rb
|
98
|
+
- app/models/hydramata/work/presentation_structure.rb
|
99
|
+
- app/models/hydramata/work/renderer.rb
|
100
|
+
- fs
|
101
|
+
- hydramata-work.gemspec
|
102
|
+
- lib/hydramata-work.rb
|
103
|
+
- lib/hydramata/work/engine.rb
|
104
|
+
- lib/hydramata/work/version.rb
|
105
|
+
- lib/hydramata_work.rb
|
106
|
+
- lib/tasks/hydramata_work_tasks.rake
|
107
|
+
- script/fast_specs
|
108
|
+
- spec/fast_helper.rb
|
109
|
+
- spec/feature_helper.rb
|
110
|
+
- spec/features/entity_rendering_spec.rb
|
111
|
+
- spec/models/hydramata/work/entity_spec.rb
|
112
|
+
- spec/models/hydramata/work/property_set_spec.rb
|
113
|
+
- spec/spec_helper.rb
|
114
|
+
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
115
|
+
homepage: https://github.com/jeremyf/hydramata-work
|
116
|
+
licenses:
|
117
|
+
- APACHE2
|
118
|
+
metadata: {}
|
119
|
+
post_install_message:
|
120
|
+
rdoc_options: []
|
121
|
+
require_paths:
|
122
|
+
- lib
|
123
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - '>'
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 1.3.1
|
133
|
+
requirements: []
|
134
|
+
rubyforge_project:
|
135
|
+
rubygems_version: 2.0.14
|
136
|
+
signing_key:
|
137
|
+
specification_version: 4
|
138
|
+
summary: A Thought Experiement on Modeling Hydramata::Work
|
139
|
+
test_files:
|
140
|
+
- spec/fast_helper.rb
|
141
|
+
- spec/feature_helper.rb
|
142
|
+
- spec/features/entity_rendering_spec.rb
|
143
|
+
- spec/models/hydramata/work/entity_spec.rb
|
144
|
+
- spec/models/hydramata/work/property_set_spec.rb
|
145
|
+
- spec/spec_helper.rb
|
146
|
+
- spec/test_app_templates/lib/generators/test_app_generator.rb
|