works_cited 0.1.14 → 0.1.15

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +27 -2
  3. data/VERSION +1 -1
  4. data/app/assets/javascripts/works_cited/addFields.js +44 -0
  5. data/app/assets/javascripts/works_cited/application.js +6 -1
  6. data/app/assets/javascripts/works_cited/loadPreview.js +45 -0
  7. data/app/assets/javascripts/works_cited/removeFields.js +37 -0
  8. data/app/assets/javascripts/works_cited/shared.js +59 -0
  9. data/app/assets/javascripts/works_cited/showFields.js +9 -0
  10. data/app/assets/javascripts/works_cited/submitForm.js +33 -0
  11. data/app/controllers/concerns/works_cited/params.rb +24 -0
  12. data/app/controllers/works_cited/citations_controller.rb +26 -13
  13. data/app/helpers/works_cited/application_helper.rb +46 -1
  14. data/app/models/works_cited/citation.rb +30 -34
  15. data/app/models/works_cited/contributor.rb +11 -28
  16. data/app/views/works_cited/citation_types/fields/_book.html.haml +1 -1
  17. data/app/views/works_cited/citation_types/fields/_electronic.html.haml +1 -1
  18. data/app/views/works_cited/citation_types/fields/_email.html.haml +1 -1
  19. data/app/views/works_cited/citation_types/fields/_interview.html.haml +1 -1
  20. data/app/views/works_cited/citation_types/fields/_periodical.html.haml +1 -1
  21. data/app/views/works_cited/citation_types/fields/_tweet.html.haml +1 -1
  22. data/app/views/works_cited/citations/_citation_fields.html.haml +28 -0
  23. data/app/views/works_cited/citations/_fields.html.haml +14 -0
  24. data/app/views/works_cited/citations/_form.html.haml +16 -53
  25. data/app/views/works_cited/citations/preview.html.haml +1 -1
  26. data/app/views/works_cited/contributors/_contributor_fields.html.haml +11 -0
  27. data/config/routes.rb +8 -2
  28. data/db/migrate/20210915160902_add_index_to_works_cited_contributors.rb +5 -1
  29. data/lib/works_cited/mixins/has_works_cited.rb +14 -1
  30. data/spec/dummy/app/controllers/doodads_controller.rb +2 -1
  31. data/spec/dummy/app/controllers/things_controller.rb +1 -1
  32. data/spec/dummy/app/views/doodads/_form.html.haml +2 -0
  33. data/spec/dummy/db/development.sqlite3 +0 -0
  34. data/spec/dummy/db/migrate/20210915161011_create_works_cited_citations.works_cited.rb +1 -0
  35. data/spec/dummy/db/migrate/20210915161012_create_works_cited_contributors.works_cited.rb +1 -0
  36. data/spec/dummy/db/migrate/20210915161013_add_index_to_works_cited_contributors.works_cited.rb +4 -1
  37. data/spec/dummy/db/schema.rb +60 -59
  38. data/spec/dummy/db/test.sqlite3 +0 -0
  39. data/spec/dummy/log/development.log +26893 -15
  40. data/spec/dummy/log/test.log +24838 -0
  41. data/spec/factories/things.rb +8 -0
  42. data/spec/models/doodad_spec.rb +13 -1
  43. data/spec/models/thing_spec.rb +13 -1
  44. data/spec/models/works_cited/citation_spec.rb +12 -0
  45. data/spec/requests/works_cited/citations_spec.rb +10 -8
  46. data/spec/routing/works_cited/citations_routing_spec.rb +5 -1
  47. data/works_cited.gemspec +14 -4
  48. metadata +13 -3
  49. data/app/views/works_cited/contributors/_fields.html.haml +0 -9
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :thing do
5
+ name { Faker::Lorem.words(number: [*1..5].sample).join(' ').titleize }
6
+ description { Faker::Lorem.paragraphs(number: [*1..5].sample).join("\n") }
7
+ end
8
+ end
@@ -3,7 +3,19 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  RSpec.describe Doodad, type: :model do
6
- describe 'Gem functioning' do
6
+ describe 'Mixin functioning' do
7
7
  it { should have_many(:works_cited_citations) }
