archangel 0.0.2 → 0.0.3

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE.md +7 -15
  3. data/.github/PULL_REQUEST_TEMPLATE.md +0 -5
  4. data/.gitignore +1 -0
  5. data/.hound.yml +2 -2
  6. data/.jshintignore +5 -0
  7. data/.jshintrc +28 -0
  8. data/.nvmrc +1 -0
  9. data/CONTRIBUTING.md +13 -114
  10. data/Gemfile +3 -3
  11. data/README.md +12 -37
  12. data/Rakefile +11 -0
  13. data/app/controllers/archangel/application_controller.rb +1 -2
  14. data/archangel.gemspec +3 -1
  15. data/bin/archangel +15 -0
  16. data/docs/Developers.md +122 -1
  17. data/docs/Extension/Controllers.md +139 -0
  18. data/docs/Extension/Developers.md +27 -0
  19. data/docs/Extension/Helpers.md +17 -0
  20. data/docs/Extension/Ideas.md +131 -0
  21. data/docs/Extension/Models.md +32 -0
  22. data/docs/Extension/Policies.md +42 -0
  23. data/docs/Extension/Routes.md +26 -0
  24. data/docs/Extension/Uploaders.md +3 -0
  25. data/docs/Extension/Views.md +3 -0
  26. data/docs/Release.md +9 -3
  27. data/docs/Theme/Developers.md +7 -0
  28. data/lib/archangel/command/extension.rb +97 -0
  29. data/lib/archangel/command/templates/extension/.editorconfig +19 -0
  30. data/lib/archangel/command/templates/extension/.gitignore +11 -0
  31. data/lib/archangel/command/templates/extension/.rspec +2 -0
  32. data/lib/archangel/command/templates/extension/.rubocop.yml +32 -0
  33. data/lib/archangel/command/templates/extension/Gemfile +29 -0
  34. data/lib/archangel/command/templates/extension/MIT-LICENSE +21 -0
  35. data/lib/archangel/command/templates/extension/README.md +79 -0
  36. data/lib/archangel/command/templates/extension/Rakefile +25 -0
  37. data/lib/archangel/command/templates/extension/app/assets/javascripts/archangel/auth/%extension_name%.js.tt +3 -0
  38. data/lib/archangel/command/templates/extension/app/assets/javascripts/archangel/backend/%extension_name%.js.tt +3 -0
  39. data/lib/archangel/command/templates/extension/app/assets/javascripts/archangel/frontend/%extension_name%.js.tt +3 -0
  40. data/lib/archangel/command/templates/extension/app/assets/stylesheets/archangel/auth/%extension_name%.css.tt +5 -0
  41. data/lib/archangel/command/templates/extension/app/assets/stylesheets/archangel/backend/%extension_name%.css.tt +5 -0
  42. data/lib/archangel/command/templates/extension/app/assets/stylesheets/archangel/frontend/%extension_name%.css.tt +5 -0
  43. data/lib/archangel/command/templates/extension/bin/rails.tt +11 -0
  44. data/lib/archangel/command/templates/extension/config/locales/en.yml.tt +4 -0
  45. data/lib/archangel/command/templates/extension/config/routes.rb +5 -0
  46. data/lib/archangel/command/templates/extension/extension.gemspec +25 -0
  47. data/lib/archangel/command/templates/extension/lib/%extension_name%/engine.rb.tt +29 -0
  48. data/lib/archangel/command/templates/extension/lib/%extension_name%/factories.rb.tt +13 -0
  49. data/lib/archangel/command/templates/extension/lib/%extension_name%/version.rb.tt +5 -0
  50. data/lib/archangel/command/templates/extension/lib/%extension_name%.rb.tt +9 -0
  51. data/lib/archangel/command/templates/extension/lib/generators/%extension_name%/install/install_generator.rb.tt +42 -0
  52. data/lib/archangel/command/templates/extension/spec/rails_helper.rb.tt +41 -0
  53. data/lib/archangel/command/templates/extension/spec/spec_helper.rb +22 -0
  54. data/lib/archangel/command/templates/extension/spec/support/.keep +0 -0
  55. data/lib/archangel/liquid/drop.rb +21 -11
  56. data/lib/archangel/liquid_view.rb +7 -31
  57. data/lib/archangel/version.rb +1 -1
  58. data/lib/generators/archangel/dummy/dummy_generator.rb +1 -0
  59. data/package.json +8 -3
  60. data/spec/lib/archangel/command/extension_spec.rb +100 -0
  61. data/spec/lib/archangel/liquid/drop_spec.rb +10 -0
  62. data/spec/lib/archangel/liquid/drops/page_drop_spec.rb +77 -0
  63. data/spec/lib/archangel/liquid/drops/site_drop_spec.rb +78 -0
  64. data/spec/lib/archangel/liquid/filters/link_to_filter_spec.rb +0 -4
  65. data/spec/lib/archangel/liquid/tags/collection_tag_spec.rb +0 -1
  66. data/spec/lib/archangel/liquid/tags/collectionfor_tag_spec.rb +0 -1
  67. data/spec/lib/archangel/liquid/tags/theme_javascript_tag_spec.rb +4 -3
  68. data/spec/lib/archangel/liquid/tags/theme_stylesheet_tag_spec.rb +4 -3
  69. metadata +64 -6
  70. data/docs/ExtensionDevelopers.md +0 -3
  71. data/docs/ExtensionIdeas.md +0 -132
  72. data/docs/ThemeDevelopers.md +0 -3
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ENGINE_ROOT = File.expand_path("../..", __FILE__)
4
+ ENGINE_PATH = File.expand_path("../../lib/<%= extension_name %>/engine", __FILE__)
5
+
6
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
7
+
8
+ require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"])
9
+
10
+ require "rails/all"
11
+ require "rails/engine/commands"
@@ -0,0 +1,4 @@
1
+ en:
2
+ archangel:
3
+ hello: "Hello world"
4
+ <%= extension_name %>: <%= class_name %>
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ Archangel::Engine.routes.draw do
4
+ # Add your routes here
5
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
4
+
5
+ require "<%= extension_name %>/version"
6
+
7
+ Gem::Specification.new do |s|
8
+ s.platform = Gem::Platform::RUBY
9
+ s.name = "<%= extension_name %>"
10
+ s.version = <%= class_name %>::VERSION
11
+ s.authors = ["Your Name"]
12
+ s.homepage = "https://github.com/USERNAME/<%= extension_name %>"
13
+ s.summary = "TODO: Summary of <%= class_name %>."
14
+ s.description = "TODO: Description of <%= class_name %>."
15
+ s.license = "MIT"
16
+
17
+ s.files = Dir[
18
+ "{app,config,db,lib}/**/*",
19
+ "MIT-LICENSE",
20
+ "Rakefile",
21
+ "README.md"
22
+ ]
23
+
24
+ s.add_dependency "archangel", "< 1.0"
25
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module <%= class_name %>
4
+ class Engine < ::Rails::Engine
5
+ require "archangel"
6
+
7
+ isolate_namespace Archangel
8
+ engine_name "<%= extension_name %>"
9
+
10
+ config.generators do |gen|
11
+ gen.test_framework :rspec,
12
+ fixtures: false,
13
+ view_specs: false,
14
+ helper_specs: true,
15
+ routing_specs: false,
16
+ controller_specs: true,
17
+ request_specs: true
18
+ gen.fixture_replacement :factory_bot, dir: "spec/factories"
19
+ end
20
+
21
+ def self.activate
22
+ Dir[File.join(__dir__, "../../app/**/*_decorator*.rb")].each do |klass|
23
+ Rails.application.config.cache_classes ? require(klass) : load(klass)
24
+ end
25
+ end
26
+
27
+ config.to_prepare(&method(:activate).to_proc)
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Define your extensions Factories within this file to enable applications and
4
+ # other extensions to use and override them.
5
+ #
6
+ # Example adding this to your spec_helper will load these Factories for use:
7
+ # require "<%= extension_name %>/factories"
8
+
9
+ FactoryBot.define do
10
+ end
11
+
12
+ FactoryBot.modify do
13
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module <%= class_name %>
4
+ VERSION = "0.0.1".freeze
5
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "archangel"
4
+
5
+ require "<%= extension_name %>/engine"
6
+ require "<%= extension_name %>/version"
7
+
8
+ module <%= class_name %>
9
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module <%= class_name %>
4
+ module Generators
5
+ class InstallGenerator < ::Rails::Generators::Base
6
+ class_option :auto_run_migrations, type: :boolean, default: false
7
+
8
+ def add_javascripts
9
+ %w[auth backend frontend].each do |section|
10
+ append_file "vendor/assets/javascripts/archangel/#{section}.js",
11
+ "//= require archangel/#{section}/<%= extension_name %>\n"
12
+ end
13
+ end
14
+
15
+ def add_stylesheets
16
+ %w[auth backend frontend].each do |section|
17
+ inject_into_file "vendor/assets/stylesheets/archangel/#{section}.css",
18
+ "*= require archangel/#{section}/<%= extension_name %>\n ",
19
+ before: %r{\*/},
20
+ verbose: true
21
+ end
22
+ end
23
+
24
+ def add_migrations
25
+ run "bundle exec rails railties:install:migrations FROM=<%= extension_name %>"
26
+ end
27
+
28
+ def run_migrations
29
+ migration_message = "Would you like to run the migrations now? [Y/n]"
30
+
31
+ run_migrations = options[:auto_run_migrations] || ["", "y", "Y"]
32
+ .include?(ask(migration_message))
33
+
34
+ if run_migrations
35
+ run "bundle exec rails db:migrate"
36
+ else
37
+ puts "Skipping `rails db:migrate`, don't forget to run it!"
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "simplecov"
4
+
5
+ SimpleCov.start :rails
6
+
7
+ ENV["RAILS_ENV"] ||= "test"
8
+
9
+ begin
10
+ require File.expand_path("dummy/config/environment", __dir__)
11
+ rescue LoadError
12
+ puts "Could not load test application. Run `bundle exec rake dummy_app` first"
13
+ exit
14
+ end
15
+
16
+ if Rails.env.production?
17
+ abort("The Rails environment is running in production mode!")
18
+ end
19
+
20
+ require "spec_helper"
21
+
22
+ require "pry-byebug"
23
+ require "rspec/rails"
24
+
25
+ # Archangel support files
26
+ require "archangel/testing_support/support"
27
+
28
+ # Require factories defined in lib/<%= extension_name %>/factories.rb
29
+ require "<%= extension_name %>/factories"
30
+
31
+ # Local support files
32
+ Dir[Rails.root.join("../support/**/*.rb")].each { |f| require f }
33
+
34
+ RSpec.configure do |config|
35
+ config.color = true
36
+ config.mock_with :rspec
37
+
38
+ config.raise_errors_for_deprecations!
39
+ config.filter_rails_from_backtrace!
40
+ config.infer_spec_type_from_file_location!
41
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.configure do |config|
4
+ config.expect_with :rspec do |expectations|
5
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
6
+ end
7
+
8
+ config.mock_with :rspec do |mocks|
9
+ mocks.verify_partial_doubles = true
10
+ end
11
+
12
+ config.filter_run :focus
13
+ config.run_all_when_everything_filtered = true
14
+
15
+ config.example_status_persistence_file_path = "spec/examples.txt"
16
+
17
+ config.disable_monkey_patching!
18
+
19
+ config.profile_examples = 10
20
+
21
+ config.order = :random
22
+ end
@@ -60,26 +60,36 @@ module Archangel
60
60
  end
