dsfu 0.0.1
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 +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/Prices.csv +1 -0
- data/README.md +31 -0
- data/Rakefile +4 -0
- data/bin/dsfu +4 -0
- data/dsfu.gemspec +31 -0
- data/lib/dsfu.rb +8 -0
- data/lib/dsfu/cli.rb +51 -0
- data/lib/dsfu/csv_product_factory.rb +26 -0
- data/lib/dsfu/product.rb +43 -0
- data/lib/dsfu/sentient.rb +93 -0
- data/lib/dsfu/serializer.rb +13 -0
- data/lib/dsfu/size.rb +33 -0
- data/lib/dsfu/version.rb +3 -0
- data/product_listing.csv +1 -0
- data/spec/dsfu/csv_product_factory_spec.rb +28 -0
- data/spec/dsfu/dsfu_spec.rb +7 -0
- data/spec/feature/upload_files_spec.rb +13 -0
- data/spec/fixtures/sample_product_data.csv +1 -0
- data/spec/spec_helper.rb +12 -0
- data/tasks/rspec.rake +5 -0
- metadata +213 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5df2430ffe7a417b1f82a05ad3e2d6b36b6cf194
|
4
|
+
data.tar.gz: ab95d445655f1b550205473f3e9027d232a0047a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 43a42bdf72a33a9502bf8149e6991cc67a85807978eba22e09711f8330b3bd7cb929661f829ea8a85bf6ae72f49420aa5ca2ae1c4c6560928a3538f57929032a
|
7
|
+
data.tar.gz: 1f50f24e099c6ea4245f21e65c644cd03e59d54a8beace3de11a10d22b4ce3b1878446947e2d945d57a3f1e2b3f496e0d6984bbfe8482b8bca7a756183605489
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Kit Langton
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Prices.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
File Name,Display Name,Height,Width,Price
|
data/README.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Dsfffuuu
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'dsfffuuu'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install dsfffuuu
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
TODO: Write usage instructions here
|
24
|
+
|
25
|
+
## Contributing
|
26
|
+
|
27
|
+
1. Fork it ( https://github.com/[my-github-username]/dsfffuuu/fork )
|
28
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
29
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
30
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
31
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/bin/dsfu
ADDED
data/dsfu.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'dsfu/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "dsfu"
|
8
|
+
spec.version = Dsfu::VERSION
|
9
|
+
spec.authors = ["Kit Langton"]
|
10
|
+
spec.email = ["kitlangton@gmail.com"]
|
11
|
+
spec.summary = %q{A gem to make EFI's digital storefront more bearable.}
|
12
|
+
spec.description = ""
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_development_dependency "cucumber"
|
25
|
+
spec.add_development_dependency "aruba"
|
26
|
+
spec.add_dependency "thor"
|
27
|
+
spec.add_dependency "capybara"
|
28
|
+
spec.add_dependency "selenium-webdriver"
|
29
|
+
spec.add_dependency "timeout"
|
30
|
+
spec.add_dependency "terminal-table"
|
31
|
+
end
|
data/lib/dsfu.rb
ADDED
data/lib/dsfu/cli.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'csv'
|
3
|
+
require 'terminal-table'
|
4
|
+
|
5
|
+
module Dsfu
|
6
|
+
class CLI < Thor
|
7
|
+
desc "view TABLE", "Views a table of products"
|
8
|
+
def view_table
|
9
|
+
csv = Dir.glob("*.csv")[0]
|
10
|
+
products = Dsfu::CsvProductFactory.new(csv).build
|
11
|
+
table = products.map.with_index { |product, i| [i, product.display_name, product.dimensions, "$#{product.price}"] }
|
12
|
+
puts Terminal::Table.new rows: table, headings: ['ID', 'Display Name', 'Size', 'Price']
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "csv", "Creates a new CSV for editing"
|
16
|
+
def csv
|
17
|
+
files = []
|
18
|
+
Dir.new(Dir.pwd).each do |file|
|
19
|
+
if file =~ /.png/
|
20
|
+
if file =~ /(.+) - ([\d.]+)[xX ]+([\d.]+).png/
|
21
|
+
files << [ file, $1, $2, $3]
|
22
|
+
else
|
23
|
+
files << [ file ]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
CSV.open("product_listing.csv", "wb") do |csv|
|
28
|
+
csv << ['File Name', 'Display Name', 'Width', 'Height', 'Price']
|
29
|
+
files.each do |file|
|
30
|
+
csv << file
|
31
|
+
end
|
32
|
+
end
|
33
|
+
`open product_listing.csv`
|
34
|
+
end
|
35
|
+
|
36
|
+
desc "upload COMPANY CATEGORY", "uploads products in directory to the digital store front under COMPANY"
|
37
|
+
def upload(company_input, category_input)
|
38
|
+
csv = Dir.glob("*.csv")[0]
|
39
|
+
products = Dsfu::CsvProductFactory.new(csv).build
|
40
|
+
|
41
|
+
Dsfu::SentientStoreFront.execute do
|
42
|
+
products.each do |product|
|
43
|
+
product.find_image_path
|
44
|
+
product.company = company_input
|
45
|
+
product.category = category_input
|
46
|
+
new_product product
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
module Dsfu
|
4
|
+
class CsvProductFactory
|
5
|
+
|
6
|
+
def initialize(csv_file)
|
7
|
+
@csv = CSV.read(csv_file, headers: true)
|
8
|
+
end
|
9
|
+
|
10
|
+
def build
|
11
|
+
products = []
|
12
|
+
@csv.each do |product|
|
13
|
+
products << Dsfu::Product.new(
|
14
|
+
name: product['Display Name'],
|
15
|
+
file_name: product['File Name'],
|
16
|
+
display_name: product['Display Name'],
|
17
|
+
height: product['Height'].to_f,
|
18
|
+
width: product['Width'].to_f,
|
19
|
+
price: product['Price'].scan(/[\d\.]+/)[0].to_f,
|
20
|
+
)
|
21
|
+
end
|
22
|
+
products
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/lib/dsfu/product.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
module Dsfu
|
4
|
+
class Product
|
5
|
+
attr_reader :file_name, :display_name, :height, :width, :description, :price, :category
|
6
|
+
attr_accessor :image_path, :company, :category
|
7
|
+
|
8
|
+
def initialize(opts)
|
9
|
+
@file_name = opts[:file_name]
|
10
|
+
@display_name = opts[:display_name]
|
11
|
+
@height = opts[:height]
|
12
|
+
@width = opts[:width]
|
13
|
+
@price = opts[:price]
|
14
|
+
@company = opts[:company] || nil
|
15
|
+
@category = opts[:category]
|
16
|
+
@description = opts[:description] || nil
|
17
|
+
@image_path = opts[:image_path] || nil
|
18
|
+
end
|
19
|
+
|
20
|
+
def display_description
|
21
|
+
string = []
|
22
|
+
string << dimensions
|
23
|
+
string << description
|
24
|
+
string.join("\n")
|
25
|
+
end
|
26
|
+
|
27
|
+
def dimensions
|
28
|
+
"#{width}\" x #{height}\""
|
29
|
+
end
|
30
|
+
|
31
|
+
def name
|
32
|
+
@company + " " + @category + " " + @display_name
|
33
|
+
end
|
34
|
+
|
35
|
+
def find_image_path
|
36
|
+
self.image_path = File.expand_path(Pathname.glob("#{file_name}")[0].to_path)
|
37
|
+
end
|
38
|
+
|
39
|
+
def strip?
|
40
|
+
DSFU::Size.new(width, height).strip?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module Dsfu
|
2
|
+
require 'cgi'
|
3
|
+
require 'timeout'
|
4
|
+
require 'capybara'
|
5
|
+
|
6
|
+
class SentientStoreFront
|
7
|
+
include Capybara::DSL
|
8
|
+
|
9
|
+
LINKS = {
|
10
|
+
login_path: "https://coloredge.myprintdesk.net/DSF/",
|
11
|
+
new_product_path: "https://coloredge.myprintdesk.net/DSF/Admin/CreateNewCatalogItem.aspx",
|
12
|
+
username_input: "ctl00_ctl00_C_W__loginWP__myLogin__userNameTB",
|
13
|
+
password_input: "ctl00_ctl00_C_W__loginWP__myLogin__passwordTB",
|
14
|
+
product_name_field: "ctl00_ctl00_C_M_txtName",
|
15
|
+
display_name_field: "ctl00_ctl00_C_M_ctl00_W_ctl01__StorefrontName",
|
16
|
+
}
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
Capybara.default_driver = :selenium
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.execute(&block)
|
23
|
+
dsf = self.new
|
24
|
+
dsf.login
|
25
|
+
dsf.instance_eval(&block)
|
26
|
+
end
|
27
|
+
|
28
|
+
def login
|
29
|
+
visit login_path
|
30
|
+
|
31
|
+
fill_in username_input, with: "administrator"
|
32
|
+
fill_in password_input, with: "cTKQ&sial4xe"
|
33
|
+
click_button "Login"
|
34
|
+
end
|
35
|
+
|
36
|
+
def new_product(product)
|
37
|
+
visit new_product_path
|
38
|
+
|
39
|
+
fill_in product_name_field, with: product.name
|
40
|
+
click_button "Next"
|
41
|
+
|
42
|
+
fill_in display_name_field, with: "#{product.category} #{product.display_name}"
|
43
|
+
find("#ctl00_ctl00_C_M_ctl00_W_ctl01__SKU").native.send_keys "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t#{product.display_description}"
|
44
|
+
|
45
|
+
upload_image(product.image_path)
|
46
|
+
change_settings
|
47
|
+
add_price(product.price)
|
48
|
+
click_button "Next"
|
49
|
+
|
50
|
+
uncheck "ctl00_ctl00_C_M_ctl00_W_ctl02_Fileupload1_OnlyTransferFiles"
|
51
|
+
attach_file("ctl00$ctl00$C$M$ctl00$W$ctl02$Fileupload1$htmlInputFileUpload", product.image_path)
|
52
|
+
fill_in "ctl00$ctl00$C$M$ctl00$W$ctl02$Fileupload1$TextBoxPageCount", with: "1"
|
53
|
+
click_button "Upload File"
|
54
|
+
sleep(5)
|
55
|
+
click_button "Next"
|
56
|
+
select('TF_Duratrans', :from => 'ctl00$ctl00$C$M$ctl00$W$ctl03$TicketTemplates')
|
57
|
+
click_button "Finish"
|
58
|
+
click_button "Done"
|
59
|
+
sleep(1)
|
60
|
+
end
|
61
|
+
|
62
|
+
def method_missing (method_name)
|
63
|
+
return LINKS[method_name] if LINKS[method_name]
|
64
|
+
super
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def add_price(price)
|
70
|
+
find(".rtsTxt", text: "Pricing").click
|
71
|
+
fill_in "tbl_0_PriceCatalog_regularprice_1", with: price
|
72
|
+
fill_in "tbl_0_PriceCatalog_setupprice_1", with: "0"
|
73
|
+
page.driver.execute_script "copyTblIPriceCatalog('ctl00_ctl00_C_M_ctl00_W_ctl01_GridViewPricesheets_ctl02_PriceItemFrame_ctl17','ctl00_ctl00_C_M_ctl00_W_ctl01_GridViewPricesheets_ctl02_PriceItemFrame_imageplushid_PriceCatalog','tbl_0_PriceCatalog','','', 'PriceCatalog');"
|
74
|
+
page.driver.execute_script "pasteallIPriceCatalog();"
|
75
|
+
end
|
76
|
+
|
77
|
+
def change_settings
|
78
|
+
find(".rtsTxt", text: "Settings").click
|
79
|
+
choose "ctl00_ctl00_C_M_ctl00_W_ctl01_AllowBuyerConfigurationRadioButton_1"
|
80
|
+
uncheck "ctl00_ctl00_C_M_ctl00_W_ctl01_FinalWdHt_ChkAllowCustom"
|
81
|
+
end
|
82
|
+
|
83
|
+
def upload_image(image_path)
|
84
|
+
within "#ctl00_ctl00_C_M_ctl00_W_ctl01__BigIconByItself_ProductIconImageAndButtonRow" do
|
85
|
+
click_button "Edit"
|
86
|
+
end
|
87
|
+
choose "ctl00_ctl00_C_M_ctl00_W_ctl01__BigIconByItself_ProductIcon_rdbUploadIcon"
|
88
|
+
check "ctl00_ctl00_C_M_ctl00_W_ctl01__BigIconByItself_ProductIcon_ChkUseSameImageIcon"
|
89
|
+
attach_file("ctl00$ctl00$C$M$ctl00$W$ctl01$_BigIconByItself$ProductIcon$_uploadedFile$ctl01", image_path)
|
90
|
+
click_button "Upload"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Serializer
|
2
|
+
REGEX = /(\d+[\.\d]*)[ xX"]+(\d+[\.\d]*)/
|
3
|
+
|
4
|
+
def self.serialize_raw_sizes
|
5
|
+
raw_text = File.readlines(File.expand_path('../../../db/size_data_raw.txt', __FILE__))
|
6
|
+
new_text = []
|
7
|
+
raw_text.each do |line|
|
8
|
+
REGEX.match(line)
|
9
|
+
new_text << DSF::Size.new($1,$2)
|
10
|
+
end
|
11
|
+
File.write(File.expand_path('../../../db/sizes_serial', __FILE__), Marshal::dump(new_text.uniq))
|
12
|
+
end
|
13
|
+
end
|
data/lib/dsfu/size.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Dsfu
|
4
|
+
class Size
|
5
|
+
include Comparable
|
6
|
+
attr_reader :width, :height
|
7
|
+
|
8
|
+
@@sizes = Marshal::load(File.read(File.expand_path('../../../db/sizes_serial', __FILE__)))
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def all
|
12
|
+
@@sizes
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(width, height)
|
17
|
+
@width, @height = width.to_f, height.to_f
|
18
|
+
end
|
19
|
+
|
20
|
+
def <=>(other)
|
21
|
+
(width * height) <=> (other.width * other.height)
|
22
|
+
end
|
23
|
+
|
24
|
+
def square?
|
25
|
+
width == height
|
26
|
+
end
|
27
|
+
|
28
|
+
def strip?
|
29
|
+
width * 6 < height ||
|
30
|
+
width > height * 6
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/dsfu/version.rb
ADDED
data/product_listing.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
File Name,Display Name,Width,Height,Price
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DSFU::CsvProductFactory do
|
4
|
+
let(:test_path) { File.expand_path("../../fixtures/sample_product_data.csv", __FILE__)}
|
5
|
+
let(:csv) { DSFU::CsvProductFactory.new(test_path) }
|
6
|
+
|
7
|
+
describe "assemble_products" do
|
8
|
+
it "returns products" do
|
9
|
+
first_product = csv.build[0]
|
10
|
+
expected_product = DSFU::Product.new(display_name: "No question is too cheesey (Min 10)",
|
11
|
+
file_name:"429R_1066296a201_HOL14_Cheese_Cling_FINAL_ToPrintOL_GRACoL",
|
12
|
+
height: 10.11,
|
13
|
+
width: 3.91,
|
14
|
+
price: 7.50)
|
15
|
+
expect(first_product.display_name).to eq expected_product.display_name
|
16
|
+
expect(first_product.file_name).to eq expected_product.file_name
|
17
|
+
expect(first_product.height).to eq expected_product.height
|
18
|
+
expect(first_product.width).to eq expected_product.width
|
19
|
+
expect(first_product.price).to eq expected_product.price
|
20
|
+
expect(first_product).to be_a_kind_of DSFU::Product
|
21
|
+
|
22
|
+
Dir.chdir("spec/fixtures")
|
23
|
+
expect(first_product.find_image_path).to eq "429R_1066296a201_HOL14_Cheese_Cling_FINAL_ToPrintOL_GRACoL.txt"
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe DSFU do
|
4
|
+
Dir.chdir("spec/fixtures")
|
5
|
+
csv = Dir.glob("*.csv")[0]
|
6
|
+
products = DSFU::CsvProductFactory.new(csv).build
|
7
|
+
products[0].find_image_path
|
8
|
+
products[0].company = "Whole Foods"
|
9
|
+
# p products[0].image_path
|
10
|
+
DSFU::SentientStoreFront.execute do
|
11
|
+
new_product products[0]
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
File Name,Display Name,Height,Width,Price
|
data/spec/spec_helper.rb
ADDED
data/tasks/rspec.rake
ADDED
metadata
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dsfu
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kit Langton
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: cucumber
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: aruba
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: thor
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: capybara
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: selenium-webdriver
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: timeout
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: terminal-table
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: ''
|
154
|
+
email:
|
155
|
+
- kitlangton@gmail.com
|
156
|
+
executables:
|
157
|
+
- dsfu
|
158
|
+
extensions: []
|
159
|
+
extra_rdoc_files: []
|
160
|
+
files:
|
161
|
+
- ".gitignore"
|
162
|
+
- Gemfile
|
163
|
+
- LICENSE.txt
|
164
|
+
- Prices.csv
|
165
|
+
- README.md
|
166
|
+
- Rakefile
|
167
|
+
- bin/dsfu
|
168
|
+
- dsfu.gemspec
|
169
|
+
- lib/dsfu.rb
|
170
|
+
- lib/dsfu/cli.rb
|
171
|
+
- lib/dsfu/csv_product_factory.rb
|
172
|
+
- lib/dsfu/product.rb
|
173
|
+
- lib/dsfu/sentient.rb
|
174
|
+
- lib/dsfu/serializer.rb
|
175
|
+
- lib/dsfu/size.rb
|
176
|
+
- lib/dsfu/version.rb
|
177
|
+
- product_listing.csv
|
178
|
+
- spec/dsfu/csv_product_factory_spec.rb
|
179
|
+
- spec/dsfu/dsfu_spec.rb
|
180
|
+
- spec/feature/upload_files_spec.rb
|
181
|
+
- spec/fixtures/sample_product_data.csv
|
182
|
+
- spec/spec_helper.rb
|
183
|
+
- tasks/rspec.rake
|
184
|
+
homepage: ''
|
185
|
+
licenses:
|
186
|
+
- MIT
|
187
|
+
metadata: {}
|
188
|
+
post_install_message:
|
189
|
+
rdoc_options: []
|
190
|
+
require_paths:
|
191
|
+
- lib
|
192
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
197
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
requirements: []
|
203
|
+
rubyforge_project:
|
204
|
+
rubygems_version: 2.4.6
|
205
|
+
signing_key:
|
206
|
+
specification_version: 4
|
207
|
+
summary: A gem to make EFI's digital storefront more bearable.
|
208
|
+
test_files:
|
209
|
+
- spec/dsfu/csv_product_factory_spec.rb
|
210
|
+
- spec/dsfu/dsfu_spec.rb
|
211
|
+
- spec/feature/upload_files_spec.rb
|
212
|
+
- spec/fixtures/sample_product_data.csv
|
213
|
+
- spec/spec_helper.rb
|