8
8
  end
9
+ describe 'WorksCited Methods' do
10
+ describe '#works_cited_citations_attributes=' do
11
+ let!(:doodad) { FactoryBot.create(:doodad) }
12
+ it 'saves the citations' do
13
+ expect do
14
+ citation_attributes = FactoryBot.build(:works_cited_citation).attributes
15
+ doodad.works_cited_citations_attributes = { "0" => citation_attributes }
16
+ doodad.save
17
+ end.to change { doodad.works_cited_citations.count }.by(1)
18
+ end
19
+ end
20
+ end
9
21
  end
@@ -3,7 +3,19 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  RSpec.describe Thing, type: :model do
6
- describe 'Gem functioning' do
6
+ describe 'Mixin functioning' do
7
7
  it { should have_many(:works_cited_citations) }
8
8
  end
9
+ describe 'WorksCited Methods' do
10
+ describe '#works_cited_citations_attributes=' do
11
+ let!(:thing) { FactoryBot.create(:thing) }
12
+ it 'saves the citations' do
13
+ expect do
14
+ citation_attributes = FactoryBot.build(:works_cited_citation).attributes
15
+ thing.works_cited_citations_attributes = { "0" => citation_attributes }
16
+ thing.save
17
+ end.to change { thing.works_cited_citations.count }.by(1)
18
+ end
19
+ end
20
+ end
9
21
  end
@@ -19,6 +19,18 @@ RSpec.describe WorksCited::Citation, type: :model do
19
19
  let(:electronic) { FactoryBot.create(:works_cited_citation, record: doodad, citation_type: 'electronic') }
20
20
  let(:interview) { FactoryBot.create(:works_cited_citation, record: doodad, citation_type: 'interview') }
21
21
  let(:email) { FactoryBot.create(:works_cited_citation, record: doodad, citation_type: 'email') }
22
+ describe '#works_cited_contributors_attributes=' do
23
+ before do
24
+ book.works_cited_contributors.destroy_all
25
+ end
26
+ it 'saves the contributors' do
27
+ expect do
28
+ contributor_attributes = FactoryBot.build(:works_cited_contributor).attributes
29
+ book.works_cited_contributors_attributes = { "0" => contributor_attributes }
30
+ book.save
31
+ end.to change { book.works_cited_contributors.count }.by(1)
32
+ end
33
+ end
22
34
  describe '#book?' do
23
35
  describe 'when true' do
24
36
  subject { book.book? }
@@ -41,7 +41,7 @@ module WorksCited
41
41
 
42
42
  describe 'GET /index' do
43
43
  before do
44
- Citation.create! valid_attributes
44
+ citation
45
45
  end
46
46
  it 'disallows' do
47
47
  expect { get citations_url }.to raise_error(CanCan::AccessDenied)
@@ -60,10 +60,11 @@ module WorksCited
60
60
  end
61
61
  end
62
62
 
63
- describe 'PATCH /preview' do
63
+ describe 'POST /preview' do
64
64
  it 'disallows' do
65
65
  expect do
66
- patch preview_citation_url, params: { citation: valid_attributes }
66
+ params = { citation: valid_attributes }
67
+ post preview_citations_url, params: JSON.parse(params.to_json), as: :json
67
68
  end.to raise_error(CanCan::AccessDenied)
68
69
  end
69
70
  end
@@ -76,7 +77,7 @@ module WorksCited
76
77
 
77
78
  describe 'PATCH /update' do
78
79
  let(:new_attributes) do
79
- { citation_type: 'book', title: 'New Title', record_id: doodad.id, record_type: 'Doodad' }
80
+ { citation_type: 'book', title: 'New Title', record: "Doodad:#{doodad.id}" }
80
81
  end
81
82
  it 'disallows' do
82
83
  expect do
@@ -105,7 +106,7 @@ module WorksCited
105
106
 
106
107
  describe 'GET /index' do
107
108
  before do
108
- Citation.create! valid_attributes
109
+ citation
109
110
  end
110
111
  it 'renders a successful response when admin' do
111
112
  get citations_url
