# encoding: utf-8 require 'helper' describe T::Editor do context "when editing a file" do before do T::Editor.stub(:edit) do |path| File.open(path, "wb") do |f| f.write("A tweet!!!!") end end end it "fetches your tweet content without comments" do expect(T::Editor.gets).to eq("A tweet!!!!") end end context "when fetching the editor to write in" do context "no $VISUAL or $EDITOR set" do before do ENV["EDITOR"] = ENV["VISUAL"] = nil end context "host_os is Mac OSX" do it "returns the system editor" do RbConfig::CONFIG['host_os'] = "darwin12.2.0" expect(T::Editor.editor).to eq("vi") end end context "host_os is Linux" do it "returns the system editor" do RbConfig::CONFIG['host_os'] = "3.2.0-4-amd64" expect(T::Editor.editor).to eq("vi") end end context "host_os is Windows" do it "returns the system editor" do RbConfig::CONFIG['host_os'] = "mswin" expect(T::Editor.editor).to eq("notepad") end end end context "$VISUAL is set" do before do ENV["EDITOR"] = nil ENV["VISUAL"] = "/my/vim/install" end it "returns the system editor" do expect(T::Editor.editor).to eq("/my/vim/install") end end context "$EDITOR is set" do before do ENV["EDITOR"] = "/usr/bin/subl" ENV["VISUAL"] = nil end it "returns the system editor" do expect(T::Editor.editor).to eq("/usr/bin/subl") end end context "$VISUAL and $EDITOR are set" do before do ENV["EDITOR"] = "/my/vastly/superior/editor" ENV["VISUAL"] = "/usr/bin/emacs" end it "returns the system editor" do expect(T::Editor.editor).to eq("/usr/bin/emacs") end end end context "when fetching system editor" do context "on a mac" do before do RbConfig::CONFIG['host_os'] = "darwin12.2.0" end it "returns 'vi' on a unix machine" do expect(T::Editor.system_editor).to eq("vi") end end context "on a Windows POC" do before do RbConfig::CONFIG['host_os'] = "mswin" end it "returns 'notepad' on a windows box" do expect(T::Editor.system_editor).to eq("notepad") end end end end