61
61
 
62
62
  def self.associate(type, attrs)
63
- options = attrs.extract_options!
64
63
  self._associations = _associations.dup
65
64
 
65
+ associate_attributes(type, attrs)
66
+ end
67
+
68
+ def self.associate_attributes(type, attrs)
69
+ options = attrs.extract_options!
70
+
66
71
  attrs.each do |attr|
67
72
  next if method_defined?(attr)
68
73
 
69
- define_method attr do
70
- value = instance_variable_get("@_#{attr}")
71
- return value if value
74
+ define_method_attribute(attr)
72
75
 
73
- association = object.send(attr)
74
- return nil if association.blank?
76
+ _associations[attr] = { type: type, options: options }
77
+ end
78
+ end
75
79
 
76
- drop_instance =
77
- Archangel::Liquid::Drop.dropify(association, options)
80
+ def self.define_method_attribute(attr)
81
+ options = attrs.extract_options!
78
82
 
79
- instance_variable_set("@_#{attr}", drop_instance)
80
- end
83
+ define_method attr do
84
+ value = instance_variable_get("@_#{attr}")
85
+ return value if value
86
+
87
+ association = object.send(attr)
88
+ return nil if association.blank?
89
+
90
+ drop_instance = Archangel::Liquid::Drop.dropify(association, options)
81
91
 