@@ -127,10 +128,11 @@ module WorksCited
127
128
  end
128
129
  end
129
130
 
130
- describe 'PATCH /preview' do
131
+ describe 'POST /preview' do
131
132
  context 'with valid parameters' do
132
133
  it 'previews the Citation' do
133
- patch preview_citation_url, params: { citation: valid_attributes }
134
+ params = { citation: valid_attributes }
135
+ post preview_citations_url, params: JSON.parse(params.to_json), as: :json
134
136
  expect(response).to be_successful
135
137
  end
136
138
  end
@@ -166,7 +168,7 @@ module WorksCited
166
168
 
167
169
  describe 'PATCH /update' do
168
170
  let(:new_attributes) do
169
- { citation_type: 'book', title: 'New Title', record_id: doodad.id, record_type: 'Doodad' }
171
+ { citation_type: 'book', title: 'New Title', record: "Doodad:#{doodad.id}" }
170
172
  end
171
173
  context 'with valid parameters' do
172
174
  it 'updates the requested citation' do
@@ -11,7 +11,11 @@ RSpec.describe WorksCited::CitationsController, type: :routing do
11
11
  end
12
12
 
13
13
  it 'routes to #preview' do
14
- expect(patch: '/preview').to route_to('works_cited/citations#preview')
14
+ expect(post: '/citations/preview').to route_to('works_cited/citations#preview', format: :json)
15
+ end
16
+
17
+ it 'routes to #preview' do
18
+ expect(post: '/citations/1/preview').to route_to('works_cited/citations#preview', id: '1', format: :json)
15
19
  end
16
20
 
17
21
  it 'routes to #new' do
data/works_cited.gemspec CHANGED
@@ -2,17 +2,17 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: works_cited 0.1.14 ruby lib
5
+ # stub: works_cited 0.1.15 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "works_cited".freeze
9
- s.version = "0.1.14"
9
+ s.version = "0.1.15"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.metadata = { "source_code_uri" => "http://github.com/gemvein/works_cited" } if s.respond_to? :metadata=
13
13
  s.require_paths = ["lib".freeze]
14
14
  s.authors = ["Loren Lundgren".freeze]
15
- s.date = "2021-09-16"
15
+ s.date = "2021-09-24"
16
16
  s.description = "Works cited allows you to add a list of the works cited in ActiveRecord objects, to be formatted by a helper that can be added to relevant pages to format the citations like a bibliography.".freeze
17
17
  s.email = "loren.lundgren@gmail.com".freeze
18
18
  s.executables = ["rails".freeze]
@@ -31,8 +31,15 @@ Gem::Specification.new do |s|
31
31
  "README.md",
32
32
  "Rakefile",
33
33
  "VERSION",
34
+ "app/assets/javascripts/works_cited/addFields.js",
34
35
  "app/assets/javascripts/works_cited/application.js",
36
+ "app/assets/javascripts/works_cited/loadPreview.js",
37
+ "app/assets/javascripts/works_cited/removeFields.js",
38
+ "app/assets/javascripts/works_cited/shared.js",
39
+ "app/assets/javascripts/works_cited/showFields.js",
40
+ "app/assets/javascripts/works_cited/submitForm.js",
35
41
  "app/assets/stylesheets/works_cited/application.scss",
42
+ "app/controllers/concerns/works_cited/params.rb",
36
43
  "app/controllers/works_cited/citations_controller.rb",
37
44
  "app/helpers/works_cited/application_helper.rb",
38
45
  "app/models/works_cited/citation.rb",
@@ -51,6 +58,8 @@ Gem::Specification.new do |s|
51
58
  "app/views/works_cited/citation_types/fields/_interview.html.haml",
52
59
  "app/views/works_cited/citation_types/fields/_periodical.html.haml",
53
60
  "app/views/works_cited/citation_types/fields/_tweet.html.haml",
61
+ "app/views/works_cited/citations/_citation_fields.html.haml",
62
+ "app/views/works_cited/citations/_fields.html.haml",
54
63
  "app/views/works_cited/citations/_form.html.haml",
55
64
  "app/views/works_cited/citations/_list.html.haml",
