minimart 1.1.3 → 1.1.6

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTlhN2I5YzFkZWJmZGQwNTgxMjZlYzdlNDZkNjRhMDk4NTVmMjdlYQ==
4
+ MjlkNTAzOTQ2YjM4YzNjNGQwNTE0NmE1NTY3MzMzZjlmYTdiZWJmOQ==
5
5
  data.tar.gz: !binary |-
6
- OWY3MzQ4ZDk5MTdlMjM0ZGRmZTNiZGFhYmI5MzIzZGVhMTA3NTdlYw==
6
+ NzE5OTFlZDI3MjdkZmU2OGRlNjczZDZhN2YxNWQ0ZTYzNzk2ZDI5MQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZGMyYzAzZTUyZDA3ZGRlNTZkNjZkZDc2YzAxNzAyYTNiYmU3NDIyZmI5MWEx
10
- NGM3ZjcxNWE5ZmRjOTE2YjEzOWYyZjU1NTAyYjUxNWJmMzI3ZjJlN2ViZmRj
11
- ZDI0ZWQ3YjA2NzZkMzk0Nzk3NDQxYWMyMTJmZDcxYmEwZGZjNDk=
9
+ ZmIzZGQ0YzA4MWI2MTQxMGZhMDk2NjMzMjk1YzgxMTE5NDAyMDk2OGRiMDVm
10
+ Y2IzNWExN2Q5ZTJlYzY3YjU2MTE5ZWNkM2VlMDVjOGJjMDAyYmEzZTI4N2Mw
11
+ OTZhYWI0NDQzMmRjM2FlYWQ2ZjVkYWZmOTlhYjlmYzNkYTg2NzE=
12
12
  data.tar.gz: !binary |-
13
- ZTI3MGY1MDk2NWQ5MDJiNDI0MWI1YmM1NjQzODU3YjA2YjkyZGJkNmYzNzZk
14
- NTRlNjM3YTcxMDk0ZjEzZDM4YzYwMDkzNDMyNDljNWFjYmE3NTYxM2Y2NmRm
15
- NTRjODllOGJlNWQ5NTQ3OGJiMTMzZmIzMzE3OGYwNzZhNzNhMWY=
13
+ NjQ3ODcxNjY0Y2EwOWIwYjNhNTgwMGNiOThlMjE1NWVjMDQ5OGU3ODhjZGEz
14
+ ZjZhNDg5MTY3YTU1YzQzNWQxNDNlMzM5ZmI5OGVlMDcyOTQwZThlN2ZiZjRh
15
+ YTY5YjY1NzZiNWFiZmQyODU3ZWQyODBmNDFkM2VjZTZjMTRmYmQ=
data/.travis.yml CHANGED
@@ -3,6 +3,9 @@ cache: bundler
3
3
  rvm:
4
4
  - 2.2.3
5
5
  - 2.1.7
6
+ notifications:
7
+ flowdock:
8
+ secure: s2EpKpFFZJL51GChkIM/B8CpoiAvj56aYp7iSfKcD5aZvdBRssXXt9i3t39TA/hD8NkWfM07eVbhL3tGAv2GcXhTOlXZSoljzGdzFdGROZZd4asd1pLK8VuJTQrEKPDfKp/+XsIfbfOrTFf19qhBAfk5A0TRUXVMITiMkVIo1D4=
6
9
  deploy:
7
10
  provider: rubygems
8
11
  api_key:
@@ -19,7 +19,7 @@ module Minimart
19
19
  new (Ridley::Chef::Cookbook.from_path(path))
20
20
  end
21
21
 
22
- # @param [Ridley::Chef::Cookbok] raw_cookbook
22
+ # @param [Ridley::Chef::Cookbook] raw_cookbook
23
23
  def initialize(raw_cookbook)
24
24
  @raw_cookbook = raw_cookbook
25
25
  end
@@ -54,6 +54,18 @@ module Minimart
54
54
  metadata.maintainer
55
55
  end
56
56
 
57
+ # Get the source url of the cookbook
58
+ # @return [String]
59
+ def source_url
60
+ metadata.source_url
61
+ end
62
+
63
+ # Get the issues url of the cookbook
64
+ # @return [String]
65
+ def issues_url
66
+ metadata.issues_url
67
+ end
68
+
57
69
  # Get the path to the cookbook on the file system
