apple_cart 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +82 -0
- data/LICENSE +22 -0
- data/README.md +1 -0
- data/Rakefile +2 -0
- data/apple_cart.gemspec +40 -0
- data/bin/apple_cart +103 -0
- data/lib/apple_cart.rb +3 -0
- data/lib/apple_cart/helpers.rb +17 -0
- data/lib/apple_cart/version.rb +3 -0
- data/source/.autotest +23 -0
- data/source/.gitignore +36 -0
- data/source/.rspec +2 -0
- data/source/.rvmrc.erb +1 -0
- data/source/Capfile +5 -0
- data/source/Gemfile +87 -0
- data/source/app/helpers/body_class_helper.rb +7 -0
- data/source/app/views/layouts/application.html.erb.erb +14 -0
- data/source/app/views/pages/maintenance.html.erb.erb +37 -0
- data/source/app/views/shared/_flashes.html.erb +5 -0
- data/source/app/views/shared/_javascript.html.erb +7 -0
- data/source/autotest/discover.rb +2 -0
- data/source/config/cucumber.yml +13 -0
- data/source/config/database.yml.example +14 -0
- data/source/config/deploy.rb.erb +23 -0
- data/source/config/initializers/actionmailer.rb.erb +12 -0
- data/source/config/initializers/constants.rb +1 -0
- data/source/config/initializers/core_ext.rb +1 -0
- data/source/config/initializers/date_and_time_formats.rb +9 -0
- data/source/db/samplize.rb +58 -0
- data/source/db/seed.rb +27 -0
- data/source/features/step_definitions/form_steps.rb +16 -0
- data/source/features/step_definitions/object_creation_steps.rb +34 -0
- data/source/features/step_definitions/third_person_web_steps.rb +94 -0
- data/source/features/support/factory_girl.rb +1 -0
- data/source/features/support/regex.rb +3 -0
- data/source/features/support/seed_data.rb +6 -0
- data/source/lib/formats.rb +5 -0
- data/source/lib/recipes/kompanee-recipes.rb +2 -0
- data/source/lib/tasks/db.rake +38 -0
- data/source/lib/tasks/seed.rake +33 -0
- data/source/public/humans.txt +49 -0
- data/source/public/stylesheets/sass/fonts.scss +38 -0
- data/source/public/stylesheets/sass/grids.scss +14 -0
- data/source/public/stylesheets/sass/reset.scss +98 -0
- data/source/public/stylesheets/sass/template.scss +63 -0
- data/source/spec/factories/users.rb +12 -0
- data/source/spec/support/color.rb +3 -0
- data/source/spec/support/devise.rb +3 -0
- data/source/spec/support/focused.rb +6 -0
- data/source/spec/support/matchers/paperclip_matchers.rb +5 -0
- data/source/spec/support/pending.rb +5 -0
- data/source/template.rb +309 -0
- metadata +169 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
5
|
+
<title><%= app_name %></title>
|
6
|
+
<%%= stylesheet_link_tag :defaults, :media => 'all', :cache => true %>
|
7
|
+
<%%= csrf_meta_tag %>
|
8
|
+
</head>
|
9
|
+
<body class="<%%= body_class %>">
|
10
|
+
<%%= render :partial => 'shared/flashes' -%>
|
11
|
+
<%%= yield %>
|
12
|
+
<%%= render :partial => 'shared/javascript' %>
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= app_name %> - Down for Maintenance</title>
|
5
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
|
6
|
+
<style>
|
7
|
+
html, body, div, span, applet, object, iframe,
|
8
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
9
|
+
a, abbr, acronym, address, big, cite, code,
|
10
|
+
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
11
|
+
small, strike, strong, sub, sup, tt, var,
|
12
|
+
dl, dt, dd, ol, ul, li,
|
13
|
+
fieldset, form, label, legend,
|
14
|
+
table, caption, tbody, tfoot, thead, tr, th, td {
|
15
|
+
margin: 0;
|
16
|
+
padding: 0;
|
17
|
+
border: 0;
|
18
|
+
outline: 0;
|
19
|
+
font-weight: inherit;
|
20
|
+
font-style: inherit;
|
21
|
+
font-size: 100%;
|
22
|
+
font-family: arial, helvetica, sans-serif;
|
23
|
+
}
|
24
|
+
</style>
|
25
|
+
</head>
|
26
|
+
<body>
|
27
|
+
<div id="content">
|
28
|
+
<h1>We're currently down for <%%= reason ? reason : "maintenance" %> as of <%%= Time.now.strftime("%H:%M %Z") %>.</h1>
|
29
|
+
<p>
|
30
|
+
Sorry for the inconvenience. We'll be back
|
31
|
+
<%%= deadline ? "by #{deadline}" : "shortly" %>.
|
32
|
+
Please email us if you need to get in touch.
|
33
|
+
</p>
|
34
|
+
</div>
|
35
|
+
</body>
|
36
|
+
</html>
|
37
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<%
|
2
|
+
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
3
|
+
preferred_format = "--format #{ENV['CUCUMBER_FORMAT'] || 'Cucumber::Formatter::Fuubar'}"
|
4
|
+
|
5
|
+
rerun_opts = rerun.to_s.strip.empty? ? "#{preferred_format} features" : "#{preferred_format} #{rerun}"
|
6
|
+
std_opts = "#{preferred_format} --strict --color"
|
7
|
+
%>
|
8
|
+
|
9
|
+
default: <%= std_opts %> features
|
10
|
+
wip: --tags @wip --wip features
|
11
|
+
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
12
|
+
autotest: <%= std_opts %>
|
13
|
+
autotest-all: <%= std_opts %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#
|
2
|
+
# Set your application information here.
|
3
|
+
#
|
4
|
+
set :application, ""
|
5
|
+
set :application_short, "<%= app_name %>"
|
6
|
+
|
7
|
+
desc "Sets up the environment for a staging deployment."
|
8
|
+
task :staging do
|
9
|
+
set :deployment_type, :rackspace
|
10
|
+
|
11
|
+
set :domain, "thekompanee.com"
|
12
|
+
|
13
|
+
set :server_ip, "174.143.210.58"
|
14
|
+
set :server_name, "zeus.#{domain}"
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Sets up the environment for a production deployment."
|
18
|
+
task :production do
|
19
|
+
set :deployment_type, :heroku
|
20
|
+
|
21
|
+
set :deploy_name, "<%= app_name %>"
|
22
|
+
set :user, "heroku@thekompanee.com"
|
23
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%= @app_class %>::Application.configure do
|
2
|
+
case Rails.env
|
3
|
+
when "production"
|
4
|
+
host = "<%= @app_domain %>.com"
|
5
|
+
when "staging"
|
6
|
+
host = "staging.<%= @app_domain %>.com"
|
7
|
+
else
|
8
|
+
host = "localhost:3000"
|
9
|
+
end
|
10
|
+
|
11
|
+
config.action_mailer.default_url_options = { :host => host }
|
12
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Dir[Rails.root.join("app/constants/**/*.rb")].each {|f| require f}
|
@@ -0,0 +1 @@
|
|
1
|
+
Dir[Rails.root.join("lib/core_ext/**/*.rb")].each {|f| require f}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
DateAndTimeFormats = {
|
2
|
+
:simple => '%m/%d/%Y', # 04/13/2010
|
3
|
+
:long_date => "%a, %b %d, %Y", # Tue, Apr 13, 2010
|
4
|
+
:mon_year => '%m/%Y', # 04/2010
|
5
|
+
:tstamp => "%Y%m%d-%H%M%S" # 20100413-135959
|
6
|
+
}
|
7
|
+
|
8
|
+
Time::DATE_FORMATS.merge! DateAndTimeFormats
|
9
|
+
Date::DATE_FORMATS.merge! DateAndTimeFormats
|
@@ -0,0 +1,58 @@
|
|
1
|
+
unless Rails.env.production?
|
2
|
+
require 'factory_girl'
|
3
|
+
Dir[File.join(Rails.root, 'spec', 'factories', '*.rb')].each {|f| require f}
|
4
|
+
|
5
|
+
module DB
|
6
|
+
class Samplize
|
7
|
+
# Use this method to call all of the sub-methods used
|
8
|
+
# to create sample data for your application.
|
9
|
+
#
|
10
|
+
# For example:
|
11
|
+
# samplize_users
|
12
|
+
# or
|
13
|
+
# samplize(University)
|
14
|
+
#
|
15
|
+
# If you call the second one, it will look for a factory
|
16
|
+
# with the name <class_name_underscored>_sample and run it
|
17
|
+
# anywhere from 1 to 100 times.
|
18
|
+
def self.all
|
19
|
+
# samplize_users
|
20
|
+
# samplize(University)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.samplize_users
|
24
|
+
Factory(:user_sample, :email => 'test@test.com')
|
25
|
+
|
26
|
+
if !Rails.env.test?
|
27
|
+
puts "*" * 80
|
28
|
+
puts "** The following accounts are available for use: **"
|
29
|
+
puts "** test@test.com/testtickle **"
|
30
|
+
puts "*" * 80
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
def self.samplize(clazz, count = nil)
|
36
|
+
count ||= rand(100)
|
37
|
+
factory_name = "#{clazz.name.underscore}_sample".to_sym
|
38
|
+
|
39
|
+
count.times { Factory(factory_name.to_sym) }
|
40
|
+
|
41
|
+
sample_info_in_pretty_box(clazz, count)
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.sample_info_in_pretty_box(clazz, count = nil)
|
45
|
+
if !Rails.env.test?
|
46
|
+
count = clazz.all.count
|
47
|
+
message = "#{count} #{clazz.name.underscore.titleize.pluralize} Created"
|
48
|
+
left_just_size = ((80 - message.length - 4) / 2).round + message.length
|
49
|
+
message = message.ljust(left_just_size).rjust(76)
|
50
|
+
|
51
|
+
puts "*" * 80
|
52
|
+
puts "**#{message}**"
|
53
|
+
puts "*" * 80
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/source/db/seed.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'factory_girl'
|
2
|
+
Dir[File.join(Rails.root, 'spec', 'factories', '*.rb')].each {|f| require f}
|
3
|
+
|
4
|
+
module DB
|
5
|
+
class Seed
|
6
|
+
def self.all
|
7
|
+
# Call all of the methods which seed your DB here.
|
8
|
+
# DO NOT put methods which install sample data here.
|
9
|
+
end
|
10
|
+
|
11
|
+
# Put all of the methods which seed your DB here.
|
12
|
+
|
13
|
+
private
|
14
|
+
def self.seed_info_in_pretty_box(clazz)
|
15
|
+
if !Rails.env.test?
|
16
|
+
count = clazz.all.count
|
17
|
+
message = "#{count} #{clazz.name.underscore.titleize.pluralize} Created"
|
18
|
+
left_just_size = ((80 - message.length - 4) / 2).round + message.length
|
19
|
+
message = message.ljust(left_just_size).rjust(76)
|
20
|
+
|
21
|
+
puts "*" * 80
|
22
|
+
puts "**#{message}**"
|
23
|
+
puts "*" * 80
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# When /^he fills in "([^"]*)" with his (incorrect )?(.*)$/ do |field, correctness, attribute|
|
2
|
+
# value = correctness.nil? ? @last_reference.send(attribute) : @last_reference.send(attribute).reverse
|
3
|
+
|
4
|
+
# When %{I fill in "#{field}" with "#{value}"}
|
5
|
+
# end
|
6
|
+
|
7
|
+
# When /^they fill in "([^"]*)" with their email$/ do |field|
|
8
|
+
# When %{I fill in "#{field}" with "someone@somewhere.com"}
|
9
|
+
# end
|
10
|
+
|
11
|
+
# When /^(?:I|he|she|it|they) fills? in the advised student form$/ do
|
12
|
+
# fill_in "Students name", :with => "Johnny Mneumonic"
|
13
|
+
# fill_in_date "advised_student_started_on", :with => "2010-08-01"
|
14
|
+
# fill_in_date "advised_student_ended_on", :with => "2010-12-12"
|
15
|
+
# fill_in "Description", :with => "A data courier, carrying a data package literally inside his head too large to hold for long, must deliver it before he dies from it."
|
16
|
+
# end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rake'
|
2
|
+
load 'lib/tasks/seed.rake'
|
3
|
+
|
4
|
+
Given /^the standard dataset exists$/ do
|
5
|
+
Rake::Task['db:seed:base'].execute
|
6
|
+
end
|
7
|
+
|
8
|
+
# Given /^a user named "([^"]*)" exists$/ do |users_name|
|
9
|
+
# @object_lookup = {}
|
10
|
+
|
11
|
+
# @user = Factory(:user, :first_name => users_name)
|
12
|
+
|
13
|
+
# @object_lookup[users_name] = @user
|
14
|
+
# @last_reference = @user
|
15
|
+
# end
|
16
|
+
|
17
|
+
# Given /^(?:he|she|they|it) (?:has|have) rendered a service of "([^"]*)" for "([^"]*)" at "([^"]*)" in "([^"]*)"$/ do |service_position, organization, location_name, city_state|
|
18
|
+
# Given %Q{a location of "#{location_name}" in "#{city_state}" exists}
|
19
|
+
# service_position_type = Factory(:service_position_type, :name => service_position)
|
20
|
+
# Factory(:service_position, :service_position_type => service_position_type, :location => @location, :organization => organization)
|
21
|
+
# end
|
22
|
+
|
23
|
+
# Given /^(?:he|she|they|it) (?:has|have) taken a professional leave on (\d{2}\/\d{2}\/\d{4}) for "([^"]*)"$/ do |start_date, leave_type|
|
24
|
+
# leave_type = Factory(:professional_leave_type, :name => leave_type)
|
25
|
+
# Factory(:professional_leave, :professional_leave_type => leave_type, :started_on => Date.strptime(start_date, "%m/%d/%Y"))
|
26
|
+
# end
|
27
|
+
|
28
|
+
# Then /^they should exist in the system$/ do
|
29
|
+
# User.first.should_not be_nil
|
30
|
+
# end
|
31
|
+
|
32
|
+
# Then /^they should not exist in the system$/ do
|
33
|
+
# User.first.should be_nil
|
34
|
+
# end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
Given /^#{@person} #{@modifier} (?:currently )on (.+)$/ do |page_name|
|
2
|
+
Given %{I am on #{page_name}}
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^#{@person} go(?:es)? to (.+)$/ do |page_name|
|
6
|
+
When %{I go to #{page_name}}
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^(?:|then )(?:#{@person}|I) clicks? (?:on )?"([^\"]*)"(?: within (.*))?(?: and #{@person} waits? (\d+) seconds?)?$/ do |item, parent, delay|
|
10
|
+
delay = delay.nil? ? 0 : delay.to_i
|
11
|
+
|
12
|
+
with_scope(parent) do
|
13
|
+
click_link_or_button(item)
|
14
|
+
|
15
|
+
sleep(delay)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
When /^#{@person} press(?:es)? "([^"]*)"(?: within (.*))?$/ do |button, parent|
|
20
|
+
When %{I press "#{button}" within #{parent}}
|
21
|
+
end
|
22
|
+
|
23
|
+
When /^#{@person} follows? "([^"]*)"(?: within (.*))?$/ do |link, parent|
|
24
|
+
When %{I follow "#{link}" within #{parent}}
|
25
|
+
end
|
26
|
+
|
27
|
+
When /^#{@person} fills? in "([^"]*)" with #{@possessive} (.+)(?: within (.*))?$/ do |field, value, parent|
|
28
|
+
value = @last_reference.send(value.to_sym)
|
29
|
+
When %{I fill in "#{field}" with "#{value}" within #{parent}}
|
30
|
+
end
|
31
|
+
|
32
|
+
When /^#{@person} fills? in "([^"]*)" with "([^"]*)"(?: within (.*))?$/ do |field, value, parent|
|
33
|
+
When %{I fill in "#{field}" with "#{value}" within #{parent}}
|
34
|
+
end
|
35
|
+
|
36
|
+
When /^#{@person} fills? in "([^"]*)" for "([^"]*)"(?: within (.*))?$/ do |value, field, parent|
|
37
|
+
When %{I fill in "#{field}" with "#{value}" within #{parent}}
|
38
|
+
end
|
39
|
+
|
40
|
+
When /^#{@person} fills? in the following(?: within (.*))?:$/ do |parent, fields|
|
41
|
+
When %{I fill in "#{name}" with "#{value}"}, fields
|
42
|
+
end
|
43
|
+
|
44
|
+
When /^#{@person} selects? "([^"]*)" from "([^"]*)"(?: within (.*))?$/ do |value, field, parent|
|
45
|
+
When %{I select "#{value}" from "#{field}" within #{parent}}
|
46
|
+
end
|
47
|
+
|
48
|
+
When /^#{@person} checks? "([^"]*)"(?: within (.*))?$/ do |field, parent|
|
49
|
+
When %{I check "#{field}" within #{parent}}
|
50
|
+
end
|
51
|
+
|
52
|
+
When /^#{@person} unchecks? "([^"]*)"(?: within (.*))?$/ do |field, parent|
|
53
|
+
When %{I uncheck "#{field}" within #{parent}}
|
54
|
+
end
|
55
|
+
|
56
|
+
When /^#{@person} chooses? "([^"]*)"(?: within (.*))?$/ do |field, parent|
|
57
|
+
When %{I choose "#{field}" within #{parent}}
|
58
|
+
end
|
59
|
+
|
60
|
+
When /^#{@person} attach(?:es) the file "([^"]*)" to "([^"]*)"(?: within (.*))?$/ do |path, field, parent|
|
61
|
+
When %{I attach the file "#{path}" to "#{field}"}
|
62
|
+
end
|
63
|
+
|
64
|
+
Then /^#{@person} should see JSON:$/ do |expected_json|
|
65
|
+
Then %{I should see JSON:}, expected_json
|
66
|
+
end
|
67
|
+
|
68
|
+
Then /^#{@person} should see "([^"]*)"(?: within (.*))?$/ do |text, parent|
|
69
|
+
Then %{I should see "#{text}" within #{parent}}
|
70
|
+
end
|
71
|
+
|
72
|
+
Then /^#{@person} should see \/([^\/]*)\/(?: within (.*))?$/ do |regexp, parent|
|
73
|
+
Then %{I should see #{regexp} when #{parent}}
|
74
|
+
end
|
75
|
+
|
76
|
+
Then /^#{@person} should not see "([^"]*)"(?: within (.*))?$/ do |text, parent|
|
77
|
+
Then %{I should not see "#{text}" within #{parent}}
|
78
|
+
end
|
79
|
+
|
80
|
+
Then /^#{@person} should not see \/([^\/]*)\/(?: within (.*))?$/ do |regexp, parent|
|
81
|
+
Then %{I should not see #{regexp} within #{parent}}
|
82
|
+
end
|
83
|
+
|
84
|
+
Then /^#{@person} should (?:still )?be on (.+)$/ do |page_name|
|
85
|
+
Then %{I should be on #{page_name}}
|
86
|
+
end
|
87
|
+
|
88
|
+
Then /^#{@person} should be taken to (.+)$/ do |page_name|
|
89
|
+
Then %{I should be on #{page_name}}
|
90
|
+
end
|
91
|
+
|
92
|
+
Then /^#{@person} should have the following query string:$/ do |expected_pairs|
|
93
|
+
Then %{I should have the following query string:}, expected_pairs
|
94
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'factory_girl/step_definitions'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
namespace :db do
|
2
|
+
desc "Backs up the database. Auto-detects database type."
|
3
|
+
task :backup => :environment do
|
4
|
+
directory = ENV["BACKUP_DIRECTORY"].blank? ? "db" : ENV["BACKUP_DIRECTORY"]
|
5
|
+
|
6
|
+
@db_config = ActiveRecord::Base.configurations[Rails.env]
|
7
|
+
|
8
|
+
case @db_config["adapter"]
|
9
|
+
when "mysql"
|
10
|
+
execute_mysql_command("mysqldump", "--comments --extended-insert --flush-privileges > #{directory}/#{Time.now.strftime("%Y%m%d%H%M%S")}.dump.sql")
|
11
|
+
when "postgresql"
|
12
|
+
execute_postgres_command("pg_dump", "--file=#{directory}/#{Time.now.strftime("%Y%m%d%H%M%S")}.dump.sql")
|
13
|
+
else
|
14
|
+
raise "Sorry, I can't figure out how to backup a #{@db_config["adapter"]} database."
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def execute_postgres_command(command, arguments)
|
20
|
+
ENV['PGUSER'] = @db_config["username"] if @db_config["username"]
|
21
|
+
ENV['PGHOST'] = @db_config["host"] if @db_config["host"]
|
22
|
+
ENV['PGPORT'] = @db_config["port"].to_s if @db_config["port"]
|
23
|
+
ENV['PGPASSWORD'] = @db_config["password"].to_s if @db_config["password"]
|
24
|
+
|
25
|
+
command = [ command, @db_config["database"], arguments ].join(" ")
|
26
|
+
puts ">> Executing Postgres Command: #{command}"
|
27
|
+
system(command)
|
28
|
+
end
|
29
|
+
|
30
|
+
def execute_mysql_command(command, arguments)
|
31
|
+
ENV['MYSQL_PWD'] = @db_config["password"] if @db_config["password"]
|
32
|
+
ENV['MYSQL_TCP_PORT'] = @db_config["port"] if @db_config["port"]
|
33
|
+
|
34
|
+
connection = "-u #{@db_config["username"]}"
|
35
|
+
command = [ command, connection, @db_config["database"], arguments ].join(" ")
|
36
|
+
puts ">> Executing MySQL Command: #{command}"
|
37
|
+
system(command)
|
38
|
+
end
|