dead_simple_cms 0.9.0

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 (66) hide show
  1. data/.gitignore +19 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +22 -0
  5. data/README.md +266 -0
  6. data/Rakefile +17 -0
  7. data/dead_simple_cms.gemspec +47 -0
  8. data/lib/dead_simple_cms.rb +132 -0
  9. data/lib/dead_simple_cms/attribute/collection.rb +45 -0
  10. data/lib/dead_simple_cms/attribute/type/all.rb +104 -0
  11. data/lib/dead_simple_cms/attribute/type/base.rb +79 -0
  12. data/lib/dead_simple_cms/attribute/type/collection_support.rb +26 -0
  13. data/lib/dead_simple_cms/configuration.rb +50 -0
  14. data/lib/dead_simple_cms/file_uploader/base.rb +29 -0
  15. data/lib/dead_simple_cms/group.rb +58 -0
  16. data/lib/dead_simple_cms/group/configuration.rb +32 -0
  17. data/lib/dead_simple_cms/group/presenter.rb +23 -0
  18. data/lib/dead_simple_cms/rails/action_controller/extensions.rb +24 -0
  19. data/lib/dead_simple_cms/rails/action_controller/fragment_sweeper.rb +19 -0
  20. data/lib/dead_simple_cms/rails/action_view/extensions.rb +14 -0
  21. data/lib/dead_simple_cms/rails/action_view/form_builders/default.rb +16 -0
  22. data/lib/dead_simple_cms/rails/action_view/form_builders/interface.rb +72 -0
  23. data/lib/dead_simple_cms/rails/action_view/form_builders/simple_form.rb +43 -0
  24. data/lib/dead_simple_cms/rails/action_view/form_builders/simple_form_with_bootstrap.rb +19 -0
  25. data/lib/dead_simple_cms/rails/action_view/presenter.rb +63 -0
  26. data/lib/dead_simple_cms/section.rb +103 -0
  27. data/lib/dead_simple_cms/section/builder.rb +73 -0
  28. data/lib/dead_simple_cms/storage/base.rb +49 -0
  29. data/lib/dead_simple_cms/storage/database.rb +33 -0
  30. data/lib/dead_simple_cms/storage/memory.rb +20 -0
  31. data/lib/dead_simple_cms/storage/rails_cache.rb +19 -0
  32. data/lib/dead_simple_cms/storage/redis.rb +23 -0
  33. data/lib/dead_simple_cms/util/identifier.rb +40 -0
  34. data/lib/dead_simple_cms/util/identifier/dictionary.rb +65 -0
  35. data/lib/dead_simple_cms/version.rb +3 -0
  36. data/spec/dead_simple_cms/attribute/collection_spec.rb +46 -0
  37. data/spec/dead_simple_cms/attribute/type/all_spec.rb +252 -0
  38. data/spec/dead_simple_cms/attribute/type/base_spec.rb +117 -0
  39. data/spec/dead_simple_cms/configuration_spec.rb +117 -0
  40. data/spec/dead_simple_cms/file_uploader/base_spec.rb +35 -0
  41. data/spec/dead_simple_cms/group/configuration_spec.rb +24 -0
  42. data/spec/dead_simple_cms/group/presenter_spec.rb +28 -0
  43. data/spec/dead_simple_cms/group_spec.rb +65 -0
  44. data/spec/dead_simple_cms/rails/action_view/form_builders/default_spec.rb +8 -0
  45. data/spec/dead_simple_cms/rails/action_view/form_builders/simple_form_spec.rb +8 -0
  46. data/spec/dead_simple_cms/rails/action_view/form_builders/simple_form_with_bootstrap_spec.rb +8 -0
  47. data/spec/dead_simple_cms/rails/action_view/fragment_sweeper_spec.rb +22 -0
  48. data/spec/dead_simple_cms/rails/action_view/presenter_spec.rb +54 -0
  49. data/spec/dead_simple_cms/section/builder_spec.rb +28 -0
  50. data/spec/dead_simple_cms/section_spec.rb +78 -0
  51. data/spec/dead_simple_cms/storage/base_spec.rb +59 -0
  52. data/spec/dead_simple_cms/storage/database_spec.rb +51 -0
  53. data/spec/dead_simple_cms/storage/memory_spec.rb +25 -0
  54. data/spec/dead_simple_cms/storage/rails_cache_spec.rb +33 -0
  55. data/spec/dead_simple_cms/storage/redis_spec.rb +33 -0
  56. data/spec/dead_simple_cms/util/identifier/dictionary/duplciate_item_spec.rb +10 -0
  57. data/spec/dead_simple_cms/util/identifier/dictionary/invalid_entry_class_spec.rb +10 -0
  58. data/spec/dead_simple_cms/util/identifier/dictionary_spec.rb +42 -0
  59. data/spec/dead_simple_cms/util/identifier_spec.rb +27 -0
  60. data/spec/setup.rb +26 -0
  61. data/spec/setup/banner_presenter.rb +19 -0
  62. data/spec/setup/rspec_template_builder.rb +104 -0
  63. data/spec/setup/shared.rb +57 -0
  64. data/spec/setup/test_file_uploader.rb +12 -0
  65. data/spec/spec_helper.rb +48 -0
  66. metadata +221 -0
