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
def setUp(self): host = 'http://lpse.bengkuluprov.go.id' lpse = Lpse(host) paket = lpse.get_paket_non_tender(start=0, length=1)['data'] self.detil = lpse.detil_paket_non_tender(paket[0][0])
class TestPaketNonTender(unittest.TestCase): def setUp(self): self.lpse = Lpse('http://lpse.padang.go.id', timeout=30) self.lpse.auth_token = self.lpse.get_auth_token() def test_get_paket_non_tender(self): paket = self.lpse.get_paket_non_tender(length=5) self.assertEqual(len(paket['data']), 5) def test_get_detil_pengumuman_non_tender(self): detil = self.lpse.detil_paket_non_tender('2189624') detil.get_pengumuman() expected_result = { 'kode_paket': '2189624', 'nama_paket': 'Pengadaan fishbox fiber kapasitas 50 liter, 75 liter dan 100 liter', 'tanggal_pembuatan': '11 Februari 2019', 'keterangan': '', 'tahap_paket_saat_ini': 'Paket Sudah Selesai', 'instansi': 'Pemerintah Daerah Kota Padang', 'satuan_kerja': 'DINAS KELAUTAN DAN PERIKANAN', 'kategori': 'Pengadaan Barang', 'metode_pengadaan': 'Pengadaan Langsung', 'tahun_anggaran': 'APBD 2019', 'nilai_pagu_paket': 199490000.0, 'nilai_hps_paket': 199481975.0, 'lokasi_pekerjaan': ['7 Kec. wilayah pesisir Kota Padang - Padang (Kota)'], 'kualifikasi_usaha': 'Perusahaan Kecil' } self.assertEqual(detil.pengumuman, expected_result) def test_get_detil_peserta_non_tender(self): detil = self.lpse.detil_paket_non_tender('2189624') detil.get_peserta() expected_result = [{ 'no': '1', 'nama_peserta': 'cv.samudera fiber', 'npwp': '83.134.137.5-202.000', 'harga_penawaran': 'Rp 199.280.125,00', 'harga_terkoreksi': 'Rp 199.280.125,00' }] self.assertEqual(detil.peserta, expected_result) def test_get_detil_hasil_non_tender(self): detil = self.lpse.detil_paket_non_tender('2189624') expected_result = [{ 'no': '1', 'nama_peserta': 'cv.samudera fiber', 'a': 1, 't': 1, 'penawaran': 199280125.0, 'penawaran_terkoreksi': 199280125.0, 'hasil_negosiasi': 198992750.0, 'h': 1, 'p': True, 'pk': True, 'alasan': '', 'npwp': '83.134.137.5-202.000' }] detil.get_hasil_evaluasi() self.assertEqual(detil.hasil, expected_result) def test_get_detil_pemenang_non_tender(self): detil = self.lpse.detil_paket_non_tender('4130624') expected_result = [{ 'alamat': 'JL.SOSIOLOGI 1 A NO. 22 KOMPL. PGRI I SITEBA PADANG - Padang (Kota) - Sumatera Barat', 'harga_penawaran': 12155000.0, 'harga_terkoreksi': 12155000.0, 'hasil_negosiasi': 12155000.0, 'nama_pemenang': 'CV.DESIGN ENGINEERING CONSULTAN', 'npwp': '02.591.921.8-201.000' }] detil.get_pemenang() self.assertEqual(expected_result, detil.pemenang) def test_get_detil_pemenang_berkontrak_non_tender(self): detil = self.lpse.detil_paket_non_tender('2189624') expected_result = [{ 'alamat': 'Jorong Ketaping Nagari Lawang Kec. Matur - Agam (Kab.) - Sumatera Barat', 'harga_penawaran': 199280125.0, 'hasil_negosiasi': 198992750.0, 'nama_pemenang': 'cv.samudera fiber', 'npwp': '83.134.137.5-202.000' }] detil.get_pemenang_berkontrak() self.assertEqual(expected_result, detil.pemenang_berkontrak) def test_get_detil_jadwal_non_tender(self): detil = self.lpse.detil_paket_non_tender('2189624') expected_result = [{ 'no': '1', 'tahap': 'Upload Dokumen Penawaran', 'mulai': '18 Februari 2019 08:00', 'sampai': '20 Februari 2019 15:59', 'perubahan': '1 kali perubahan' }, { 'no': '2', 'tahap': 'Pembukaan Dokumen Penawaran', 'mulai': '21 Februari 2019 08:00', 'sampai': '21 Februari 2019 15:59', 'perubahan': '1 kali perubahan' }, { 'no': '3', 'tahap': 'Evaluasi Penawaran', 'mulai': '22 Februari 2019 08:00', 'sampai': '22 Februari 2019 15:59', 'perubahan': '2 kali perubahan' }, { 'no': '4', 'tahap': 'Klarifikasi Teknis dan Negosiasi', 'mulai': '25 Februari 2019 08:00', 'sampai': '25 Februari 2019 15:59', 'perubahan': '1 kali perubahan' }, { 'no': '5', 'tahap': 'Penandatanganan Kontrak', 'mulai': '26 Februari 2019 08:00', 'sampai': '28 Februari 2019 15:59', 'perubahan': '2 kali perubahan' }] detil.get_jadwal() self.assertEqual(detil.jadwal, expected_result) def test_detil_todict(self): detil = self.lpse.detil_paket_non_tender(2189624) detil.get_all_detil() self.assertIsInstance(detil.todict(), dict) def test_detil_todict_todict(self): detil = self.lpse.detil_paket_non_tender(2189624) 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)
class TestPaketNonTender(unittest.TestCase): def setUp(self): self.lpse = Lpse('http://lpse.jakarta.go.id', timeout=30) self.lpse.skip_spse_check = True self.lpse.auth_token = self.lpse.get_auth_token() self.id_non_tender_for_testing = self.get_id_for_testing() def get_id_for_testing(self): paket = self.lpse.get_paket_non_tender(start=0, length=50) for i in paket['data']: if i[3].lower().strip() == 'paket sudah selesai': return i[0] def test_get_paket_non_tender(self): paket = self.lpse.get_paket_non_tender(length=5) self.assertEqual(len(paket['data']), 5) def test_get_detil_pengumuman_non_tender(self): detil = self.lpse.detil_paket_non_tender( self.id_non_tender_for_testing) detil.get_pengumuman() for i, v in detil.pengumuman.items(): self.assertIsNotNone(v) def test_get_detil_peserta_non_tender(self): detil = self.lpse.detil_paket_non_tender( self.id_non_tender_for_testing) detil.get_peserta() for peserta in detil.peserta: for i, v in peserta.items(): self.assertIsNotNone(v) def test_get_detil_hasil_non_tender(self): detil = self.lpse.detil_paket_non_tender( self.id_non_tender_for_testing) detil.get_hasil_evaluasi() for hasil in detil.hasil: for i, v in hasil.items(): self.assertIsNotNone(v) def test_get_detil_pemenang_non_tender(self): detil = self.lpse.detil_paket_non_tender( self.id_non_tender_for_testing) detil.get_pemenang() for pemenang in detil.pemenang: for i, v in pemenang.items(): self.assertIsNotNone(v) def test_get_detil_jadwal_non_tender(self): detil = self.lpse.detil_paket_non_tender( self.id_non_tender_for_testing) detil.get_jadwal() for row in detil.jadwal: for i, v in row.items(): self.assertIsNotNone(v) def test_detil_todict(self): detil = self.lpse.detil_paket_non_tender( self.id_non_tender_for_testing) detil.get_all_detil() self.assertIsInstance(detil.todict(), dict) def test_detil_todict_todict(self): detil = self.lpse.detil_paket_non_tender( self.id_non_tender_for_testing) 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