|
2 | 2 | require 'relative'
|
3 | 3 | require 'configtoolkit/keyvaluereader'
|
4 | 4 |
|
5 |
| -describe 'Configuration' do |
| 5 | +describe Configuration do |
| 6 | + let(:maildir_path) { '/path/to/maildir' } |
| 7 | + let(:maildir_format) { 'maildir' } |
| 8 | + let(:termbox_library_path) { '/usr/lib/libtermbox.so' } |
6 | 9 |
|
7 |
| - before :all do |
8 |
| - CONFIG_FILE = File.expand_path_relative_to_caller("../hatterrc") |
9 |
| - @maildir_path = "/path/to/maildir" |
10 |
| - @maildir_format = "maildir" |
11 |
| - @termbox_library_path = "/usr/lib/libtermbox.so" |
12 |
| - end |
| 10 | + subject(:config) { Configuration.instance } |
13 | 11 |
|
14 |
| - it "barfs when required values are missing" do |
15 |
| - config = File.read CONFIG_FILE |
16 |
| - config.gsub!(/maildir/, 'asdf') |
17 |
| - File.open("invalid_config", "w") {|file| file.write config} |
18 |
| - expect {Configuration.instance "invalid_config"}.to raise_error |
19 |
| - FileUtils::rm("invalid_config") |
20 |
| - end |
| 12 | + context 'with a user config file should override defaults' do |
| 13 | + let(:user_file_exists) { File.exists?(File.join(Dir.home, '.hatterrc')) } |
21 | 14 |
|
22 |
| - it "reads the configuration values from file" do |
23 |
| - config = Configuration.instance |
24 |
| - config.maildir.should eq @maildir_path |
25 |
| - config.maildir_format.should eq @maildir_format |
| 15 | + its(:maildir) { should_not eq maildir_path if user_file_exists } |
| 16 | + its(:maildir_format) { should_not eq maildir_format if user_file_exists } |
26 | 17 | end
|
27 | 18 |
|
28 |
| - it "the settings have the correct values" do |
29 |
| - config = Configuration.instance |
30 |
| - config.maildir.should eq @maildir_path |
31 |
| - config.maildir_format.should eq @maildir_format |
32 |
| - config.termbox_library_path.should eq @termbox_library_path |
33 |
| - end |
| 19 | + context 'with an invalid config file' do |
| 20 | + let(:config_file) { File.read(Configuration::CONFIG_FILE) } |
34 | 21 |
|
35 |
| - it "contains a nested config with colors" do |
36 |
| - config = Configuration.instance |
37 |
| - config.colors.foreground.should eq "green" |
38 |
| - config.colors.background.should eq "black" |
| 22 | + it 'barfs when required values are missing' do |
| 23 | + config_file.gsub!(/maildir/, 'asdf') |
| 24 | + File.open('invalid_config', 'w') { |file| file.write config_file } |
| 25 | + expect { Configuration.send(:new, 'invalid_config') }.to raise_error |
| 26 | + FileUtils::rm('invalid_config') |
| 27 | + end |
39 | 28 | end
|
40 | 29 |
|
41 |
| - it "contains a nested config with keys" do |
42 |
| - config = Configuration.instance |
43 |
| - config.keys.c.should eq "compose" |
44 |
| - config.keys.q.should eq "quit" |
| 30 | + context 'with a valid config file' do |
| 31 | + subject(:config) { Configuration.send(:new, Configuration::CONFIG_FILE) } |
| 32 | + |
| 33 | + its(:maildir) { should eq maildir_path } |
| 34 | + its(:maildir_format) { should eq maildir_format } |
| 35 | + |
| 36 | + its(:termbox_library_path) { should eq termbox_library_path } |
| 37 | + |
| 38 | + describe 'colors settings' do |
| 39 | + subject { config.colors } |
| 40 | + |
| 41 | + its(:foreground) { should eq 'green' } |
| 42 | + its(:background) { should eq 'black' } |
| 43 | + end |
| 44 | + |
| 45 | + describe 'nested config keys' do |
| 46 | + subject { config.keys } |
| 47 | + |
| 48 | + its(:c) { should eq 'compose' } |
| 49 | + its(:q) { should eq 'quit' } |
| 50 | + end |
45 | 51 | end
|
46 | 52 | end
|
0 commit comments