confetti 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +48 -0
- data/README.md +46 -0
- data/Rakefile +19 -0
- data/bin/confetti +4 -0
- data/confetti.gemspec +29 -0
- data/features/android.feature +14 -0
- data/features/blackberry.feature +9 -0
- data/features/command_line.feature +12 -0
- data/features/ios.feature +9 -0
- data/features/step_definitions/aruba_ext_steps.rb +7 -0
- data/features/support/setup.rb +1 -0
- data/features/symbian.wrt.feature +9 -0
- data/features/webos.feature +9 -0
- data/lib/confetti.rb +31 -0
- data/lib/confetti/cli.rb +19 -0
- data/lib/confetti/config.rb +57 -0
- data/lib/confetti/config/feature.rb +13 -0
- data/lib/confetti/helpers.rb +7 -0
- data/lib/confetti/template.rb +4 -0
- data/lib/confetti/template_helper.rb +28 -0
- data/lib/confetti/templates/android_manifest.mustache +33 -0
- data/lib/confetti/templates/android_manifest.rb +27 -0
- data/lib/confetti/templates/android_strings.mustache +5 -0
- data/lib/confetti/templates/android_strings.rb +13 -0
- data/lib/confetti/templates/base.mustache +0 -0
- data/lib/confetti/templates/base.rb +13 -0
- data/lib/confetti/templates/blackberry_widgets_config.mustache +20 -0
- data/lib/confetti/templates/blackberry_widgets_config.rb +37 -0
- data/lib/confetti/templates/ios_info.mustache +48 -0
- data/lib/confetti/templates/ios_info.rb +21 -0
- data/lib/confetti/templates/java_checks.rb +18 -0
- data/lib/confetti/templates/symbian_wrt_info.mustache +17 -0
- data/lib/confetti/templates/symbian_wrt_info.rb +21 -0
- data/lib/confetti/templates/webos_appinfo.mustache +9 -0
- data/lib/confetti/templates/webos_appinfo.rb +49 -0
- data/lib/confetti/version.rb +3 -0
- data/lib/typedset.rb +23 -0
- data/spec/config/config_author_spec.rb +22 -0
- data/spec/config/config_content_spec.rb +22 -0
- data/spec/config/config_feature_spec.rb +33 -0
- data/spec/config/config_icon_spec.rb +22 -0
- data/spec/config/config_license_spec.rb +17 -0
- data/spec/config/config_name_spec.rb +17 -0
- data/spec/config/config_preference_spec.rb +22 -0
- data/spec/config_spec.rb +217 -0
- data/spec/fixtures/AndroidManifest_expected.xml +33 -0
- data/spec/fixtures/android_manifest_spec.xml +33 -0
- data/spec/fixtures/android_strings_expected.xml +5 -0
- data/spec/fixtures/android_strings_spec.xml +5 -0
- data/spec/fixtures/appinfo_expected.json +9 -0
- data/spec/fixtures/blackberry_widget_config_expected.xml +20 -0
- data/spec/fixtures/blackberry_widget_config_spec.xml +20 -0
- data/spec/fixtures/config.xml +21 -0
- data/spec/fixtures/ios_info_expected.plist +48 -0
- data/spec/fixtures/ios_info_spec.plist +48 -0
- data/spec/fixtures/symbian_wrt_info_expected.plist +17 -0
- data/spec/fixtures/symbian_wrt_info_spec.plist +17 -0
- data/spec/fixtures/webos_appinfo_spec.json +9 -0
- data/spec/helpers_spec.rb +21 -0
- data/spec/integration_spec.rb +66 -0
- data/spec/spec_helper.rb +83 -0
- data/spec/template_spec.rb +4 -0
- data/spec/templates/android_manifest_spec.rb +66 -0
- data/spec/templates/android_strings_spec.rb +56 -0
- data/spec/templates/base_spec.rb +25 -0
- data/spec/templates/blackberry_widget_config_spec.rb +94 -0
- data/spec/templates/ios_info_spec.rb +68 -0
- data/spec/templates/java_checks_spec.rb +59 -0
- data/spec/templates/symbian_wrt_info_spec.rb +68 -0
- data/spec/templates/webos_appinfo_spec.rb +101 -0
- data/spec/typedset_spec.rb +72 -0
- metadata +256 -0
@@ -0,0 +1,48 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>CFBundleIconFiles</key>
|
6
|
+
<array>
|
7
|
+
<string>icon.png</string>
|
8
|
+
<string>icon-72.png</string>
|
9
|
+
</array>
|
10
|
+
<key>UISupportedInterfaceOrientations~ipad</key>
|
11
|
+
<array>
|
12
|
+
<string>UIInterfaceOrientationPortrait</string>
|
13
|
+
<string>UIInterfaceOrientationLandscapeLeft</string>
|
14
|
+
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
15
|
+
<string>UIInterfaceOrientationLandscapeRight</string>
|
16
|
+
</array>
|
17
|
+
<key>UISupportedInterfaceOrientations</key>
|
18
|
+
<array>
|
19
|
+
<string>UIInterfaceOrientationPortrait</string>
|
20
|
+
</array>
|
21
|
+
<key>CFBundleDevelopmentRegion</key>
|
22
|
+
<string>English</string>
|
23
|
+
<key>CFBundleDisplayName</key>
|
24
|
+
<string>Awesome App</string>
|
25
|
+
<key>CFBundleExecutable</key>
|
26
|
+
<string>${EXECUTABLE_NAME}</string>
|
27
|
+
<key>CFBundleIconFile</key>
|
28
|
+
<string>icon.png</string>
|
29
|
+
<key>CFBundleIdentifier</key>
|
30
|
+
<string>com.whoever.awesome.app</string>
|
31
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
32
|
+
<string>6.0</string>
|
33
|
+
<key>CFBundleName</key>
|
34
|
+
<string>Awesome App</string>
|
35
|
+
<key>CFBundlePackageType</key>
|
36
|
+
<string>APPL</string>
|
37
|
+
<key>CFBundleSignature</key>
|
38
|
+
<string>????</string>
|
39
|
+
<key>CFBundleVersion</key>
|
40
|
+
<string>1.0.0</string>
|
41
|
+
<key>LSRequiresIPhoneOS</key>
|
42
|
+
<true/>
|
43
|
+
<key>NSMainNibFile</key>
|
44
|
+
<string></string>
|
45
|
+
<key>NSMainNibFile~ipad</key>
|
46
|
+
<string>-iPad</string>
|
47
|
+
</dict>
|
48
|
+
</plist>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Nokia//DTD PLIST 1.0//EN" "http://www.nokia.com/DTDs/plist-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>DisplayName</key>
|
6
|
+
<string>Confetti Sample App</string>
|
7
|
+
<key>Identifier</key>
|
8
|
+
<string>com.alunny.confetti</string>
|
9
|
+
<key>Version</key>
|
10
|
+
<string>1.0.0</string>
|
11
|
+
<key>MainHTML</key>
|
12
|
+
<string>index.html</string>
|
13
|
+
<key>MiniViewEnabled</key>
|
14
|
+
<false/>
|
15
|
+
</dict>
|
16
|
+
</plist>
|
17
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Nokia//DTD PLIST 1.0//EN" "http://www.nokia.com/DTDs/plist-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>DisplayName</key>
|
6
|
+
<string>Awesome App</string>
|
7
|
+
<key>Identifier</key>
|
8
|
+
<string>com.whoever.awesome.app</string>
|
9
|
+
<key>Version</key>
|
10
|
+
<string>1.0.0</string>
|
11
|
+
<key>MainHTML</key>
|
12
|
+
<string>index.html</string>
|
13
|
+
<key>MiniViewEnabled</key>
|
14
|
+
<false/>
|
15
|
+
</dict>
|
16
|
+
</plist>
|
17
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Confetti::Helpers do
|
4
|
+
include Confetti::Helpers
|
5
|
+
|
6
|
+
describe "#is_file?" do
|
7
|
+
it "should call File.exist? for the passed argument" do
|
8
|
+
File.should_receive(:exist?).with("foo.txt")
|
9
|
+
|
10
|
+
is_file? "foo.txt"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return the same result as File.exist? does" do
|
14
|
+
File.should_receive(:exist?).with("foo.txt").and_return(true)
|
15
|
+
is_file?("foo.txt").should be_true
|
16
|
+
|
17
|
+
File.should_receive(:exist?).with("foo.txt").and_return(false)
|
18
|
+
is_file?("foo.txt").should be_false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Writing Output' do
|
4
|
+
include HelpfulPaths
|
5
|
+
include FileHelpers
|
6
|
+
|
7
|
+
before do
|
8
|
+
@config = Confetti::Config.new "#{ fixture_dir }/config.xml"
|
9
|
+
end
|
10
|
+
|
11
|
+
context "Android" do
|
12
|
+
it "should read config.xml and spit out AndroidManifest.xml" do
|
13
|
+
@output_file = "#{ fixture_dir }/AndroidManifest_output.xml"
|
14
|
+
@config.write_android_manifest @output_file
|
15
|
+
|
16
|
+
files_should_match @output_file, "#{ fixture_dir }/AndroidManifest_expected.xml"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should read config.xml and spit out strings.xml" do
|
20
|
+
@output_file = "#{ fixture_dir }/android_strings_output.xml"
|
21
|
+
@config.write_android_strings @output_file
|
22
|
+
|
23
|
+
files_should_match @output_file, "#{ fixture_dir }/android_strings_expected.xml"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context "webOS" do
|
28
|
+
it "should read config.xml and spit out appinfo.json" do
|
29
|
+
@output_file = "#{ fixture_dir }/appinfo_output.json"
|
30
|
+
@config.write_webos_appinfo @output_file
|
31
|
+
|
32
|
+
files_should_match @output_file, "#{ fixture_dir }/appinfo_expected.json"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "iOS" do
|
37
|
+
it "should read config.xml and spit out Info.plist" do
|
38
|
+
@output_file = "#{ fixture_dir }/ios_info_output.plist"
|
39
|
+
@config.write_ios_info @output_file
|
40
|
+
|
41
|
+
files_should_match @output_file, "#{ fixture_dir }/ios_info_expected.plist"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "Symbian.wrt" do
|
46
|
+
it "should read config.xml and spit out info.plist" do
|
47
|
+
@output_file = "#{ fixture_dir }/symbian_wrt_info_output.plist"
|
48
|
+
@config.write_symbian_wrt_info @output_file
|
49
|
+
|
50
|
+
files_should_match @output_file, "#{ fixture_dir }/symbian_wrt_info_expected.plist"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context "Blackberry Widgets" do
|
55
|
+
it "should read config.xml and spit out bb-config.xml" do
|
56
|
+
@output_file = "#{ fixture_dir }/blackberry_widget_config_output.xml"
|
57
|
+
@config.write_blackberry_widgets_config @output_file
|
58
|
+
|
59
|
+
files_should_match @output_file, "#{ fixture_dir }/blackberry_widget_config_expected.xml"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
after do
|
64
|
+
FileUtils.rm @output_file if File.exist? @output_file
|
65
|
+
end
|
66
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
require "confetti"
|
2
|
+
|
3
|
+
module HelpfulPaths
|
4
|
+
SPEC_DIR = File.dirname(__FILE__)
|
5
|
+
FIXTURE_DIR = SPEC_DIR + "/fixtures"
|
6
|
+
TEMPLATES_DIR = File.expand_path "../lib/confetti/templates", SPEC_DIR
|
7
|
+
|
8
|
+
def fixture_dir
|
9
|
+
FIXTURE_DIR
|
10
|
+
end
|
11
|
+
|
12
|
+
def templates_dir
|
13
|
+
TEMPLATES_DIR
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
module FileHelpers
|
18
|
+
def files_should_match(file_one, file_two = nil)
|
19
|
+
File.read(file_one).should == File.read(file_two)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module ConfigHelpers
|
24
|
+
def self.included(base)
|
25
|
+
base.extend(WriteAndGenerateMacros)
|
26
|
+
end
|
27
|
+
|
28
|
+
module WriteAndGenerateMacros
|
29
|
+
generate_write_spec = "it_should_have_generate_and_write_methods_for"
|
30
|
+
|
31
|
+
send :define_method, generate_write_spec do |config_type|
|
32
|
+
class_name = config_type.to_s.split("_").collect do |s|
|
33
|
+
s.capitalize
|
34
|
+
end.join
|
35
|
+
template_class = Confetti::Template.const_get(class_name)
|
36
|
+
default_filename = template_class.new.output_filename
|
37
|
+
|
38
|
+
generate_method = "generate_#{ config_type }".to_sym
|
39
|
+
write_method = "write_#{ config_type }".to_sym
|
40
|
+
|
41
|
+
describe config_type do
|
42
|
+
before do
|
43
|
+
@config.package = "com.whoever.awesome.app"
|
44
|
+
@config.name.name = "Awesome App"
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "#generate_#{ config_type }" do
|
48
|
+
it "should create a new #{ class_name } template" do
|
49
|
+
@config.send(generate_method).should be_a template_class
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#write_#{ config_type }" do
|
54
|
+
before do
|
55
|
+
@contents = "foo"
|
56
|
+
@template = template_class.new
|
57
|
+
@output = mock(IO)
|
58
|
+
|
59
|
+
@config.should_receive(generate_method).and_return(@template)
|
60
|
+
@template.should_receive(:render).and_return(@contents)
|
61
|
+
@output.should_receive(:puts).with(@contents)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should write the rendered #{ default_filename } to the fs" do
|
65
|
+
filepath = "my_directory/#{ default_filename }"
|
66
|
+
@config.should_receive(:open).with(filepath, 'w').and_yield(@output)
|
67
|
+
|
68
|
+
@config.send(write_method, filepath)
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "when no filepath is passed" do
|
72
|
+
it "should write the rendered #{ default_filename } to the default location" do
|
73
|
+
default_path = File.join(Dir.pwd, default_filename)
|
74
|
+
@config.should_receive(:open).with(default_path, 'w').and_yield(@output)
|
75
|
+
|
76
|
+
@config.send(write_method)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Confetti::Template::AndroidManifest do
|
4
|
+
include HelpfulPaths
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
@template_class = Confetti::Template::AndroidManifest
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should inherit from the base template" do
|
11
|
+
@template_class.superclass.should be Confetti::Template::Base
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have the template_file \"android.mustache\" in the confetti/templates dir" do
|
15
|
+
@template_class.template_file.should == "#{ templates_dir }/android_manifest.mustache"
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "templated attributes" do
|
19
|
+
subject { @template = @template_class.new }
|
20
|
+
|
21
|
+
it { should respond_to :package_name }
|
22
|
+
it { should respond_to :class_name }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "default values" do
|
26
|
+
it "should define output filename as \"AndroidManifest.xml\"" do
|
27
|
+
@template_class.new.output_filename.should == "AndroidManifest.xml"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "when passed a config object" do
|
32
|
+
before do
|
33
|
+
@config = Confetti::Config.new
|
34
|
+
@config.name.name = "Awesome App"
|
35
|
+
@config.package = "com.whoever.awesome.app"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should accept the config object" do
|
39
|
+
lambda {
|
40
|
+
@template_class.new(@config)
|
41
|
+
}.should_not raise_error
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "templated attributes" do
|
45
|
+
before do
|
46
|
+
@template = @template_class.new(@config)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should set package_name correctly" do
|
50
|
+
@template.package_name.should == "com.whoever.awesome.app"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should set class_name correctly" do
|
54
|
+
@template.class_name.should == "AwesomeApp"
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should use the default version" do
|
58
|
+
@template.version.should == "0.0.1"
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should render the correct AndroidManifest" do
|
62
|
+
@template.render.should == File.read("#{ fixture_dir }/android_manifest_spec.xml")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Confetti::Template::AndroidStrings do
|
4
|
+
include HelpfulPaths
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
@template_class = Confetti::Template::AndroidStrings
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should inherit from the base template" do
|
11
|
+
@template_class.superclass.should be Confetti::Template::Base
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have the template_file \"android_strings.mustache\" in the confetti/templates dir" do
|
15
|
+
@template_class.template_file.should == "#{ templates_dir }/android_strings.mustache"
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "templated attributes" do
|
19
|
+
subject { @template = @template_class.new }
|
20
|
+
|
21
|
+
it { should respond_to :app_name }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "default values" do
|
25
|
+
it "should define output filename as \"strings.xml\"" do
|
26
|
+
@template_class.new.output_filename.should == "strings.xml"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "when passed a config object" do
|
31
|
+
before do
|
32
|
+
@config = Confetti::Config.new
|
33
|
+
@config.name.name = "Awesome App"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should accept the config object" do
|
37
|
+
lambda {
|
38
|
+
@template_class.new(@config)
|
39
|
+
}.should_not raise_error
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "templated attributes" do
|
43
|
+
before do
|
44
|
+
@template = @template_class.new(@config)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should set app_name correctly" do
|
48
|
+
@template.app_name.should == "Awesome App"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should render the correct AndroidManifest" do
|
52
|
+
@template.render.should == File.read("#{ fixture_dir }/android_strings_spec.xml")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Confetti::Template::Base do
|
4
|
+
include HelpfulPaths
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
BaseTemplate = Confetti::Template::Base
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should inherit from Mustache" do
|
11
|
+
BaseTemplate.superclass.should be Mustache
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have the template_file \"base.mustache\" in the confetti/templates dir" do
|
15
|
+
BaseTemplate.template_file.should == "#{ templates_dir }/base.mustache"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should find the template and render without error" do
|
19
|
+
lambda { BaseTemplate.new.render }.should_not raise_error
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should accept a config object passed in" do
|
23
|
+
lambda { BaseTemplate.new }.should_not raise_error
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Confetti::Template::BlackberryWidgetsConfig do
|
4
|
+
include HelpfulPaths
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
@template_class = Confetti::Template::BlackberryWidgetsConfig
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should inherit from the base template" do
|
11
|
+
@template_class.superclass.should be Confetti::Template::Base
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have the template_file \"blackberry_widgets_config.mustache\" in the confetti/templates dir" do
|
15
|
+
@template_class.template_file.should == "#{ templates_dir }/blackberry_widgets_config.mustache"
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "templated attributes" do
|
19
|
+
subject { @template = @template_class.new }
|
20
|
+
|
21
|
+
it { should respond_to :widget_version }
|
22
|
+
it { should respond_to :widget_id }
|
23
|
+
it { should respond_to :widget_name }
|
24
|
+
it { should respond_to :author_name }
|
25
|
+
it { should respond_to :author_email }
|
26
|
+
it { should respond_to :author_href }
|
27
|
+
it { should respond_to :widget_description }
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "default values" do
|
31
|
+
it "should define output filename as \"bb-config.xml\"" do
|
32
|
+
@template_class.new.output_filename.should == "bb-config.xml"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "when passed a config object" do
|
37
|
+
before do
|
38
|
+
@config = Confetti::Config.new
|
39
|
+
@config.name.name = "Awesome App"
|
40
|
+
@config.package = "com.whoever.awesome.app"
|
41
|
+
@config.version = "1.0.0"
|
42
|
+
@config.author.name = "Bruce Lee"
|
43
|
+
@config.author.email = "blee@hotmail.com"
|
44
|
+
@config.author.href = "http://brucelee.cn"
|
45
|
+
@config.description = "My New App, by Bruce Lee"
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should accept the config object" do
|
49
|
+
lambda {
|
50
|
+
@template_class.new(@config)
|
51
|
+
}.should_not raise_error
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "templated attributes" do
|
55
|
+
before do
|
56
|
+
@template = @template_class.new(@config)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should set identifier correctly" do
|
60
|
+
@template.widget_id.should == "com.whoever.awesome.app"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should set display_name correctly" do
|
64
|
+
@template.widget_name.should == "Awesome App"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should set version correctly" do
|
68
|
+
@template.widget_version.should == "1.0.0"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should set description correctly" do
|
72
|
+
@template.widget_description.should == "My New App, by Bruce Lee"
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "author" do
|
76
|
+
it "should set name correctly" do
|
77
|
+
@template.author_name.should == "Bruce Lee"
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should set href correctly" do
|
81
|
+
@template.author_href.should == "http://brucelee.cn"
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should set email correctly" do
|
85
|
+
@template.author_email.should == "blee@hotmail.com"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should render the correct config.xml" do
|
90
|
+
@template.render.should == File.read("#{ fixture_dir }/blackberry_widget_config_spec.xml")
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|