require File.expand_path("../spec_helper", __FILE__) module Danger describe Danger::DangerKotlinDetekt do it "should be a plugin" do expect(Danger::DangerKotlinDetekt.new(nil)).to be_a Danger::Plugin end # # You should test your custom attributes and methods here # describe "with Dangerfile" do before do @dangerfile = testing_dangerfile @kotlin_detekt = @dangerfile.kotlin_detekt allow(@kotlin_detekt.git).to receive(:deleted_files).and_return([]) allow(@kotlin_detekt.git).to receive(:added_files).and_return([]) allow(@kotlin_detekt.git).to receive(:modified_files).and_return([]) # # mock the PR data # # you can then use this, eg. github.pr_author, later in the spec # json = File.read(File.dirname(__FILE__) + "/support/fixtures/github_pr.json") # example json: `curl https://api.github.com/repos/danger/danger-plugin-template/pulls/18 > github_pr.json` # allow(@kotlin_detekt.github).to receive(:pr_json).and_return(json) end it "Fails if gradlew does not exist" do allow(@kotlin_detekt).to receive(:`).with("ls gradlew").and_return("") @kotlin_detekt.detekt expect(@kotlin_detekt.status_report[:errors]).to eq(["Could not find `gradlew` inside current directory"]) end it "Fails if severity is an unknown value" do allow(@kotlin_detekt).to receive(:`).with("ls gradlew").and_return("gradlew") allow(File).to receive(:exists?).with(@kotlin_detekt.report_file).and_return(true) @kotlin_detekt.severity = "Dummy" @kotlin_detekt.detekt expect(@kotlin_detekt.status_report[:errors]).to eq(["'Dummy' is not a valid value for `severity` parameter."]) end it "Sets severity to 'warning' if no severity param is provided" do allow(@kotlin_detekt).to receive(:`).with("ls gradlew").and_return("gradlew") allow(File).to receive(:exists?).with(@kotlin_detekt.report_file).and_return(true) fake_result = File.open("spec/fixtures/detekt-result-with-everything.xml") allow(File).to receive(:open).with(@kotlin_detekt.report_file).and_return(fake_result) @kotlin_detekt.detekt expect(@kotlin_detekt.severity).to eq("warning") end # # Some examples for writing tests # # You should replace these with your own. # # it "Warns on a monday" do # monday_date = Date.parse("2016-07-11") # allow(Date).to receive(:today).and_return monday_date # # @kotlin_detekt.warn_on_mondays # # expect(@dangerfile.status_report[:warnings]).to eq(["Trying to merge code on a Monday"]) # end # # it "Does nothing on a tuesday" do # monday_date = Date.parse("2016-07-12") # allow(Date).to receive(:today).and_return monday_date # # @kotlin_detekt.warn_on_mondays # # expect(@dangerfile.status_report[:warnings]).to eq([]) # end end end end