def get_last_paket_id(lpse: Lpse, tender=True): # first if tender: data_first = lpse.get_paket_tender(start=0, length=1) data_last = lpse.get_paket_tender(start=0, length=1, ascending=True) else: data_first = lpse.get_paket_non_tender(start=0, length=1) data_last = lpse.get_paket_non_tender(start=0, length=1, ascending=True) if data_first and data_last: if not data_first['recordsTotal'] == 0: return [data_first['data'][0][0], data_last['data'][0][0], data_first['recordsTotal']] return None
class TestLpse(unittest.TestCase): def setUp(self): self.lpse = Lpse('https://lpse.bengkuluprov.go.id', timeout=30) def test_version(self): v = self.lpse.version v_2 = ''.join(re.findall(r'(SPSE v\d+\.\d+u\d+)', v)) self.assertEqual(v, v_2) def test_get_auth_token(self): token = self.lpse.get_auth_token() token_from_session = self.lpse.session.cookies['SPSE_SESSION'].split( '___')[1].split('=')[1].strip('&') self.assertEqual(token, token_from_session) def test_get_paket_tender_kosong(self): data = self.lpse.get_paket_tender() self.assertIsInstance(data, dict) def test_get_paket_tender_isi(self): data = self.lpse.get_paket_tender(length=2) self.assertEqual(2, len(data['data'])) def test_get_paket_tender_pagination(self): data_1 = self.lpse.get_paket_tender(length=5) data_2 = self.lpse.get_paket_tender(start=4, length=5) self.assertEqual(data_1['data'][-1], data_2['data'][0]) def test_get_paket_tender_search(self): keyword = 'konsentrat' data = self.lpse.get_paket_tender(length=1, search_keyword=keyword) for i in data['data']: self.assertEqual(True, keyword.lower() in i[1].lower()) def test_get_detil_tender(self): data = self.lpse.get_paket_tender(length=1) id_paket = data['data'][0][0] detil = self.lpse.detil_paket_tender(id_paket) detil.get_pengumuman() self.assertEqual(id_paket, detil.pengumuman['kode_tender']) def test_get_peserta_tender(self): data = self.lpse.get_paket_tender(length=1) id_paket = data['data'][0][0] detil = self.lpse.detil_paket_tender(id_paket) detil.get_peserta() self.assertIsInstance(detil.peserta, list) def test_get_hasil_evaluasi_tender(self): detil = self.lpse.detil_paket_tender(3676267) detil.get_hasil_evaluasi() self.assertIsInstance(detil.hasil, list) def test_get_pemenang_tender(self): detil = self.lpse.detil_paket_tender(3676267) detil.get_pemenang() nama_pemenang = 'CV. PELANGI NUSANTARA' npwp_pemenang = '02.352.426.7-311.000' self.assertEqual(nama_pemenang, detil.pemenang[0]['nama_pemenang']) self.assertEqual(npwp_pemenang, detil.pemenang[0]['npwp']) def test_get_pemenang_tender_kosong(self): data = self.lpse.get_paket_tender(length=1) id_paket = data['data'][0][0] detil = self.lpse.detil_paket_tender(id_paket) pemenang = detil.get_pemenang() self.assertEqual(pemenang, None) def test_get_pemenang_berkontrak_tender(self): detil = self.lpse.detil_paket_tender(3676267) detil.get_pemenang_berkontrak() expected_result = { 'nama_pemenang': 'CV. PELANGI NUSANTARA', 'alamat': 'Jl. Meranti 03 No. 11 Sawah Lebar Bengkulu - Bengkulu (Kota) - Bengkulu', 'npwp': '02.352.426.7-311.000', 'harga_penawaran': 791309449.11, 'hasil_negosiasi': 791309449.11 } self.assertEqual(expected_result, detil.pemenang_berkontrak[0]) def test_get_jadwal_tender(self): data = self.lpse.get_paket_tender(length=1) detil = self.lpse.detil_paket_tender(data['data'][0][0]) detil.get_jadwal() jadwal_key = ['no', 'tahap', 'mulai', 'sampai', 'perubahan'] self.assertIsInstance(detil.jadwal, list) for key in detil.jadwal[0]: self.assertEqual(True, key in jadwal_key) def test_detil_todict(self): detil = self.lpse.detil_paket_tender(3676267) detil.get_all_detil() self.assertIsInstance(detil.todict(), dict) def test_detil_todict_todict(self): detil = self.lpse.detil_paket_tender(3676267) detil.get_all_detil() detil.todict() detil.todict() self.assertIsInstance(detil.todict(), dict) def test_detil_id_random(self): detil = self.lpse.detil_paket_tender(111) self.assertRaises(LpseServerExceptions, detil.get_all_detil)
def setUp(self): host = 'https://lpse.bengkuluprov.go.id' lpse = Lpse(host) paket = lpse.get_paket_tender(start=0, length=1)['data'] self.detil = lpse.detil_paket_tender(paket[0][0])
class TestLpse(unittest.TestCase): def setUp(self): self.lpse = Lpse('lpse.jakarta.go.id', timeout=60, skip_spse_check=True) self.id_tender_selesai = self.get_id_for_testing() def get_id_for_testing(self): paket = self.lpse.get_paket_tender(start=0, length=50) for i in paket['data']: if i[3].lower().strip() == 'tender sudah selesai': return i[0] def test_get_auth_token(self): token = self.lpse.get_auth_token() token_from_session = self.lpse.session.cookies['SPSE_SESSION'].split( '___')[1].split('=')[1].strip('&') self.assertEqual(token, token_from_session) def test_get_paket_tender_kosong(self): data = self.lpse.get_paket_tender() self.assertIsInstance(data, dict) def test_get_paket_tender_isi(self): data = self.lpse.get_paket_tender(length=2) self.assertEqual(2, len(data['data'])) def test_get_paket_tender_pagination(self): data_1 = self.lpse.get_paket_tender(length=5) data_2 = self.lpse.get_paket_tender(start=4, length=5) self.assertEqual(data_1['data'][-1], data_2['data'][0]) def test_get_paket_tender_search(self): keyword = 'sekolah' data = self.lpse.get_paket_tender(length=1, search_keyword=keyword) for i in data['data']: self.assertEqual(True, keyword.lower() in i[1].lower()) def test_get_detil_tender(self): data = self.lpse.get_paket_tender(length=1) id_paket = data['data'][0][0] detil = self.lpse.detil_paket_tender(id_paket) detil.get_pengumuman() self.assertEqual(id_paket, detil.pengumuman['kode_tender']) def test_get_peserta_tender(self): data = self.lpse.get_paket_tender(length=1) id_paket = data['data'][0][0] detil = self.lpse.detil_paket_tender(id_paket) detil.get_peserta() self.assertIsInstance(detil.peserta, list) def test_get_hasil_evaluasi_tender(self): detil = self.lpse.detil_paket_tender(self.id_tender_selesai) detil.get_hasil_evaluasi() self.assertIsInstance(detil.hasil, list) def test_get_pemenang_tender(self): detil = self.lpse.detil_paket_tender(self.id_tender_selesai) detil.get_pemenang() for i, v in detil.pemenang[0].items(): self.assertIsNotNone(v) def test_get_pemenang_tender_kosong(self): # data = self.lpse.get_paket_tender(length=1) # id_paket = data['data'][0][0] # detil = self.lpse.detil_paket_tender(id_paket) # pemenang = detil.get_pemenang() # print(pemenang) # # self.assertEqual(pemenang, None) print( "Data terlalu dinamis untuk di test. Uncomment fungsi ini lalu masukan ID tender secara manual untuk di test" ) pass def test_get_pemenang_berkontrak_tender(self): detil = self.lpse.detil_paket_tender(self.id_tender_selesai) detil.get_pemenang_berkontrak() if not detil.pemenang_berkontrak: print("Belum ada pemenang berkontrak") return for i, v in detil.pemenang_berkontrak[0].items(): self.assertIsNotNone(v) def test_get_jadwal_tender(self): data = self.lpse.get_paket_tender(length=1) detil = self.lpse.detil_paket_tender(data['data'][0][0]) detil.get_jadwal() jadwal_key = ['no', 'tahap', 'mulai', 'sampai', 'perubahan'] self.assertIsInstance(detil.jadwal, list) for key in detil.jadwal[0]: self.assertEqual(True, key in jadwal_key) def test_detil_todict(self): detil = self.lpse.detil_paket_tender(self.id_tender_selesai) detil.get_all_detil() self.assertIsInstance(detil.todict(), dict) def test_detil_todict_todict(self): detil = self.lpse.detil_paket_tender(self.id_tender_selesai) detil.get_all_detil() detil.todict() detil.todict() self.assertIsInstance(detil.todict(), dict) def test_detil_id_random(self): detil = self.lpse.detil_paket_tender(111) self.assertRaises(LpseServerExceptions, detil.get_all_detil) def tearDown(self): del self.lpse