58
70
  # @return [String]
59
71
  def path
@@ -112,7 +124,9 @@ module Minimart
112
124
  url: cookbook_path(self),
113
125
  downloaded_at: downloaded_at,
114
126
  download_date: download_date,
115
- platforms: normalized_platforms
127
+ platforms: normalized_platforms,
128
+ source_url: source_url,
129
+ issues_url: issues_url
116
130
  }
117
131
  end
118
132
 
@@ -1,3 +1,4 @@
1
+ require 'ridley'
1
2
  module Minimart
2
3
  module Mirror
3
4
 
@@ -33,10 +34,16 @@ module Minimart
33
34
  # precedence over information found elsewhere.
34
35
  def install_cookbooks_with_explicit_location
35
36
  inventory_requirements.each_with_explicit_location do |requirement|
36
- requirement.fetch_cookbook do |cookbook|
37
- validate_cookbook_against_local_store(cookbook, requirement)
38
- add_artifact_to_graph(cookbook)
39
- add_cookbook_to_local_store(cookbook.path, requirement.to_hash)
37
+ begin
38
+ requirement.fetch_cookbook do |cookbook|
39
+ validate_cookbook_against_local_store(cookbook, requirement)
40
+ add_artifact_to_graph(cookbook)
41
+ add_cookbook_to_local_store(cookbook.path, requirement.to_hash)
42
+ end
43
+ rescue Ridley::Errors::MissingNameAttribute
44
+ #handle Ridley::Errors::MissingNameAttribute and other cookbook specific errors by ignoring them.
45
+ #hopefuly the next version will be valid. eg. https://git.corp.adobe.com/EchoSignCommunity/apt/blob/1.5.0/metadata.rb
46
+ next
40
47
  end
41
48
  end
42
49
  end
@@ -1,3 +1,3 @@
1
1
  module Minimart
2
- VERSION = "1.1.3"
2
+ VERSION = "1.1.6"
3
3
  end
@@ -1,3 +1,7 @@
1
+ require 'sprockets'
2
+ require 'sass'
3
+ require 'uglifier'
4
+
1
5
  require 'minimart/web/dashboard_generator'
2
6
  require 'minimart/web/cookbook_show_page_generator'
3
7
 
@@ -8,11 +12,7 @@ module Minimart
8
12
  class HtmlGenerator
9
13
  include Minimart::Web::TemplateHelper
10
14
 
11
- # @return [String] the directory to put any generated HTML in
12
- attr_reader :web_directory
13
-
14
- # @return [Minimart::Web::Cookbooks] the set of cookbooks to generate HTML for
15
- attr_reader :cookbooks
15
+ attr_reader :web_directory, :cookbooks
16
16
 
17
17
  # @param [Hash] opts
18
18
  # @option opts [String] :web_directory The directory to put any generated HTML in
@@ -24,15 +24,39 @@ module Minimart
24
24
 
25
25
  # Generate any HTML!
26
26
  def generate
27
- copy_assets
27
+ generate_assets
28
28
  generate_index
29
29
  generate_cookbook_show_pages
30
30
  end
31
31
 
32
32
  private
33
33
 
34
+ def generate_assets
35
+ generate_js
36
+ generate_css
37
+ copy_assets
38
+ end
39
+
34
40
  def copy_assets
35
- FileUtils.cp_r(File.join(minimart_web_directory, 'assets'), web_directory)
41
+ FileUtils.cp_r(compiled_asset_directory, web_directory)
42
+ end
43
+
44
+ def generate_js
45
+ js_dir = Pathname.new(compiled_asset_directory).join('javascripts')
46
+ FileUtils.mkdir_p(js_dir)
47
+ sprockets = Sprockets::Environment.new(minimart_root_directory)
48
+ sprockets.js_compressor = :uglify
49
+ sprockets.append_path(Pathname.new(raw_asset_directory).join('javascripts'))
50
+ sprockets['manifest.js'].write_to(js_dir.join('application.min.js'))
51
+ end
52
+
53
+ def generate_css
54
+ css_dir = Pathname.new(compiled_asset_directory).join('stylesheets')
55
+ FileUtils.mkdir_p(css_dir)
56
+ sprockets = Sprockets::Environment.new(minimart_root_directory)
57
+ sprockets.css_compressor = :sass
58
+ sprockets.append_path(Pathname.new(raw_asset_directory).join('stylesheets'))
59
+ sprockets['manifest.css'].write_to(css_dir.join('application.min.css'))
36
60
  end