data/spec/setup.rb ADDED
@@ -0,0 +1,26 @@
1
+ require File.expand_path('../setup/test_file_uploader', __FILE__)
2
+ require File.expand_path('../setup/banner_presenter', __FILE__)
3
+ require File.expand_path('../setup/shared', __FILE__)
4
+
5
+
6
+ DeadSimpleCMS.configure do
7
+
8
+ default_form_builder :default
9
+
10
+ file_uploader_class DeadSimpleCMS::TestFileUploader
11
+
12
+ storage_class :database
13
+
14
+ group_configuration(:image_tag) do
15
+ image :url, :required => true
16
+ string :alt, :default => "Design Beautiful Books"
17
+ string :href, :hint => "Here is the hint.", :required => true
18
+
19
+ display do |group, html_options, image_html_options|
20
+ (image_html_options ||= {}).reverse_merge!(:alt => group.alt)
21
+ image_html_options[:alt] = image_alt_for_seo(image_html_options[:alt]) if image_html_options[:alt]
22
+ link_to_if(group.href, image_tag(group.url, image_html_options), group.href, html_options)
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,19 @@
1
+ module DeadSimpleCMS
2
+ class BannerPresenter < DeadSimpleCMS::Group::Presenter
3
+
4
+ attr_reader :coupon, :options, :size
5
+
6
+ def render
7
+ link_to_if(group.href, image_tag(group.url, :alt => group.alt), group.href) if group.show
8
+ end
9
+
10
+ private
11
+
12
+ def initialize_extra_arguments(coupon, options={})
13
+ @coupon, @options = coupon, options
14
+ @size = options.delete(:size) || :small # Currently we have two sizes for these banners: 715x85 and 890x123. - Aryk
15
+ raise("Invalid size: #{size}") unless [:small, :large].include?(size)
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,104 @@
1
+ require 'rspec'
2
+ require 'spec_helper'
3
+ require 'active_support'
4
+ require 'fileutils'
5
+
6
+ # A little helper I created to make it easier to build the rspec template files for all the classes within a namespace.
7
+ module RSpec
8
+
9
+ def self.build_templates(*classes)
10
+ options = classes.extract_options!
11
+
12
+ classes.each do |klass|
13
+ filename = "spec/#{klass.to_s.underscore}_spec.rb"
14
+ if File.exists?(filename)
15
+ puts "#{filename} already exists. Overwrite it? y/n"
16
+ next unless %w{y yes}.include?(gets.strip.downcase)
17
+ end
18
+
19
+ FileUtils.mkdir_p(File.dirname(filename))
20
+ File.open(filename, 'w+') { |f| TemplateBuilder.new(klass, f).build! }
21
+ end
22
+ end
23
+
24
+ def self.build_templates_from_namespace(*namespaces)
25
+ build_templates(*namespaces.map { |namespace| classes_from_namespace(namespace) }.flatten)
26
+ end
27
+
28
+
29
+ def self.classes_from_namespace(namespace, arr=[], original_namespace=nil)
30
+ original_namespace ||= namespace
31
+
32
+ namespace.constants.map(&namespace.method(:const_get)).each do |constant|
33
+ next if arr.include?(constant) || !constant.to_s.starts_with?(original_namespace.to_s)
34
+ arr << constant if constant.is_a?(Class)
35
+ classes_from_namespace(constant, arr, original_namespace) if constant.is_a?(Class) || constant.is_a?(Module)
36
+ end
37
+ arr
38
+ end
39
+
40
+ class TemplateBuilder
41
+
42
+ INDENT = " "
43
+
44
+ attr_reader :current_indent, :klass
45
+
46
+ def initialize(klass, target = "")
47
+ @klass = klass
48
+ @target = target
49
+ @current_indent = ""
50
+ end
51
+
52
+ def parse_file
53
+ FileParse.new(filename)
54
+ end
55
+
56
+ def build!
57
+ require_files
58
+ describe(klass) do
59
+ before_each do
60
+
61
+ end
62
+ klass.methods(false).each do |method_name| # class methods
63
+ describe(%{".#{method_name}"})
64
+ end
65
+ klass.instance_methods(false).each do |method_name| # instance methods
66
+ describe(%{"##{method_name}"})
67
+ end
68
+ end
69
+ end
70
+
71
+ def require_files
72
+ w %{require "spec_helper"}, nil
73
+ end
74
+
75
+ def indent
76
+ @current_indent << INDENT
77
+ yield
78
+ ensure
79
+ @current_indent.gsub!(/^#{INDENT}/, '')
80
+ end
81
+
82
+ def before_each
83
+ w "before(:each) do", nil, "end", nil
84
+ end
85
+
86
+ def describe(what, &block)
87
+ w "describe #{what} do", nil
88
+ indent(&block) if block_given?
89
+ w "end", nil
90
+ end
91
+
92
+ # If nothing is passed in, will add one empty line.
93
+ def write_lines(*strings)
94
+ strings = [""] if strings.empty?
95
+ strings.each do |s|
96
+ line = "#{current_indent}#{s}"
97
+ line = "" if line.empty?
98
+ @target << "#{line}\n"
99
+ end
100
+ end
101
+ alias w write_lines
102
+
103
+ end
104
+ end
@@ -0,0 +1,57 @@
1
+ shared_context :sample_section do
2
+
3
+ let(:section) do
4
+ # Site announcement is an example of a potential use case. It leverages a lot of the functionality of the
5
+ # library, hence why we are teting against it.
6
+ DeadSimpleCMS::Section.new(:site_announcement, :path => "/") do
7
+ boolean :show_default, :default => false
8
+ string :coupon_code
9
+ group(:top_bar) do
10
+ string :css_class, :collection => %w{facebook default christmas green}, :default => "facebook"
11
+ string :strong, :default => "FREE Priority Shipping on Orders $50+"
12
+ string :normal
13
+ string :action
14
+ string :href
15
+ end
16
+ group(:banners) do
17
+ [[:small, 715, 85], [:large, 890, 123]].each do |size, width, height|
18
+ group size => :image_tag, :width => width, :height => height do
19
+ boolean :show
20
+ string :promotional_href, :hint => "Used for all custom coupon banners not from the site announcement."
21
+ display DeadSimpleCMS::BannerPresenter
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ end
29
+ shared_context :sample_storage do
30
+ include_context :sample_section
31
+
32
+ let(:attributes_hash) { subject.send(:attributes_hash) }
33
+ let(:attributes_hash_dump) { Psych.dump(attributes_hash) }
34
+
35
+ subject { described_class.new(section).tap { |x| x.serializer_class = Psych } }
36
+ end
37
+
38
+ shared_examples :group_display do
39
+
40
+ describe "#display" do
41
+ context "when presenter_class is set" do
42
+ it "should set the @presenter_class variable" do
43
+ subject.display :presenter_class
44
+ subject.instance_variable_get(:@presenter_class).should == :presenter_class
45
+ end
46
+ end
47
+
48
+ context "when block provided" do
49
+ it "should set it to the @render_proc" do
50
+ proc = lambda { "do something" }
51
+ subject.display(&proc)
52
+ subject.instance_variable_get(:@render_proc).should == proc
53
+ end
54
+ end
55
+ end
56
+
57
+ end
@@ -0,0 +1,12 @@
1
+ module DeadSimpleCMS
2
+ class TestFileUploader < DeadSimpleCMS::FileUploader::Base
3
+
4
+ def url
5
+ "http://2.bp.blogspot.com/-dUJdeS8yFnA/T5aMQVCYNPI/AAAAAAAAAX0/mAK2oQIbVq4/s1600/funny+cat+ninja.jpg"
6
+ end
7
+
8
+ def upload!
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,48 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper.rb"` to ensure that it is only
4
+ # loaded once.
5
+
6
+ require 'rubygems'
7
+ require 'bundler/setup'
8
+
9
+ require 'rails/all'
10
+ require 'simple_form'
11
+
12
+ require 'dead_simple_cms'
13
+ require File.expand_path('../setup', __FILE__)
14
+
15
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
16
+ RSpec.configure do |config|
17
+ config.treat_symbols_as_metadata_keys_with_true_values = true
18
+ config.run_all_when_everything_filtered = true
19
+ config.filter_run :focus
20
+ end
21
+
22
+ # Datbase setup.
23
+ require 'sqlite3'
24
+ ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: "dead_simple_cms.sqlite3")
25
+ ActiveRecord::Base.silence do
26
+ ActiveRecord::Migration.verbose = false
27
+ ActiveRecord::Schema.define :version => 0 do
28
+ create_table :dead_simple_cms, :force => true do |t|
29
+ t.string :key
30
+ t.text :value
31
+ t.timestamps
32
+ end
33
+ add_index :dead_simple_cms, :key, :unique => true
34
+ end
35
+ end
36
+
37
+ #RSpec::Matchers.define :have_only_tag_values do |expected|
38
+ # match do |actual|
39
+ # actual = actual.tags if actual.class.respond_to?(:taggable?) && actual.class.taggable?
40
+ # same_elements?(actual.map(&:value), expected)
41
+ # end
42
+ #end
43
+ #
44
+ #RSpec::Matchers.define :have_same_elements do |expected|
45
+ # match do |actual|
46
+ # same_elements?(actual, expected)
47
+ # end
48
+ #end
metadata ADDED
@@ -0,0 +1,221 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dead_simple_cms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Aryk Grosz
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-24 00:00:00.000000000 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: &2156091300 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '3.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2156091300
26
+ - !ruby/object:Gem::Dependency
27
+ name: activemodel
28
+ requirement: &2156090500 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *2156090500
37
+ - !ruby/object:Gem::Dependency
38
+ name: simple_form
39
+ requirement: &2156089880 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *2156089880
48
+ - !ruby/object:Gem::Dependency
49
+ name: rails
50
+ requirement: &2156088660 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '3.0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *2156088660
59
+ - !ruby/object:Gem::Dependency
60
+ name: rspec
61
+ requirement: &2156087880 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *2156087880
70
+ - !ruby/object:Gem::Dependency
71
+ name: sqlite3
72
+ requirement: &2156087300 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *2156087300
81
+ description: ! "Dead Simple CMS is a library for modifying different parts of your
82
+ website without the overhead of having a\nfullblown CMS. The idea with this library
83
+ is simple: provide an easy way to hook into different parts of your\napplication
84
+ (not only views) by defining the different parts to modify in an easy, straight-forward
85
+ DSL.\n\nThe basic components of this library include:\n\n * A DSL to define the
86
+ changeable values in your app\n * Form generators based on SimpleForm (with or without
87
+ Bootstrap) and default rails FormBuilder\n * Expandable storage mechanisms so you
88
+ can store the data in different locations\n * Currently supported: Redis, Database,
89
+ Memcache, even Memory (for testing)\n * Presenters/renderers so you can take groups
90
+ of variables and render them into your views (ie image_tag)\n\nWhat it doesn't have:\n\n
91
+ * Versioning - be able to look at old versions of the content\n * Timing - set start
92
+ and end time for different content\n * Page builder tools - this is not the right
93
+ tool if you want to design full pages\n"
94
+ email:
95
+ - aryk@mixbook.com
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files: []
99
+ files:
100
+ - .gitignore
101
+ - .rspec
102
+ - Gemfile
103
+ - LICENSE
104
+ - README.md
105
+ - Rakefile
106
+ - dead_simple_cms.gemspec
107
+ - lib/dead_simple_cms.rb
108
+ - lib/dead_simple_cms/attribute/collection.rb
109
+ - lib/dead_simple_cms/attribute/type/all.rb
110
+ - lib/dead_simple_cms/attribute/type/base.rb
111
+ - lib/dead_simple_cms/attribute/type/collection_support.rb
112
+ - lib/dead_simple_cms/configuration.rb
113
+ - lib/dead_simple_cms/file_uploader/base.rb
114
+ - lib/dead_simple_cms/group.rb
115
+ - lib/dead_simple_cms/group/configuration.rb
116
+ - lib/dead_simple_cms/group/presenter.rb
117
+ - lib/dead_simple_cms/rails/action_controller/extensions.rb
118
+ - lib/dead_simple_cms/rails/action_controller/fragment_sweeper.rb
119
+ - lib/dead_simple_cms/rails/action_view/extensions.rb
120
+ - lib/dead_simple_cms/rails/action_view/form_builders/default.rb
121
+ - lib/dead_simple_cms/rails/action_view/form_builders/interface.rb
122
+ - lib/dead_simple_cms/rails/action_view/form_builders/simple_form.rb
123
+ - lib/dead_simple_cms/rails/action_view/form_builders/simple_form_with_bootstrap.rb
124
+ - lib/dead_simple_cms/rails/action_view/presenter.rb
125
+ - lib/dead_simple_cms/section.rb
126
+ - lib/dead_simple_cms/section/builder.rb
127
+ - lib/dead_simple_cms/storage/base.rb
128
+ - lib/dead_simple_cms/storage/database.rb
129
+ - lib/dead_simple_cms/storage/memory.rb
130
+ - lib/dead_simple_cms/storage/rails_cache.rb
131
+ - lib/dead_simple_cms/storage/redis.rb
132
+ - lib/dead_simple_cms/util/identifier.rb
133
+ - lib/dead_simple_cms/util/identifier/dictionary.rb
134
+ - lib/dead_simple_cms/version.rb
135
+ - spec/dead_simple_cms/attribute/collection_spec.rb
136
+ - spec/dead_simple_cms/attribute/type/all_spec.rb
137
+ - spec/dead_simple_cms/attribute/type/base_spec.rb
138
+ - spec/dead_simple_cms/configuration_spec.rb
139
+ - spec/dead_simple_cms/file_uploader/base_spec.rb
140
+ - spec/dead_simple_cms/group/configuration_spec.rb
141
+ - spec/dead_simple_cms/group/presenter_spec.rb
142
+ - spec/dead_simple_cms/group_spec.rb
143
+ - spec/dead_simple_cms/rails/action_view/form_builders/default_spec.rb
144
+ - spec/dead_simple_cms/rails/action_view/form_builders/simple_form_spec.rb
145
+ - spec/dead_simple_cms/rails/action_view/form_builders/simple_form_with_bootstrap_spec.rb
146
+ - spec/dead_simple_cms/rails/action_view/fragment_sweeper_spec.rb
147
+ - spec/dead_simple_cms/rails/action_view/presenter_spec.rb
148
+ - spec/dead_simple_cms/section/builder_spec.rb
149
+ - spec/dead_simple_cms/section_spec.rb
150
+ - spec/dead_simple_cms/storage/base_spec.rb
151
+ - spec/dead_simple_cms/storage/database_spec.rb
152
+ - spec/dead_simple_cms/storage/memory_spec.rb
153
+ - spec/dead_simple_cms/storage/rails_cache_spec.rb
154
+ - spec/dead_simple_cms/storage/redis_spec.rb
155
+ - spec/dead_simple_cms/util/identifier/dictionary/duplciate_item_spec.rb
156
+ - spec/dead_simple_cms/util/identifier/dictionary/invalid_entry_class_spec.rb
157
+ - spec/dead_simple_cms/util/identifier/dictionary_spec.rb
158
+ - spec/dead_simple_cms/util/identifier_spec.rb
159
+ - spec/setup.rb
160
+ - spec/setup/banner_presenter.rb
161
+ - spec/setup/rspec_template_builder.rb
162
+ - spec/setup/shared.rb
163
+ - spec/setup/test_file_uploader.rb
164
+ - spec/spec_helper.rb
165
+ has_rdoc: true
166
+ homepage: http://github.com/Aryk/dead_simple_cms
167
+ licenses: []
168
+ post_install_message:
169
+ rdoc_options: []
170
+ require_paths:
171
+ - lib
172
+ required_ruby_version: !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ! '>='
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ! '>='
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ requirements: []
185
+ rubyforge_project:
186
+ rubygems_version: 1.6.2
187
+ signing_key:
188
+ specification_version: 3
189
+ summary: DeadSimpleCMS provides a way to define, modify, and present custom variables
190
+ and content in your application.
191
+ test_files:
192
+ - spec/dead_simple_cms/attribute/collection_spec.rb
193
+ - spec/dead_simple_cms/attribute/type/all_spec.rb
194
+ - spec/dead_simple_cms/attribute/type/base_spec.rb
195
+ - spec/dead_simple_cms/configuration_spec.rb
196
+ - spec/dead_simple_cms/file_uploader/base_spec.rb
197
+ - spec/dead_simple_cms/group/configuration_spec.rb
198
+ - spec/dead_simple_cms/group/presenter_spec.rb
199
+ - spec/dead_simple_cms/group_spec.rb
200
+ - spec/dead_simple_cms/rails/action_view/form_builders/default_spec.rb
201
+ - spec/dead_simple_cms/rails/action_view/form_builders/simple_form_spec.rb
202
+ - spec/dead_simple_cms/rails/action_view/form_builders/simple_form_with_bootstrap_spec.rb
203
+ - spec/dead_simple_cms/rails/action_view/fragment_sweeper_spec.rb
204
+ - spec/dead_simple_cms/rails/action_view/presenter_spec.rb
205
+ - spec/dead_simple_cms/section/builder_spec.rb
206
+ - spec/dead_simple_cms/section_spec.rb
207
+ - spec/dead_simple_cms/storage/base_spec.rb
208
+ - spec/dead_simple_cms/storage/database_spec.rb
209
+ - spec/dead_simple_cms/storage/memory_spec.rb
210
+ - spec/dead_simple_cms/storage/rails_cache_spec.rb
211
+ - spec/dead_simple_cms/storage/redis_spec.rb
212
+ - spec/dead_simple_cms/util/identifier/dictionary/duplciate_item_spec.rb
213
+ - spec/dead_simple_cms/util/identifier/dictionary/invalid_entry_class_spec.rb
214
+ - spec/dead_simple_cms/util/identifier/dictionary_spec.rb
215
+ - spec/dead_simple_cms/util/identifier_spec.rb
216
+ - spec/setup/banner_presenter.rb
217
+ - spec/setup/rspec_template_builder.rb
218
+ - spec/setup/shared.rb
219
+ - spec/setup/test_file_uploader.rb
220
+ - spec/setup.rb
221
+ - spec/spec_helper.rb