82
- self._associations[attr] = { type: type, options: options }
92
+ instance_variable_set("@_#{attr}", drop_instance)
83
93
  end
84
94
  end
85
95
 
@@ -33,16 +33,20 @@ module Archangel
33
33
  # @return [String] the rendered content
34
34
  #
35
35
  def render(template, local_assigns = {})
36
- @view.controller.headers["Content-Type"] ||= "text/html; charset=utf-8"
36
+ default_controller.headers["Content-Type"] ||= "text/html; charset=utf-8"
37
37
 
38
38
  assigns = default_assigns(local_assigns)
39
- options = { filters: default_filters, registers: default_registers }
39
+ options = { registers: default_registers }
40
40
 
41
41
  Archangel::RenderService.call(template, assigns, options)
42
42
  end
43
43
 
44
44
  protected
45
45
 
46
+ def default_controller
47
+ @view.controller
48
+ end
49
+
46
50
  def default_assigns(local_assigns)
47
51
  assigns = @view.assigns
48
52
 
@@ -53,40 +57,12 @@ module Archangel
53
57
  assigns.merge(local_assigns.stringify_keys)
54
58
  end
55
59
 
56
- def default_controller
57
- @view.controller
58
- end
59
-
60
- def default_filters
61
- extra_filters = []
62
-
63
- controller_class = default_controller.class
64
-
65
- if controller_class.respond_to?(:liquid_filters)
66
- controller_class.liquid_filters.each do |method|
67
- extra_filters.merge! default_controller.send(method)
68
- end
69
- end
70
-
71
- extra_filters
72
- end
73
-
74
60
  def default_registers