56
65
  "app/views/works_cited/citations/edit.html.haml",
@@ -58,7 +67,7 @@ Gem::Specification.new do |s|
58
67
  "app/views/works_cited/citations/new.html.haml",
59
68
  "app/views/works_cited/citations/preview.html.haml",
60
69
  "app/views/works_cited/citations/show.html.haml",
61
- "app/views/works_cited/contributors/_fields.html.haml",
70
+ "app/views/works_cited/contributors/_contributor_fields.html.haml",
62
71
  "bin/rails",
63
72
  "config/initializers/simple_form.rb",
64
73
  "config/locales/simple_form.en.yml",
@@ -168,6 +177,7 @@ Gem::Specification.new do |s|
168
177
  "spec/factories/citations.rb",
169
178
  "spec/factories/contributors.rb",
170
179
  "spec/factories/doodads.rb",
180
+ "spec/factories/things.rb",
171
181
  "spec/factories/users.rb",
172
182
  "spec/helpers/works_cited/application_helper_spec.rb",
173
183
  "spec/models/doodad_spec.rb",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: works_cited
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Loren Lundgren
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-16 00:00:00.000000000 Z
11
+ date: 2021-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -341,8 +341,15 @@ files:
341
341
  - README.md
342
342
  - Rakefile
343
343
  - VERSION
344
+ - app/assets/javascripts/works_cited/addFields.js
344
345
  - app/assets/javascripts/works_cited/application.js
346
+ - app/assets/javascripts/works_cited/loadPreview.js
347
+ - app/assets/javascripts/works_cited/removeFields.js
348
+ - app/assets/javascripts/works_cited/shared.js
349
+ - app/assets/javascripts/works_cited/showFields.js
350
+ - app/assets/javascripts/works_cited/submitForm.js
345
351
  - app/assets/stylesheets/works_cited/application.scss
352
+ - app/controllers/concerns/works_cited/params.rb
346
353
  - app/controllers/works_cited/citations_controller.rb
347
354
  - app/helpers/works_cited/application_helper.rb
348
355
  - app/models/works_cited/citation.rb
@@ -361,6 +368,8 @@ files:
361
368
  - app/views/works_cited/citation_types/fields/_interview.html.haml
362
369
  - app/views/works_cited/citation_types/fields/_periodical.html.haml
363
370
  - app/views/works_cited/citation_types/fields/_tweet.html.haml
371
+ - app/views/works_cited/citations/_citation_fields.html.haml
372
+ - app/views/works_cited/citations/_fields.html.haml
364
373
  - app/views/works_cited/citations/_form.html.haml
365
374
  - app/views/works_cited/citations/_list.html.haml
366
375
  - app/views/works_cited/citations/edit.html.haml
@@ -368,7 +377,7 @@ files:
368
377
  - app/views/works_cited/citations/new.html.haml
369
378
  - app/views/works_cited/citations/preview.html.haml
370
379
  - app/views/works_cited/citations/show.html.haml
371
- - app/views/works_cited/contributors/_fields.html.haml
380
+ - app/views/works_cited/contributors/_contributor_fields.html.haml
372
381
  - bin/rails
373
382
  - config/initializers/simple_form.rb
374
383
  - config/locales/simple_form.en.yml
@@ -478,6 +487,7 @@ files:
478
487
  - spec/factories/citations.rb
479
488
  - spec/factories/contributors.rb
480
489
  - spec/factories/doodads.rb
490
+ - spec/factories/things.rb
481
491
  - spec/factories/users.rb
482
492
  - spec/helpers/works_cited/application_helper_spec.rb
483
493
  - spec/models/doodad_spec.rb
@@ -1,9 +0,0 @@
1
- %fieldset
2
- %legend Contributor
3
- = form.input :contributor_role, collection: WorksCited.configuration.valid_contributor_roles.map { |x| [x, x] }
4
- = form.input :first
5
- = form.input :middle, hint: 'Only the initial is used'
6
- = form.input :last
7
- = form.input :suffix
8
- = form.input :handle
9
- = link_to_remove_nested form, link_classes: 'button button-danger'