spec/issue_spec.rb in jiralicious-0.1.0 vs spec/issue_spec.rb in jiralicious-0.2.0
- old
+ new
@@ -11,26 +11,34 @@
config.auth_type = :cookie
config.api_version = "latest"
end
FakeWeb.register_uri(:get,
- "#{Jiralicious.rest_path}/issue/EX-1",
- :status => "200",
- :body => issue_json)
+ "#{Jiralicious.rest_path}/issue/EX-1",
+ :status => "200",
+ :body => issue_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1/comment/",
+ :status => "200",
+ :body => comment_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1/watchers/",
+ :status => "200",
+ :body => watchers_json)
end
it "finds the issue by key" do
Jiralicious::Issue.find("EX-1").should be_instance_of(Jiralicious::Issue)
issue = Jiralicious::Issue.find("EX-1")
end
it "raises an exception when the issue can't be found or can't be viewed" do
lambda {
FakeWeb.register_uri(:get,
- "#{Jiralicious.rest_path}/issue/EX-1",
- :body => "{errorMessages: ['error']}",
- :status => ["404" "Not Found"])
+ "#{Jiralicious.rest_path}/issue/EX-1",
+ :body => '{"errorMessages": ["error"]}',
+ :status => ["404" "Not Found"])
Jiralicious::Issue.find("EX-1")
}.should raise_error(Jiralicious::IssueNotFound)
end
it "translates the JSON properly" do
@@ -38,11 +46,237 @@
issue.jira_key.should == "EX-1"
issue.jira_self.should == "http://example.com:8080/jira/rest/api/2.0/issue/EX-1"
end
end
+#################################################################################################################
+describe Jiralicious::Issue, "Managing Issues" do
+
+ before :each do
+ Jiralicious.configure do |config|
+ config.username = "jstewart"
+ config.password = "topsecret"
+ config.uri = "http://localhost"
+ config.auth_type = :cookie
+ config.api_version = "latest"
+ end
+
+ FakeWeb.register_uri(:post,
+ "#{Jiralicious.rest_path}/issue/",
+ :status => "200",
+ :body => issue_create_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1",
+ :status => "200",
+ :body => issue_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1/comment/",
+ :status => "200",
+ :body => comment_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1/watchers/",
+ :status => "200",
+ :body => watchers_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-2",
+ :status => "200",
+ :body => issue_2_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-2/comment/",
+ :status => "200",
+ :body => '{"startAt": 0,"maxResults": 0,"total": 0,"comments": []}')
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-2/watchers/",
+ :status => "200",
+ :body => '{"self": "http://www.example.com/jira/rest/api/2/issue/EX-1/watchers","isWatching": false,"watchCount": 1,"watchers": [{"self": "http://www.example.com/jira/rest/api/2/user?username=fred","name": "fred","avatarUrls": {"16x16": "http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","48x48": "http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred"},"displayName": "Fred F. User","active": false}]}')
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-3",
+ :status => "200",
+ :body => issue_3_json)
+ FakeWeb.register_uri(:put,
+ "#{Jiralicious.rest_path}/issue/EX-3",
+ :status => "200",
+ :body => issue_update_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-3/comment/",
+ :status => "200",
+ :body => '{"startAt": 0,"maxResults": 0,"total": 0,"comments": []}')
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-3/watchers/",
+ :status => "200",
+ :body => '{"self": "http://www.example.com/jira/rest/api/2/issue/EX-1/watchers","isWatching": false,"watchCount": 1,"watchers": [{"self": "http://www.example.com/jira/rest/api/2/user?username=fred","name": "fred","avatarUrls": {"16x16": "http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred","48x48": "http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred"},"displayName": "Fred F. User","active": false}]}')
+ end
+
+ it "loads a hash in to the issue without subfields" do
+ issue = Jiralicious::Issue.new
+ issue.load(JSON.parse(issue_json), false)
+ issue.jira_key.should == 'EX-1'
+ issue.comments.count.should == 0
+ issue.watchers.count.should == 0
+ end
+
+ it "loads a hash in to the issue with subfields" do
+ issue = Jiralicious::Issue.new
+ issue.load(JSON.parse(issue_json))
+ issue.jira_key.should == 'EX-1'
+ issue.comments.comments.count.should == 1
+ issue.watchers.watchers.count.should == 1
+ end
+
+
+ it "creates a new issue" do
+ issue = Jiralicious::Issue.new
+ issue.fields.set_id("project", "10000")
+ issue.fields.set("summary", "this is a test of creating a scratch ticket")
+ issue.fields.set_id("issuetype", "7")
+ issue.fields.set_name("assignee", "stanley.handschuh")
+ issue.fields.set_id("priority", "1")
+ issue.fields.set("labels", ["new_label_p"])
+ issue.fields.set("environment", "example of environment")
+ issue.fields.set("description", "example of the description extending")
+ issue.save
+ issue.jira_key.should == 'EX-2'
+ issue.comments.comments.count.should == 0
+ issue.watchers.watchers.count.should == 1
+ end
+
+ it "updates a new issue" do
+ issue = Jiralicious::Issue.find("EX-3")
+ issue.fields.append_a("labels", "test_label")
+ issue.fields.append_s("description", " updated description ")
+ issue.save
+ issue.jira_key.should == 'EX-3'
+ issue['fields']['labels'].should == ["test_label"]
+ issue['fields']['description'].should == "example bug report updated description "
+ end
+end
+
+#################################################################################################################
+
+describe Jiralicious::Issue, "Managing Issues" do
+
+ before :each do
+ Jiralicious.configure do |config|
+ config.username = "jstewart"
+ config.password = "topsecret"
+ config.uri = "http://localhost"
+ config.auth_type = :cookie
+ config.api_version = "latest"
+ end
+
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1",
+ :status => "200",
+ :body => issue_json)
+ FakeWeb.register_uri(:delete,
+ "#{Jiralicious.rest_path}/issue/EX-1",
+ :status => "204")
+ FakeWeb.register_uri(:put,
+ "#{Jiralicious.rest_path}/issue/EX-1/assignee",
+ :status => "204")
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1/comment/",
+ :status => "200",
+ :body => comment_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1/watchers/",
+ :status => "200",
+ :body => watchers_json)
+ end
+
+ it "update the assignee instance" do
+ issue = Jiralicious::Issue.find("EX-1")
+ response = issue.set_assignee("jira_admin")
+ response.response.class.should == Net::HTTPNoContent
+ end
+
+ it "update the assignee class" do
+ response = Jiralicious::Issue.assignee("jira_admin", "EX-1")
+ response.response.class.should == Net::HTTPNoContent
+ end
+
+ it "deletes the issue at the class level" do
+ response = Jiralicious::Issue.remove("EX-1")
+ response.response.class.should == Net::HTTPNoContent
+ end
+
+ it "deletes the issue at the instance level" do
+ issue = Jiralicious::Issue.find("EX-1")
+ response = issue.remove
+ response.response.class.should == Net::HTTPNoContent
+ end
+end
+
+#################################################################################################################
+
+describe Jiralicious::Issue, "Issue Information and Field Class" do
+
+ before :each do
+ Jiralicious.configure do |config|
+ config.username = "jstewart"
+ config.password = "topsecret"
+ config.uri = "http://localhost"
+ config.auth_type = :cookie
+ config.api_version = "latest"
+ end
+
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/createmeta?projectKeys=EX&expand=projects.issuetypes.fields.&issuetypeIds=",
+ :status => "200",
+ :body => issue_createmeta_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1/editmeta",
+ :status => "200",
+ :body => issue_editmeta_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1",
+ :status => "200",
+ :body => issue_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1/comment/",
+ :status => "200",
+ :body => comment_json)
+ FakeWeb.register_uri(:get,
+ "#{Jiralicious.rest_path}/issue/EX-1/watchers/",
+ :status => "200",
+ :body => watchers_json)
+ end
+
+ it "retrieve createmeta for project class level" do
+ meta = Jiralicious::Issue.createmeta("EX")
+ meta.class.should == Jiralicious::Field
+ meta.projects[0].key.should == "EX"
+ end
+
+ it "retrieve createmeta for project instance level" do
+ issue = Jiralicious::Issue.find("EX-1")
+ meta = issue.createmeta
+ meta.class.should == Jiralicious::Field
+ meta.projects[0].key.should == "EX"
+ end
+
+ it "retrieve editmeta for project class level" do
+ meta = Jiralicious::Issue.editmeta("EX-1")
+ meta.class.should == Jiralicious::Field
+ meta.key.should == "EX-1"
+ meta.fields.summary.required.should == false
+ end
+
+ it "retrieve editmeta for project instance level" do
+ issue = Jiralicious::Issue.find("EX-1")
+ meta = issue.editmeta
+ meta.class.should == Jiralicious::Field
+ meta.key.should == "EX-1"
+ meta.jira_key.should == "EX-1"
+ meta.fields.summary.required.should == false
+ end
+
+end
+
+#################################################################################################################
+
describe Jiralicious::Issue, "transitions" do
before :each do
Jiralicious.configure do |config|
config.username = "jstewart"
@@ -53,46 +287,46 @@
end
it "returns list of possible transitions" do
FakeWeb.register_uri(:get,
- "#{Jiralicious.rest_path}/issue/EX-1/transitions",
- :status => "200",
- :body => transitions_json)
+ "#{Jiralicious.rest_path}/issue/EX-1/transitions",
+ :status => "200",
+ :body => transitions_json)
transitions = Jiralicious::Issue.get_transitions("#{Jiralicious.rest_path}/issue/EX-1/transitions")
transitions.should be_instance_of(Hash)
end
it "performs transition" do
FakeWeb.register_uri(:post,
- "#{Jiralicious.rest_path}/issue/EX-1/transitions",
- :status => "204",
- :body => nil)
+ "#{Jiralicious.rest_path}/issue/EX-1/transitions",
+ :status => "204",
+ :body => nil)
result = Jiralicious::Issue.transition("#{Jiralicious.rest_path}/issue/EX-1/transitions",
- {"transition" => "3", "fields" => []})
+ {"transition" => "3", "fields" => []})
result.should be_nil
end
it "raises an exception on transition failure" do
FakeWeb.register_uri(:post,
- "#{Jiralicious.rest_path}/issue/EX-1/transitions",
- :status => "400",
- :body => %q{{"errorMessages":["Workflow operation is not valid"],"errors":{}}})
+ "#{Jiralicious.rest_path}/issue/EX-1/transitions",
+ :status => "400",
+ :body => %q{{"errorMessages":["Workflow operation is not valid"],"errors":{}}})
lambda {
result = Jiralicious::Issue.transition("#{Jiralicious.rest_path}/issue/EX-1/transitions",
- {"transition" => "invalid"})
+ {"transition" => "invalid"})
}.should raise_error(Jiralicious::TransitionError)
end
it "raises an IssueNotFound exception if issue is not found" do
FakeWeb.register_uri(:post,
- "#{Jiralicious.rest_path}/issue/EX-1/transitions",
- :status => "404",
- :body => %q{{"errorMessages":["Issue Does Not Exist"],"errors":{}}})
+ "#{Jiralicious.rest_path}/issue/EX-1/transitions",
+ :status => "404",
+ :body => %q{{"errorMessages":["Issue Does Not Exist"],"errors":{}}})
lambda {
result = Jiralicious::Issue.transition("#{Jiralicious.rest_path}/issue/EX-1/transitions",
- {"transition" => "invalid"})
+ {"transition" => "invalid"})
}.should raise_error(Jiralicious::IssueNotFound)
end
end