37
61
 
38
62
  def generate_index
@@ -39,7 +39,19 @@ module Minimart
39
39
 
40
40
  # @return [String] The path to the Minimart web directory
41
41
  def minimart_web_directory
42
- File.join(Minimart.root_path, '..', 'web')
42
+ File.join(minimart_root_directory, '..', 'web')
43
+ end
44
+
45
+ def minimart_root_directory
46
+ Minimart.root_path
47
+ end
48
+
49
+ def raw_asset_directory
50
+ File.join(minimart_web_directory, '_assets')
51
+ end
52
+
53
+ def compiled_asset_directory
54
+ File.join(minimart_web_directory, 'assets')
43
55
  end
44
56
 
45
57
  # Get the path for a web asset (CSS, JS, etc...)
data/minimart.gemspec CHANGED
@@ -8,24 +8,29 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Minimart::VERSION
9
9
  spec.summary = %q{MiniMart is a RubyGem that makes it simple to build a repository of Chef cookbooks using only static files.}
10
10
  spec.description = %q{MiniMart is a RubyGem that makes it simple to build a repository of Chef cookbooks using only static files.}
11
- spec.authors = 'MadGlory'
11
+ spec.authors = ['MadGlory', 'Todd Pickell', 'Others']
12
12
  spec.homepage = 'http://electric-it.github.io/minimart/'
13
13
  spec.license = 'Apache License, v2.0'
14
14
 
15
+ spec.required_ruby_version = ['~> 2.1', '~> 2.2']
16
+
15
17
  spec.files = `git ls-files -z`.split("\x0")
16
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
20
  spec.require_paths = ['lib']
19
21
 
20
- spec.add_dependency 'git', '~> 1.2.6'
22
+ spec.add_dependency 'git', '~> 1.2', '>= 1.2.6'
21
23
  spec.add_dependency 'minitar', '~> 0.5'
22
- spec.add_dependency 'octokit', '~> 3.7.0'
23
- spec.add_dependency 'redcarpet', '~> 3.2'
24
+ spec.add_dependency 'octokit', '~> 3.7'
25
+ spec.add_dependency 'redcarpet', '= 3.3.2'
24
26
  spec.add_dependency 'rest-client', '~> 1.7'
25
27
  spec.add_dependency 'ridley', '~> 4.1'
26
- spec.add_dependency 'solve', '~> 1.2.1'
28
+ spec.add_dependency 'solve', '~> 1.2', '>= 1.2.1'
27
29
  spec.add_dependency 'thor', '~> 0.19'
28
30
  spec.add_dependency 'tilt', '~> 2.0'
31
+ spec.add_dependency 'sprockets', '~> 3.5'
32
+ spec.add_dependency 'uglifier', '~> 2.7'
33
+ spec.add_dependency 'sass', '~> 3.4'
29
34
 
30
35
  spec.add_development_dependency 'bundler', '~> 1.7'
31
36
  spec.add_development_dependency 'rake', '~> 10.3'
@@ -0,0 +1,5 @@
1
+ sources:
2
+ - "https://supermarket.getchef.com"
3
+ cookbooks:
4
+ bad_metadata_cookbook:
5
+ path: spec/invalid/bad_metadata_cookbook
@@ -5,5 +5,7 @@ license 'All rights reserved'
5
5
  description 'Installs/Configures sample_cookbook'
6
6
  long_description 'Installs/Configures sample_cookbook'
7
7
  version '1.2.3'
8
+ source_url 'https://github.com/electric-it/minimart'
9
+ issues_url 'https://github.com/electric-it/minimart/issues'
8
10
 
9
11
  depends 'yum', '> 3.0.0'