75
- extra_registers = {}
76
-
77
- controller_class = default_controller.class
78
-
79
- if controller_class.respond_to?(:liquid_registers)
80
- controller_class.liquid_registers.each do |method|
81
- extra_registers.merge! default_controller.send(method)
82
- end
83
- end
84
-
85
61
  {
86
62
  view: @view,
87
63
  controller: default_controller,
88
64
  helper: ActionController::Base.helpers
89
- }.merge extra_registers
65
+ }
90
66
  end
91
67
  end
92
68
  end
@@ -4,7 +4,7 @@ module Archangel
4
4
  ##
5
5
  # Archangel gem version
6
6
  #
7
- VERSION = "0.0.2".freeze
7
+ VERSION = "0.0.3".freeze
8
8
 
9
9
  ##
10
10
  # Archangel version
@@ -67,6 +67,7 @@ module Archangel
67
67
  opts[:skip_git] = true
68
68
  opts[:old_style_hash] = false
69
69
  opts[:skip_turbolinks] = true
70
+ opts[:skip_bootsnap] = true
70
71
 
71
72
  puts "Generating dummy Rails application..."
72
73
 
data/package.json CHANGED
@@ -12,6 +12,10 @@
12
12
  "ruby"
13
13
  ],
14
14
  "license": "MIT",
