archangel 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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