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'); $this->language = Controller::request('language');
} }
private function storeTicket() private function storeTicket() {
{
$department = Department::getDataStore($this->departmentId); $department = Department::getDataStore($this->departmentId);
$author = Controller::getLoggedUser(); $author = Controller::getLoggedUser();

View File

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

View File

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

View File

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

View File

@ -4,6 +4,7 @@ require 'net/http'
require 'uri' require 'uri'
require 'mysql' require 'mysql'
require 'json' require 'json'
require 'mechanize'
require './libs.rb' require './libs.rb'
require './scripts.rb' require './scripts.rb'
@ -13,4 +14,5 @@ require './user/signup.rb'
require './user/login.rb' require './user/login.rb'
require './user/send-recover-password.rb' require './user/send-recover-password.rb'
require './user/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 = {}) def request(path, data = {})
uri = URI('http://localhost:8080' + path) uri = 'http://localhost:8080' + path
response = Net::HTTP.post_form(uri, data) response = @@agent.post(uri, data)
return JSON.parse(response.body) return JSON.parse(response.body)
end end

View File

@ -1,14 +1,23 @@
describe 'ticket/comment/' do 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 describe 'on successful request' do
it 'should add comment to current ticket' 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 end
it 'should link the comment to author' do
end
end
end end

View File

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