describe'/system/get-stats' do request('/user/logout') Scripts.login($staff[:email], $staff[:password], true) it 'should get stats' do d = Date.today.prev_day yesterday = d.strftime("%Y%m%d%H%M") d = Date.today.prev_day.prev_day yesterday2 = d.strftime("%Y%m%d%H%M") d = Date.today.prev_day.prev_day.prev_day yesterday3 = d.strftime("%Y%m%d%H%M") #day 1 for i in 0..5 $database.query("INSERT INTO log VALUES(NULL, 'SIGNUP', NULL, " + yesterday3 + ", NULL, NULL, NULL);") end for i in 0..0 $database.query("INSERT INTO log VALUES(NULL, 'CREATE_TICKET', NULL, " + yesterday3 + ", NULL, NULL, NULL);") end for i in 0..1 $database.query("INSERT INTO log VALUES(NULL, 'CLOSE', NULL, " + yesterday3 + ", NULL, NULL, NULL);") end for i in 0..2 $database.query("INSERT INTO log VALUES(NULL, 'COMMENT', NULL, " + yesterday3 + ", NULL, NULL, NULL);") end for i in 0..8 $database.query("INSERT INTO ticketevent VALUES(NULL, 'CLOSE', NULL, NULL, " + yesterday3 + ", 0, NULL, NULL, 1);") end for i in 0..4 $database.query("INSERT INTO ticketevent VALUES(NULL, 'ASSIGN', NULL, NULL, " + yesterday3 + ", 0, NULL, NULL, 1);") end #day 2 for i in 0..7 $database.query("INSERT INTO log VALUES(NULL, 'SIGNUP', NULL, " + yesterday2 + ", NULL, NULL, NULL);") end for i in 0..2 $database.query("INSERT INTO log VALUES(NULL, 'CREATE_TICKET', NULL, " + yesterday2 + ", NULL, NULL, NULL);") end for i in 0..9 $database.query("INSERT INTO log VALUES(NULL, 'CLOSE', NULL, " + yesterday2 + ", NULL, NULL, NULL);") end for i in 0..2 $database.query("INSERT INTO log VALUES(NULL, 'COMMENT', NULL, " + yesterday2 + ", NULL, NULL, NULL);") end for i in 0..10 $database.query("INSERT INTO ticketevent VALUES(NULL, 'CLOSE', NULL, NULL, " + yesterday2 + ", 0, NULL, NULL, 1);") end for i in 0..2 $database.query("INSERT INTO ticketevent VALUES(NULL, 'ASSIGN', NULL, NULL, " + yesterday2 + ", 0, NULL, NULL, 1);") end #day 3 for i in 0..0 $database.query("INSERT INTO log VALUES(NULL, 'SIGNUP', NULL, " + yesterday + ", NULL, NULL, NULL);") end for i in 0..1 $database.query("INSERT INTO log VALUES(NULL, 'CREATE_TICKET', NULL, " + yesterday + ", NULL, NULL, NULL);") end for i in 0..4 $database.query("INSERT INTO log VALUES(NULL, 'CLOSE', NULL, " + yesterday + ", NULL, NULL, NULL);") end for i in 0..7 $database.query("INSERT INTO log VALUES(NULL, 'COMMENT', NULL, " + yesterday + ", NULL, NULL, NULL);") end for i in 0..3 $database.query("INSERT INTO ticketevent VALUES(NULL, 'CLOSE', NULL, NULL, " + yesterday + ", 0, NULL, NULL, 1);") end for i in 0..7 $database.query("INSERT INTO ticketevent VALUES(NULL, 'ASSIGN', NULL, NULL, " + yesterday + ", 0, NULL, NULL, 1);") end @result = request('/system/get-stats', { csrf_userid: $csrf_userid, csrf_token: $csrf_token, period: 'WEEK' }) def assertData(position, date, type, value) (@result['data'][position]['date']).should.equal(date) (@result['data'][position]['type']).should.equal(type) (@result['data'][position]['value']).should.equal(value) end d = Date.today.prev_day yesterday = d.strftime("%Y%m%d") d = Date.today.prev_day(2) yesterday2 = d.strftime("%Y%m%d") d = Date.today.prev_day(3) yesterday3 = d.strftime("%Y%m%d") d = Date.today.prev_day(4) yesterday4 = d.strftime("%Y%m%d") d = Date.today.prev_day(5) yesterday5 = d.strftime("%Y%m%d") d = Date.today.prev_day(6) yesterday6 = d.strftime("%Y%m%d") d = Date.today.prev_day(7) yesterday7 = d.strftime("%Y%m%d") d = Date.today.prev_day(8) yesterday8 = d.strftime("%Y%m%d") d = Date.today.prev_day(9) yesterday9 = d.strftime("%Y%m%d") d = Date.today.prev_day(10) yesterday10 = d.strftime("%Y%m%d") d = Date.today.prev_day(11) yesterday11 = d.strftime("%Y%m%d") assertData(11, yesterday3, 'CREATE_TICKET', '1') assertData(10, yesterday3, 'CLOSE', '2') assertData(9, yesterday3, 'SIGNUP', '6') assertData(8, yesterday3, 'COMMENT', '3') assertData(7, yesterday2, 'CREATE_TICKET', '3') assertData(6, yesterday2, 'CLOSE', '10') assertData(5, yesterday2, 'SIGNUP', '8') assertData(4, yesterday2, 'COMMENT', '3') assertData(3, yesterday, 'CREATE_TICKET', '2') assertData(2, yesterday, 'CLOSE', '5') assertData(1, yesterday, 'SIGNUP', '1') assertData(0, yesterday, 'COMMENT', '8') @result = request('/system/get-stats', { csrf_userid: $csrf_userid, csrf_token: $csrf_token, period: 'WEEK', staffId: '1' }) assertData(0, yesterday, 'CLOSE', '4') assertData(1, yesterday, 'ASSIGN', '8') assertData(2, yesterday2, 'CLOSE', '11') assertData(3, yesterday2, 'ASSIGN', '3') assertData(4, yesterday3, 'CLOSE', '9') assertData(5, yesterday3, 'ASSIGN', '5') assertData(6, yesterday4, 'CLOSE', '0') assertData(7, yesterday4, 'ASSIGN', '0') assertData(8, yesterday5, 'CLOSE', '0') assertData(9, yesterday5, 'ASSIGN', '0') assertData(10, yesterday6, 'CLOSE', '0') assertData(11, yesterday6, 'ASSIGN', '0') assertData(12, yesterday7, 'CLOSE', '0') assertData(13, yesterday7, 'ASSIGN', '0') assertData(14, yesterday8, 'CLOSE', '0') assertData(15, yesterday8, 'ASSIGN', '0') assertData(16, yesterday9, 'CLOSE', '0') assertData(17, yesterday9, 'ASSIGN', '0') assertData(18, yesterday10, 'CLOSE', '0') assertData(19, yesterday10, 'ASSIGN', '0') assertData(20, yesterday11, 'CLOSE', '0') assertData(21, yesterday11, 'ASSIGN', '0') end it 'should remove very old stats' do prev_days_to_remove = 32; stats_count = $database.query('SELECT COUNT(*) as qt FROM stat').fetch_hash['qt']; date = Date.today.prev_day(prev_days_to_remove).strftime("%Y%m%d"); $database.query('INSERT INTO stat VALUES(\'\', '+ date +', \'CLOSE\', 1, 0, NULL)'); $database.query('INSERT INTO stat VALUES(\'\', '+ date +', \'SINGUP\', 1, 0, NULL)'); $database.query('INSERT INTO stat VALUES(\'\', '+ date +', \'COMMENT\', 1, 0, NULL)'); stats_count_updated = $database.query('SELECT COUNT(*) as qt FROM stat').fetch_hash['qt']; (stats_count).should.not.equal(stats_count_updated) request('/system/get-stats', { csrf_userid: $csrf_userid, csrf_token: $csrf_token, period: 'MONTH', staffId: '1' }) stats_count_updated = $database.query('SELECT COUNT(*) as qt FROM stat').fetch_hash['qt']; (stats_count).should.equal(stats_count_updated) end end