15
+ "engines": {
16
+ "node": "8.11.1",
17
+ "yarn": "1.6.0"
18
+ },
15
19
  "repository": {
16
20
  "type": "git",
17
21
  "url": "archangel/archangel"
@@ -26,8 +30,9 @@
26
30
  "scripts": {
27
31
  "test": "test"
28
32
  },
33
+ "dependencies": {},
29
34
  "devDependencies": {
30
- "eslint": "^4.18.2"
31
- },
32
- "dependencies": {}
35
+ "eslint": "^4.18.2",
36
+ "jshint": "^2.9.5"
37
+ }
33
38
  }
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+ require "archangel/command/extension"
5
+
6
+ module Archangel
7
+ module Command
8
+ RSpec.describe Extension do
9
+ describe "#extension" do
10
+ before { allow(STDOUT).to receive(:puts) }
11
+
12
+ let(:dummy_path) { "spec/dummy" }
13
+
14
+ context "when given an extension name" do
15
+ let(:extension_name) { "example" }
16
+ let(:extension_full_name) { "archangel_#{extension_name}" }
17
+ let(:extension_path) { "#{dummy_path}/#{extension_full_name}" }
18
+
19
+ before { before_generation(extension_name) }
20
+
21
+ after { after_generation(extension_path) }
22
+
23
+ it "should write common directories" do
24
+ %w[app bin config lib spec].each do |dir|
25
+ expect(glob_directories_in(extension_path)).to include(dir)
26
+ end
27
+ end
28
+
29
+ it "should write common files" do
30
+ %w[.editorconfig .gitignore .rspec .rubocop.yml Gemfile
31
+ MIT-LICENSE Rakefile README.md].each do |file|
32
+ expect(glob_files_in(extension_path)).to include(file)
33
+ end
34
+
35
+ expect(glob_files_in(extension_path))
36
+ .to include("#{extension_full_name}.gemspec")
37
+ end
38
+ end
39
+
40
+ context "when not given an extension name" do
41
+ let(:extension_name) { nil }
42
+ let(:extension_full_name) { "archangel_sample" }
43
+ let(:extension_path) { "#{dummy_path}/#{extension_full_name}" }
44
+
45
+ before { before_generation(extension_name) }
46
+
47
+ after { after_generation(extension_path) }
48
+
49
+ it "should write common files for `sample`" do
50
+ expect(glob_files_in(extension_path))
51
+ .to include("#{extension_full_name}.gemspec")
52
+ end
53
+ end
54
+ end
55
+
56
+ def before_generation(extension_name)
57
+ silence_output
58
+
59
+ Dir.chdir("spec/dummy") do
60
+ subject = Archangel::Command::Extension.new([extension_name])
61
+ subject.invoke_all
62
+ end
63
+ end
64
+
65
+ def after_generation(extension_path)
66
+ enable_output
67
+
68
+ FileUtils.rm_rf("#{extension_path}/")
69
+ end
70
+
71
+ def glob_directories_in(extension_path)
72
+ Dir.glob("#{extension_path}/*")
73
+ .reject { |file| File.file?(file) }
74
+ .map { |file| File.basename(file) }
75
+ end
76
+
77
+ def glob_files_in(extension_path)
78
+ Dir.glob("#{extension_path}/{.[^\.]*,*}")
79
+ .select { |file| File.file?(file) }
80
+ .map { |file| File.basename(file) }
81
+ end
82
+
83
+ def silence_output
84
+ @orig_stderr = $stderr
85
+ @orig_stdout = $stdout
86
+
87
+ $stderr = File.new("/dev/null", "w")
88
+ $stdout = File.new("/dev/null", "w")
89
+ end
90
+
91
+ def enable_output
92
+ $stderr = @orig_stderr
93
+ $stdout = @orig_stdout
94
+
95
+ @orig_stderr = nil
96
+ @orig_stdout = nil
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+
5
+ module Archangel
6
+ module Liquid
7
+ RSpec.describe Drop, :library do
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+
5
+ module Archangel
6
+ module Liquid
7
+ module Drops
8
+ RSpec.describe PageDrop, type: :liquid_drop do
9
+ let(:resource) do
10
+ create(:page, title: "Test Page",
11
+ slug: "path-for-page",
12
+ meta_keywords: "keywords,for,page",
13
+ meta_description: "Description of page",
14
+ published_at: "2018-04-20 14:20:18")
15
+ end
16
+ let(:resource_drop) { described_class.new(resource) }
17
+
18
+ context "attributes" do
19
+ it "_attributes" do
20
+ expect(resource_drop.class._attributes)
21
+ .to eq(%i[meta_description meta_keywords published_at title])
22
+ end
23
+
24
+ it "returns correct attribute values" do
25
+ expect(resource_drop.meta_description).to eq("Description of page")
26
+ expect(resource_drop.meta_keywords).to eq("keywords,for,page")
27
+ expect(resource_drop.published_at).to eq("2018-04-20 14:20:18")
28
+ expect(resource_drop.title).to eq("Test Page")
29
+ end
30
+
31
+ it "returns correct #id value" do
32
+ expect(resource_drop.id).to eq(resource.id.to_s)
33
+ end
34
+
35
+ it "returns correct #path value" do
36
+ expect(resource_drop.path).to eq("/path-for-page")
37
+ end
38
+ end
39
+
40
+ context "#as_json" do
41
+ it "returns hash of attributes" do
42
+ json_object = {
43
+ meta_description: "Description of page",
44
+ meta_keywords: "keywords,for,page",
45
+ published_at: "2018-04-20T14:20:18.000Z",
46
+ title: "Test Page"
47
+ }
48
+
49
+ expect(resource_drop.as_json).to eq(json_object.as_json)
50
+ end
51
+ end
52
+
53
+ context "#to_json" do
54
+ it "returns hash of attributes" do
55
+ json_object = {
56
+ meta_description: "Description of page",
57
+ meta_keywords: "keywords,for,page",
58
+ published_at: "2018-04-20T14:20:18.000Z",
59
+ title: "Test Page"
60
+ }
61
+
62
+ expect(resource_drop.to_json).to eq(json_object.to_json)
63
+ end
64
+ end
65
+
66
+ context "#inspect" do
67
+ it "returns inspect string" do
68
+ expect(resource_drop.inspect)
69
+ .to include("#<Archangel::Liquid::Drops::PageDrop")
70
+ expect(resource_drop.inspect)
71
+ .to include("#<Archangel::Page")
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+
5
+ module Archangel
6
+ module Liquid
7
+ module Drops
8
+ RSpec.describe SiteDrop, type: :liquid_drop do
9
+ let(:resource) do
10
+ create(:site, name: "Test Site",
11
+ locale: "en",
12
+ meta_keywords: "keywords,for,site",
13
+ meta_description: "Description of site")
14
+ end
15
+ let(:resource_drop) { described_class.new(resource) }
16
+
17
+ context "attributes" do
18
+ it "_attributes" do
19
+ expect(resource_drop.class._attributes)
20
+ .to eq(%i[locale meta_description meta_keywords name])
21
+ end
22
+
23
+ it "returns correct attribute values" do
24
+ expect(resource_drop.locale).to eq("en")
25
+ expect(resource_drop.meta_description).to eq("Description of site")
26
+ expect(resource_drop.meta_keywords).to eq("keywords,for,site")
27
+ expect(resource_drop.name).to eq("Test Site")
28
+ end
29
+
30
+ it "returns correct #favicon value" do
31
+ expect(resource_drop.favicon)
32
+ .to match(%r{/assets/archangel/fallback/favicon(.+).ico})
33
+ end
34
+
35
+ it "returns correct #logo value" do
36
+ expect(resource_drop.logo)
37
+ .to match(%r{/assets/archangel/fallback/logo(.+).png})
38
+ end
39
+ end
40
+
41
+ context "#as_json" do
42
+ it "returns hash of attributes" do
43
+ json_object = {
44
+ locale: "en",
45
+ meta_description: "Description of site",
46
+ meta_keywords: "keywords,for,site",
47
+ name: "Test Site"
48
+ }
49
+
50
+ expect(resource_drop.as_json).to eq(json_object.as_json)
51
+ end
52
+ end
53
+
54
+ context "#to_json" do
55
+ it "returns hash of attributes" do
56
+ json_object = {
57
+ locale: "en",
58
+ meta_description: "Description of site",
59
+ meta_keywords: "keywords,for,site",
60
+ name: "Test Site"
61
+ }
62
+
63
+ expect(resource_drop.to_json).to eq(json_object.to_json)
64
+ end
65
+ end
66
+
67
+ context "#inspect" do
68
+ it "returns inspect string" do
69
+ expect(resource_drop.inspect)
70
+ .to include("#<Archangel::Liquid::Drops::SiteDrop")
71
+ expect(resource_drop.inspect)
72
+ .to include("#<Archangel::Site")
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -11,10 +11,6 @@ module Archangel
11
11
  ::Liquid::Context.new({ "site" => site }, {}, view: view)
12
12
  end
13
13
 
14
- def link_to(link_text, *args)
15
- link_to(args.first, link_text)
16
- end
17
-
18
14
  context "#link_to" do
19
15
  let(:link_text) { "Hello world!" }
20
16
 
@@ -7,7 +7,6 @@ module Archangel
7
7
  module Tags
8
8
  RSpec.describe CollectionTag, type: :liquid_tag do
9
9
  let(:site) { create(:site) }
10
-
11
10
  let(:context) do
12
11
  ::Liquid::Context.new({ "site" => site }, {}, view: view)
13
12
  end
@@ -7,7 +7,6 @@ module Archangel
7
7
  module Tags
8
8
  RSpec.describe CollectionforTag, type: :liquid_tag do
9
9
  let(:site) { create(:site) }
10
-
11
10
  let(:context) do
12
11
  ::Liquid::Context.new({ "site" => site }, {}, view: view)
13
12
  end