Ivan - Fix ticket creation and comment

This commit is contained in:
ivan 2016-08-04 01:37:23 -03:00
parent d6853b3a4b
commit 855c99398d
8 changed files with 100 additions and 65 deletions

View File

@ -44,8 +44,7 @@ class CreateController extends Controller {
$this->language = Controller::request('language');
}
private function storeTicket()
{
private function storeTicket() {
$department = Department::getDataStore($this->departmentId);
$author = Controller::getLoggedUser();

View File

@ -28,6 +28,7 @@ class DataStoreList {
$beanList = [];
foreach($this->list as $item) {
$item->updateBeanProperties();
$beanList[] = $item->getBeanInstance();
}

View File

@ -92,6 +92,7 @@ abstract class DataStore {
}
public function store() {
$this->updateBeanProperties();
return RedBean::store($this->getBeanInstance());
}
@ -102,8 +103,6 @@ abstract class DataStore {
}
public function getBeanInstance() {
$this->updateBeanProperties();
return $this->_bean;
}
@ -111,7 +110,7 @@ abstract class DataStore {
return false;
}
private function updateBeanProperties() {
public function updateBeanProperties() {
foreach ($this->properties as $key => $prop) {
$this->updateBeanProp($key, $prop);
}

View File

@ -1,3 +1,4 @@
source "https://rubygems.org"
gem 'mysql'
gem 'bacon'
gem 'mechanize'

View File

@ -4,6 +4,7 @@ require 'net/http'
require 'uri'
require 'mysql'
require 'json'
require 'mechanize'
require './libs.rb'
require './scripts.rb'
@ -13,4 +14,5 @@ require './user/signup.rb'
require './user/login.rb'
require './user/send-recover-password.rb'
require './user/recover-password.rb'
#require './ticket/create.rb'
require './ticket/create.rb'
require './ticket/comment.rb'

View File

@ -1,7 +1,8 @@
@@agent = Mechanize.new
def request(path, data = {})
uri = URI('http://localhost:8080' + path)
response = Net::HTTP.post_form(uri, data)
uri = 'http://localhost:8080' + path
response = @@agent.post(uri, data)
return JSON.parse(response.body)
end

View File

@ -1,14 +1,23 @@
describe 'ticket/comment/' do
it 'should fail if not logged' do
#it 'should fail if not logged' do
end
#end
describe 'on successful request' do
it 'should add comment to current ticket' do
describe 'on successful request' do
it 'should add comment to current ticket' do
result = request('/ticket/comment', {
content: 'some commment content',
ticketId: 1,
csrf_userid: $csrf_userid,
csrf_token: $csrf_token
})
(result['status']).should.equal('success')
end
# it 'should link the comment to author' do
# end
end
it 'should link the comment to author' do
end
end
end

View File

@ -1,56 +1,79 @@
describe '/ticket/create' do
it 'should fail if title is too short' do
result = request('/ticket/create', {
title: 'GG'
})
(result['status']).should.equal('fail')
(result['message']).should.equal('Invalid title')
end
it 'should fail if title is very long' do
result = request('/ticket/create',{
title: 'I WISH I WAS THE MONSTER YOU THINK I AM. -Tyrion'
})
(result['status']).should.equal('fail')
(result['message']).should.equal('Invalid title')
end
it 'should fail if content is too short' do
result = request('/ticket/create',{
title: 'Winter is coming',
content: 'Test'
})
(result['status']).should.equal('fail')
(result['message']).should.equal('Invalid content')
end
it 'should fail if content is very long' do
long_text = ''
600.times {long_text << 'a'}
result = request('/ticket/create',{
title: 'Winter is coming',
content: long_text
request('/user/logout')
result = request('/user/login', {
email: 'steve@jobs.com',
password: 'custom'
})
(result['status']).should.equal('fail')
(result['message']).should.equal('Invalid content')
$csrf_userid = result['data']['userId']
$csrf_token = result['data']['token']
end
it 'should fail if title is too short' do
result = request('/ticket/create', {
title: 'GG',
departmentId: 1,
csrf_userid: $csrf_userid,
csrf_token: $csrf_token
})
it 'should create ticket if pass data is valid' do
result = request('/ticket/create',{
title: 'Winter is coming',
content: 'The north remembers'
})
(result['status']).should.equal('fail')
(result['message']).should.equal('Invalid title')
end
(result['status']).should.equal('success')
ticket = $database.getRow('ticket','Winter is coming','title')
(ticket['content']).should.equal('The north remembers')
end
it 'should fail if title is very long' do
result = request('/ticket/create',{
title: 'I WISH I WAS THE MONSTER YOU THINK I AM. -Tyrion',
departmentId: 1,
csrf_userid: $csrf_userid,
csrf_token: $csrf_token
})
(result['status']).should.equal('fail')
(result['message']).should.equal('Invalid title')
end
it 'should fail if content is too short' do
result = request('/ticket/create', {
title: 'Winter is coming',
content: 'Test',
departmentId: 1,
csrf_userid: $csrf_userid,
csrf_token: $csrf_token
})
(result['status']).should.equal('fail')
(result['message']).should.equal('Invalid content')
end
it 'should fail if content is very long' do
long_text = ''
600.times {long_text << 'a'}
result = request('/ticket/create',{
title: 'Winter is coming',
content: long_text,
departmentId: 1,
csrf_userid: $csrf_userid,
csrf_token: $csrf_token
})
(result['status']).should.equal('fail')
(result['message']).should.equal('Invalid content')
end
it 'should create ticket if pass data is valid' do
result = request('/ticket/create',{
title: 'Winter is coming',
content: 'The north remembers',
departmentId: 1,
csrf_userid: $csrf_userid,
csrf_token: $csrf_token
})
puts result['message']
(result['status']).should.equal('success')
ticket = $database.getRow('ticket','Winter is coming','title')
(ticket['content']).should.equal('The north remembers')
end
end