dine360-social-commerce/SOCIAL_COMMERCE_TEST_REPORT.md

7.1 KiB

Dine360 Social Commerce Test Report

Meta Catalog, Instagram Shopping & WhatsApp Cloud API

This document details all automated and end-to-end integration test results for dine360_meta_social on Odoo 17.0.


1. Test Summary

Total Tests Passed Failed Errors Success Rate Test Execution Time
14 14 0 0 100% ~1.45 seconds

2. Test Execution Details

2.1 Meta / Facebook & Instagram Commerce Catalog Tests

ID Test Case Target Component Expected Result Actual Result Status
TC-META-01 Item Payload Generation social.meta.catalog.build_item_payload Generates compliant Meta Catalog item JSON with title, price in cents, currency, canonical link, image URL, and item_group_id. Compliant payload generated with accurate price conversion (e.g. 14.50 -> 1450) and clean title. PASS
TC-META-02 Price Change Trigger product.template.write Modifying list_price automatically enqueues product variant into social.meta.sync.queue with operation='create_update'. Queue item created with state='pending'. PASS
TC-META-03 Product Unpublish Trigger product.template.write Setting is_published=False enqueues variant with operation='delete' for catalog removal. Enqueued with operation='delete'. PASS
TC-META-04 Queue Processing Resilience social.meta.sync.queue.process_queue Processing queue with missing credentials safely marks items failed without raising unhandled exceptions or breaking transactions. Item marked failed, error recorded in last_error, 0 unhandled exceptions. PASS
TC-META-05 XML Feed Generation /social/meta/catalog_feed.xml Returns HTTP 200 with standard RSS 2.0 / Google Merchant compliant XML feed. Valid XML output containing items, prices, URLs, and image links. PASS
TC-META-06 JSON Feed Generation /social/meta/catalog_feed.json Returns HTTP 200 with JSON array of catalog products. Valid JSON returned with item definitions. PASS

2.2 WhatsApp Business Cloud API & Webhook Tests

ID Test Case Target Component Expected Result Actual Result Status
TC-WA-01 Phone Sanitization social.whatsapp.api.format_phone Cleans +1 (555) 234-5678 and leading zeros into normalized international digit format (15552345678). Exactly formatted to 15552345678. PASS
TC-WA-02 Webhook HMAC Signature social.whatsapp.api.verify_webhook_signature Validates valid sha256= HMAC hash against meta_app_secret and rejects invalid signatures. True on valid match; False on invalid signature. PASS
TC-WA-03 Webhook Verification Challenge /social/whatsapp/webhook (GET) Responds with HTTP 200 and echo challenge string when verify token matches; returns HTTP 403 on invalid token. 200 OK with challenge on valid token; 403 Forbidden on invalid token. PASS
TC-WA-04 Order Confirmation Dispatch sale.order.action_confirm Confirming sale order automatically triggers order_confirmed WhatsApp template message dispatch. Template message dispatched, notification logged with state='sent', wamid stored. PASS
TC-WA-05 Notification Deduplication social.whatsapp.notification.send_order_notification Re-dispatching the same event for the same sale order suppresses duplicate sending. Duplicate skipped, existing record returned, count remained 1. PASS
TC-WA-06 Inbound Message Processing social.whatsapp.message.process_incoming_message Inbound webhook JSON parses customer phone, matches res.partner, and identifies order ref (e.g. SO9999). Correct customer partner matched and order linked. PASS
TC-WA-07 Inbound Idempotence /social/whatsapp/webhook (POST) Re-sending identical webhook payload with identical wamid does not duplicate communication records. Duplicate suppressed; message count preserved at 1. PASS
TC-WA-08 Non-blocking Error Handling social.whatsapp.api.send_template_message API failure (e.g. invalid credentials or network timeout) records error in log and allows sale order confirmation to succeed. Sale order confirmed cleanly; notification logged as failed for background retry. PASS

2.3 User Interface & View Compatibility Tests

ID Test Case Target Component Expected Result Actual Result Status
TC-UI-01 Product Variant Form View product.product / stock_delivery Opening product.product form view loads customs/delivery fields (hs_code, country_of_origin) without OwlError lifecycle exception. Form view loads cleanly, hs_code field rendered, zero JavaScript errors. Verified in browser recording verify_hs_code_fix.webp. PASS

3. End-to-End Lifecycle Verification

[1] Customer visits Odoo Store
       ↓
[2] Product selected: "Antalya Mediterranean Platter" ($24.99)
       ↓
[3] Catalog check:
       - Meta Batch API payload created ($24.99 CAD, availability: in stock)
       - Product appears in /social/meta/catalog_feed.xml
       ↓
[4] Website WhatsApp Chat Button:
       - Link generated: https://wa.me/15551234567?text=Hi,%20I'm%20interested%20in...
       ↓
[5] Order Placement:
       - Customer: Alex Johnson (+1 555 765-4321)
       - Order Ref: S00004
       - State: Confirmed ('sale')
       ↓
[6] Automated WhatsApp Notification:
       - Event: 'order_confirmed'
       - Recipient: 15557654321
       - Template: order_confirmation_v1
       - Status: Dispatched / Logged
       ↓
[7] Inbound Customer Inquiry:
       - Customer sends: "Hi! Where is my order S00004?"
       - Webhook receives POST /social/whatsapp/webhook
       - Result: Matched Alex Johnson & Order S00004
       - Status: HTTP 200 EVENT_RECEIVED

4. Acceptance Criteria Verification

  • Odoo remains the single source of truth: Inventory, prices, variants, customers, and orders reside in Odoo.
  • Meta Commerce Catalog sync: Full batch synchronization and catalog feed endpoints.
  • Instagram Shopping discovery: Synced catalog products link directly to Odoo product URLs.
  • WhatsApp Business Cloud API: Compliant v19.0 client with approved template mapping.
  • WhatsApp Webhook: Verified challenge and POST message processing.
  • Deduplication Engine: Zero duplicate notifications or message records.
  • Non-blocking API safety: Checkout, sales orders, POS, and inventory are immune to external API failures.
  • Security & Credentials: Tokens and secrets protected with security groups, never exposed to public frontend or unmasked in logs.
  • Admin Dashboard: Live KPI counters, connection tests, and sync buttons.
  • Multi-company & Multi-website safety: Independent credentials per website and company.
  • Zero fake Marketplace APIs: Complies with official Meta Commerce Catalog standards.