@@ -0,0 +1,3 @@
1
+ source "https://supermarket.getchef.com"
2
+
3
+ metadata
@@ -0,0 +1,3 @@
1
+ # 0.1.0
2
+
3
+ Initial release of sample_cookbook
@@ -0,0 +1,16 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'berkshelf'
4
+
5
+ # Uncomment these lines if you want to live on the Edge:
6
+ #
7
+ # group :development do
8
+ # gem "berkshelf", github: "berkshelf/berkshelf"
9
+ # gem "vagrant", github: "mitchellh/vagrant", tag: "v1.6.3"
10
+ # end
11
+ #
12
+ # group :plugins do
13
+ # gem "vagrant-berkshelf", github: "berkshelf/vagrant-berkshelf"
14
+ # gem "vagrant-omnibus", github: "schisamo/vagrant-omnibus"
15
+ # end
16
+
@@ -0,0 +1,3 @@
1
+ Copyright (C) 2014 YOUR_NAME
2
+
3
+ All rights reserved - Do Not Redistribute
@@ -0,0 +1,42 @@
1
+ # sample_cookbook-cookbook
2
+
3
+ TODO: Enter the cookbook description here.
4
+
5
+ ## Supported Platforms
6
+
7
+ TODO: List your supported platforms.
8
+
9
+ ## Attributes
10
+
11
+ <table>
12
+ <tr>
13
+ <th>Key</th>
14
+ <th>Type</th>
15
+ <th>Description</th>
16
+ <th>Default</th>
17
+ </tr>
18
+ <tr>
19
+ <td><tt>['sample_cookbook']['bacon']</tt></td>
20
+ <td>Boolean</td>
21
+ <td>whether to include bacon</td>
22
+ <td><tt>true</tt></td>
23
+ </tr>
24
+ </table>
25
+
26
+ ## Usage
27
+
28
+ ### sample_cookbook::default
29
+
30
+ Include `sample_cookbook` in your node's `run_list`:
31
+
32
+ ```json
33
+ {
34
+ "run_list": [
35
+ "recipe[sample_cookbook::default]"
36
+ ]
37
+ }
38
+ ```
39
+
40
+ ## License and Authors
41
+
42
+ Author:: YOUR_NAME (<YOUR_EMAIL>)
@@ -0,0 +1,5 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bundler'
4
+ require 'bundler/setup'
5
+ require 'berkshelf/thor'
@@ -0,0 +1,90 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
5
+ VAGRANTFILE_API_VERSION = '2'
6
+
7
+ Vagrant.require_version '>= 1.5.0'
8
+
9
+ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
10
+ # All Vagrant configuration is done here. The most common configuration
11
+ # options are documented and commented below. For a complete reference,
12
+ # please see the online documentation at vagrantup.com.
13
+
14
+ config.vm.hostname = 'sample-cookbook-berkshelf'
15
+
16
+ # Set the version of chef to install using the vagrant-omnibus plugin
17
+ # NOTE: You will need to install the vagrant-omnibus plugin:
18
+ #
19
+ # $ vagrant plugin install vagrant-omnibus
20
+ #
21
+ if Vagrant.has_plugin?
22
+ config.omnibus.chef_version = 'latest'
23
+ end
24
+
25
+ # Every Vagrant virtual environment requires a box to build off of.
26
+ # If this value is a shorthand to a box in Vagrant Cloud then
27
+ # config.vm.box_url doesn't need to be specified.
28
+ config.vm.box = 'chef/ubuntu-14.04'
29
+
30
+
31
+ # Assign this VM to a host-only network IP, allowing you to access it
32
+ # via the IP. Host-only networks can talk to the host machine as well as
33
+ # any other machines on the same network, but cannot be accessed (through this
34
+ # network interface) by any external networks.
35
+ config.vm.network :private_network, type: 'dhcp'
36
+
37
+ # Create a forwarded port mapping which allows access to a specific port
38
+ # within the machine from a port on the host machine. In the example below,
39
+ # accessing "localhost:8080" will access port 80 on the guest machine.
40
+
41
+ # Share an additional folder to the guest VM. The first argument is
42
+ # the path on the host to the actual folder. The second argument is
43
+ # the path on the guest to mount the folder. And the optional third
44
+ # argument is a set of non-required options.
45
+ # config.vm.synced_folder "../data", "/vagrant_data"
46
+
47
+ # Provider-specific configuration so you can fine-tune various
48
+ # backing providers for Vagrant. These expose provider-specific options.
49
+ # Example for VirtualBox:
50
+ #
51
+ # config.vm.provider :virtualbox do |vb|
52
+ # # Don't boot with headless mode
53
+ # vb.gui = true
54
+ #
55
+ # # Use VBoxManage to customize the VM. For example to change memory:
56
+ # vb.customize ["modifyvm", :id, "--memory", "1024"]
57
+ # end
58
+ #
59
+ # View the documentation for the provider you're using for more
60
+ # information on available options.
61
+
62
+ # The path to the Berksfile to use with Vagrant Berkshelf
63
+ # config.berkshelf.berksfile_path = "./Berksfile"
64
+
65
+ # Enabling the Berkshelf plugin. To enable this globally, add this configuration
66
+ # option to your ~/.vagrant.d/Vagrantfile file
67
+ config.berkshelf.enabled = true
68
+
69
+ # An array of symbols representing groups of cookbook described in the Vagrantfile
70
+ # to exclusively install and copy to Vagrant's shelf.
71
+ # config.berkshelf.only = []
72
+
73
+ # An array of symbols representing groups of cookbook described in the Vagrantfile
74
+ # to skip installing and copying to Vagrant's shelf.
75
+ # config.berkshelf.except = []
76
+
77
+ config.vm.provision :chef_solo do |chef|
78
+ chef.json = {
79
+ mysql: {
80
+ server_root_password: 'rootpass',
81
+ server_debian_password: 'debpass',
82
+ server_repl_password: 'replpass'
83
+ }
84
+ }
85
+
86
+ chef.run_list = [
87
+ 'recipe[sample_cookbook::default]'
88
+ ]
89
+ end
90
+ end
@@ -0,0 +1,94 @@
1
+ # Put files/directories that should be ignored in this file when uploading
2
+ # or sharing to the community site.
3
+ # Lines that start with '# ' are comments.
4
+
5
+ # OS generated files #
6
+ ######################
7
+ .DS_Store
8
+ Icon?
9
+ nohup.out
10
+ ehthumbs.db
11
+ Thumbs.db
12
+
13
+ # SASS #
14
+ ########
15
+ .sass-cache
16
+
17
+ # EDITORS #
18
+ ###########
19
+ \#*
20
+ .#*
21
+ *~
22
+ *.sw[a-z]
23
+ *.bak
24
+ REVISION
25
+ TAGS*
26
+ tmtags
27
+ *_flymake.*
28
+ *_flymake
29
+ *.tmproj
30
+ .project
31
+ .settings
32
+ mkmf.log
33
+
34
+ ## COMPILED ##
35
+ ##############
36
+ a.out
37
+ *.o
38
+ *.pyc
39
+ *.so
40
+ *.com
41
+ *.class
42
+ *.dll
43
+ *.exe
44
+ */rdoc/
45
+
46
+ # Testing #
47
+ ###########
48
+ .watchr
49
+ .rspec
50
+ spec/*
51
+ spec/fixtures/*
52
+ test/*
53
+ features/*
54
+ Guardfile
55
+ Procfile
56
+
57
+ # SCM #
58
+ #######
59
+ .git
60
+ */.git
61
+ .gitignore
62
+ .gitmodules
63
+ .gitconfig
64
+ .gitattributes
65
+ .svn
66
+ */.bzr/*
67
+ */.hg/*
68
+ */.svn/*
69
+
70
+ # Berkshelf #
71
+ #############
72
+ cookbooks/*
73
+ tmp
74
+
75
+ # Cookbooks #
76
+ #############
77
+ CONTRIBUTING
78
+ CHANGELOG*
79
+
80
+ # Strainer #
81
+ ############
82
+ Colanderfile
83
+ Strainerfile
84
+ .colander
85
+ .strainer
86
+
87
+ # Vagrant #
88
+ ###########
89
+ .vagrant
90
+ Vagrantfile
91
+
92
+ # Travis #
93
+ ##########
94
+ .travis.yml
@@ -0,0 +1,10 @@
1
+ maintainer 'MadGlory'
2
+ maintainer_email 'YOUR_EMAIL'
3
+ license 'All rights reserved'
4
+ description 'Installs/Configures bad_metadata_cookbook'
5
+ long_description 'Installs/Configures bad_metadata_cookbook'
6
+ version '1.2.3'
7
+ source_url 'https://github.com/electric-it/minimart'
8
+ issues_url 'https://github.com/electric-it/minimart/issues'
9
+
10
+ depends 'yum', '> 3.0.0'
@@ -0,0 +1,8 @@
1
+ #
2
+ # Cookbook Name:: sample_cookbook
3
+ # Recipe:: default
4
+ #
5
+ # Copyright (C) 2014 YOUR_NAME
6
+ #
7
+ # All rights reserved - Do Not Redistribute
8
+ #
@@ -31,6 +31,16 @@ describe Minimart::Cookbook do
31
31
  it { is_expected.to eq 'MadGlory' }
32
32
  end
33
33
 
34
+ describe '#source_url' do
35
+ subject { cookbook.source_url }
36
+ it { is_expected.to eq 'https://github.com/electric-it/minimart'}
37
+ end
38
+
39
+ describe '#issues_url' do
40
+ subject { cookbook.issues_url }
41
+ it { is_expected.to eq 'https://github.com/electric-it/minimart/issues'}
42
+ end
43
+
34
44
  describe '#path' do
35
45
  subject { cookbook.path }
36
46
  it { is_expected.to eq Pathname.new('spec/fixtures/sample_cookbook') }
@@ -197,5 +197,26 @@ describe Minimart::Mirror::InventoryBuilder do
197
197
  end
198
198
 
199
199
  end
200
+
201
+ context 'when a cookbook is missing name param in the metadata' do
202
+ let(:inventory_config) do
203
+ Minimart::Mirror::InventoryConfiguration.new('spec/fixtures/bad_metadata_inventory.yml')
204
+ end
205
+
206
+ before(:each) do
207
+ # stub out actually cloning the repo
208
+ allow_any_instance_of(Minimart::Download::GitRepository).to receive(:fetch).and_yield 'spec/invalid/bad_metadata_cookbook'
209
+ end
210
+
211
+ around(:each) do |e|
212
+ VCR.use_cassette('location_specific_cookbooks') { e.call }
213
+ end
214
+
215
+ # broken
216
+ it 'should not include the cookbook in the graph' do
217
+ subject.build!
218
+ expect(subject.graph.source_cookbook_added?('bad_metadata_cookbook', '1.2.3')).to eq false
219
+ end
220
+ end
200
221
  end
201
222
  end
@@ -7,6 +7,9 @@ describe Minimart::Web::HtmlGenerator do
7
7
  end
8
8
 
9
9
  let(:web_directory) { test_directory }
10
+ let(:assets_directory) { File.join(web_directory, 'assets') }
11
+ let(:stylesheets_directory) { File.join(assets_directory, 'stylesheets') }
12
+ let(:javascripts_directory) { File.join(assets_directory, 'javascripts') }
10
13
 
11
14
  subject do
12
15
  Minimart::Web::HtmlGenerator.new(
@@ -17,7 +20,17 @@ describe Minimart::Web::HtmlGenerator do
17
20
  describe '#generate' do
18
21
  it 'should copy any available assets' do
19
22
  subject.generate
20
- expect(Dir.exists?(File.join(web_directory, 'assets'))).to eq true
23
+ expect(Dir.exist?(assets_directory)).to eq true
24
+ end
25
+
26
+ it 'should minify raw CSS files' do
27
+ subject.generate
28
+ expect(Dir.entries(stylesheets_directory)).to include('application.min.css')
29
+ end
30
+
31
+ it 'should unglify raw JS files' do
32
+ subject.generate
33
+ expect(Dir.entries(javascripts_directory)).to include('application.min.js')
21
34
  end
22
35
 
23
36
  it 'should generate the dashboard page' do
@@ -30,5 +43,4 @@ describe Minimart::Web::HtmlGenerator do
30
43
  subject.generate
31
44
  end
32
45
  end
33
-
34
46
  end
@@ -302,6 +302,12 @@ form {
302
302
  width: 100%;
303
303
  margin-top: 20px; }
304
304
 
305
+ .detail-sidebar__halfbutton {
306
+ width: 49%;
307
+ font-size: 14px;
308
+ margin-top: 20px;
309
+ }
310
+
305
311
  /* Feature blocks */
306
312
  .feature-block {
307
313
  padding-top: 90px;