(t *testing.T)
| 470 | } |
| 471 | |
| 472 | func TestBulkSMS_Excel(t *testing.T) { |
| 473 | ctx := context.Background() |
| 474 | phone := setupPhone(ctx, t, 60) |
| 475 | |
| 476 | contact1 := randomPhoneNumber() |
| 477 | contact2 := randomPhoneNumber() |
| 478 | |
| 479 | // Build Excel file with 2 messages |
| 480 | f := excelize.NewFile() |
| 481 | sheet := f.GetSheetName(0) |
| 482 | f.SetCellValue(sheet, "A1", "FromPhoneNumber") |
| 483 | f.SetCellValue(sheet, "B1", "ToPhoneNumber") |
| 484 | f.SetCellValue(sheet, "C1", "Content") |
| 485 | f.SetCellValue(sheet, "D1", "SendTime(optional)") |
| 486 | |
| 487 | f.SetCellValue(sheet, "A2", phone.PhoneNumber) |
| 488 | f.SetCellValue(sheet, "B2", contact1) |
| 489 | f.SetCellValue(sheet, "C2", "Excel bulk test message 1") |
| 490 | f.SetCellValue(sheet, "D2", "") |
| 491 | |
| 492 | f.SetCellValue(sheet, "A3", phone.PhoneNumber) |
| 493 | f.SetCellValue(sheet, "B3", contact2) |
| 494 | f.SetCellValue(sheet, "C3", "Excel bulk test message 2") |
| 495 | f.SetCellValue(sheet, "D3", "") |
| 496 | |
| 497 | var excelBuf bytes.Buffer |
| 498 | require.NoError(t, f.Write(&excelBuf)) |
| 499 | |
| 500 | // Upload Excel |
| 501 | statusCode, respBody := uploadBulkFile(ctx, t, "test.xlsx", excelBuf.Bytes()) |
| 502 | require.Equal(t, http.StatusAccepted, statusCode, "upload failed: %s", string(respBody)) |
| 503 | t.Logf("upload response: %s", string(respBody)) |
| 504 | |
| 505 | var uploadResp struct { |
| 506 | Message string `json:"message"` |
| 507 | } |
| 508 | require.NoError(t, json.Unmarshal(respBody, &uploadResp)) |
| 509 | assert.Contains(t, uploadResp.Message, "2 out of 2") |
| 510 | |
| 511 | // Wait for messages to be persisted |
| 512 | time.Sleep(2 * time.Second) |
| 513 | |
| 514 | // Search for bulk messages by owner and each contact |
| 515 | messages1 := searchMessages(ctx, t, contact1, phone.PhoneNumber) |
| 516 | messages2 := searchMessages(ctx, t, contact2, phone.PhoneNumber) |
| 517 | messages := append(messages1, messages2...) |
| 518 | require.GreaterOrEqual(t, len(messages), 2, "expected at least 2 messages for phone %s", phone.PhoneNumber) |
| 519 | |
| 520 | // Find messages with bulk- request_id prefix |
| 521 | var bulkMessages []httpsms.Message |
| 522 | var requestID string |
| 523 | for i := range messages { |
| 524 | if messages[i].RequestID != nil && strings.HasPrefix(*messages[i].RequestID, "bulk-") { |
| 525 | bulkMessages = append(bulkMessages, messages[i]) |
| 526 | requestID = *messages[i].RequestID |
| 527 | } |
| 528 | } |
| 529 | require.Len(t, bulkMessages, 2, "expected 2 messages with bulk- request_id") |
nothing calls this directly
no test coverage detected