From 3fb6adad9b312ae14cfb38c08b72e03ec1cd2832 Mon Sep 17 00:00:00 2001 From: osamacis Date: Thu, 1 Dec 2022 20:27:07 +0530 Subject: [PATCH] Add Subscription and update test case of payment screen --- setup.py | 3 +- src/bitmessagekivy/kv/payment.kv | 218 ++++++++++++------ src/bitmessagekivy/main.kv | 2 +- src/bitmessagekivy/mpybit.py | 3 +- .../tests/test_payment_subscription.py | 72 +++--- src/images/kivy/payment/btc.png | Bin 0 -> 3532 bytes src/images/kivy/payment/buy.png | Bin 0 -> 3941 bytes src/images/kivy/payment/buynew1.png | Bin 0 -> 4236 bytes src/images/kivy/payment/gplay.png | Bin 0 -> 27737 bytes src/images/kivy/payment/paypal.png | Bin 0 -> 3368 bytes src/mock/helper_startup.py | 6 + 11 files changed, 201 insertions(+), 103 deletions(-) create mode 100644 src/images/kivy/payment/btc.png create mode 100644 src/images/kivy/payment/buy.png create mode 100644 src/images/kivy/payment/buynew1.png create mode 100644 src/images/kivy/payment/gplay.png create mode 100644 src/images/kivy/payment/paypal.png diff --git a/setup.py b/setup.py index 312f414d..4530d23b 100644 --- a/setup.py +++ b/setup.py @@ -79,7 +79,8 @@ if __name__ == "__main__": 'translations/*.ts', 'translations/*.qm', 'default.ini', 'sql/*.sql', 'images/*.png', 'images/*.ico', 'images/*.icns', 'bitmessagekivy/main.kv', 'bitmessagekivy/screens_data.json', - 'bitmessagekivy/kv/*.kv' + 'bitmessagekivy/kv/*.kv', 'images/kivy/payment/*.png', 'images/kivy/*.gif', + 'images/kivy/text_images*.png' ]} if sys.version_info[0] == 3: diff --git a/src/bitmessagekivy/kv/payment.kv b/src/bitmessagekivy/kv/payment.kv index 542e8e0e..6d475f56 100644 --- a/src/bitmessagekivy/kv/payment.kv +++ b/src/bitmessagekivy/kv/payment.kv @@ -1,71 +1,144 @@ -#:import get_color_from_hex kivy.utils.get_color_from_hex - : name: "payment" - BoxLayout: - ScrollView: - bar_width:0 - do_scroll_x: False - #scroll_y:0 - + id: id_payment_screen + payment_plan_id: "" + MDTabs: + id: tab_panel + tab_display_mode:'text' + Tab: + title: app.tr._("Payment") + id: id_payment plan + padding: "12dp" + spacing: "12dp" BoxLayout: - spacing: dp(8) - padding: dp(5) - size_hint_y: None - height: self.minimum_height - orientation: "vertical" - - ProductCategoryLayout: - category_text: "Monthly-Subscriptions" - - ProductLayout: - heading_text: "Gas (Play Billing Codelab)" - price_text: "$0.99" - source: app.image_path + "/payment/buynew1.png" - description_text: "Buy gasoline to ride!" - product_id: "SKUGASBILLING" - - ProductLayout: - heading_text: "Upgrade your car (Play Billing Codelab)" - price_text: "$1.49" - source: app.image_path + "/payment/buynew1.png" - description_text: "Buy a premium outfit for your car!" - product_id: "SKUUPGRADECAR" - - ProductLayout: - heading_text: "Month in gold status (Play Billing Codelab)" - price_text: "$0.99" - source: app.image_path + "/payment/buynew1.png" - description_text: "Enjoy a gold status for a month!" - product_id: "SKUMONTHLYGOLD" - - ProductCategoryLayout: - category_text: "One-time payment" - - ProductLayout: - heading_text: "Gas (Play Billing Codelab)" - price_text: "$0.99" - source: app.image_path + "/payment/buynew1.png" - description_text: "Buy gasoline to ride!" - product_id: "SKUONETIMEGAS" - - ProductCategoryLayout: - category_text: "Annual-Subscriptions" - - ProductLayout: - heading_text: "Gas (Play Billing Codelab)" - price_text: "$0.99" - source: app.image_path + "/payment/buynew1.png" - description_text: "Buy gasoline to ride!" - product_id: "SKUANNUALGAS" - - ProductLayout: - heading_text: "Year in gold status (Play Billing Codelab)" - price_text: "$10.99" - source: app.image_path + "/payment/buynew1.png" - description_text: "Enjoy a gold status for a year!" - product_id: "SKUANNUALGOLD" + ScrollView: + bar_width:0 + do_scroll_x: False + BoxLayout: + spacing: dp(5) + padding: dp(5) + size_hint_y: None + height: self.minimum_height + orientation: "vertical" + ProductCategoryLayout: + MDCard: + orientation: "vertical" + padding: "8dp" + spacing: "12dp" + size_hint: None, None + size: "560dp", "40dp" + pos_hint: {"center_x": .5, "center_y": .5} + MDLabel: + text: f"You have {app.encrypted_messages_per_month} messages left" + bold: True + halign:'center' + size_hint_y: None + pos_hint: {"center_x": .5, "center_y": .5} + MDCard: + orientation: "vertical" + padding: "8dp" + spacing: "12dp" + size_hint: None, None + size: "560dp", "300dp" + md_bg_color: [1, 0.6, 0,0.5] + pos_hint: {"center_x": .5, "center_y": .5} + MDLabel: + text: "Free" + bold: True + halign:'center' + size_hint_y: None + pos_hint: {"center_x": .5, "center_y": .5} + MDRectangleFlatIconButton: + text: "[Currently this plan is active.]" + icon: 'shield-check' + line_color: 0, 0, 0, 0 + text_color: 'ffffff' + pos_hint: {"center_x": .5, "center_y": .5} + font_size: '18sp' + MDSeparator: + height: "1dp" + MDLabel: + text: "You can get zero encrypted message per month" + halign:'center' + bold: True + MDCard: + orientation: "vertical" + padding: "8dp" + spacing: "12dp" + size_hint: None, None + size: "560dp", "300dp" + md_bg_color: [0, 0.6, 0.8,0.8] + pos_hint: {"center_x": .5, "center_y": .5} + payment_plan_id: "sub_standard" + MDLabel: + text: "Standard" + bold: True + halign:'center' + size_hint_y: None + MDSeparator: + height: "1dp" + MDLabel: + text: "You can get 100 encrypted message per month" + halign:'center' + MDRaisedButton: + text: "Get it now" + theme_text_color: 'Primary' + md_bg_color: [1, 1, 1,1] + pos_hint: {'center_x': .5} + on_release:app.open_payment_layout(root.payment_plan_id) + MDCard: + orientation: "vertical" + padding: "8dp" + spacing: "12dp" + size_hint: None, None + size: "560dp", "300dp" + md_bg_color: [1, 0.6, 0.8,0.5] + pos_hint: {"center_x": .5, "center_y": .5} + payment_plan_id: "sub_premium" + MDLabel: + text: "Premium" + bold: True + halign:'center' + size_hint_y: None + MDSeparator: + height: "1dp" + MDLabel: + text: "You can get 1000 encrypted message per month" + halign:'center' + MDRaisedButton: + text: "Get it now" + theme_text_color: 'Primary' + md_bg_color: [1, 1, 1,1] + pos_hint: {'center_x': .5} + on_release:app.open_payment_layout(root.payment_plan_id) + Tab: + title: app.tr._("Extra-Messages") + id: id_payment_tab + BoxLayout: + ScrollView: + bar_width:0 + do_scroll_x: False + BoxLayout: + spacing: dp(8) + padding: dp(5) + size_hint_y: None + height: self.minimum_height + orientation: "vertical" + ProductCategoryLayout: + category_text: "Extra-Messages" + ProductLayout: + heading_text: "100 Encrypted messages " + price_text: "$0.99" + source: app.image_path + "/payment/buynew1.png" + description_text: "Buy extra one hundred encrypted messages!" + product_id: "SKUGASBILLING" + ProductLayout: + heading_text: "1000 Encrypted messages " + price_text: "$1.49" + source: app.image_path + "/payment/buynew1.png" + description_text: "Buy extra one thousand encrypted messages!" + product_id: "SKUUPGRADECAR" : size_hint_y: None height: self.minimum_height @@ -94,7 +167,6 @@ MDLabel: text: root.text_ font_size: sp(15) - : heading_text: "" price_text: "" @@ -117,7 +189,6 @@ #heading area BoxLayout: size_hint_y: 0.3 - #text heading BoxLayout: Widget: @@ -169,7 +240,6 @@ MDLabel: text: root.description_text font_size: sp(15) - #Button Area BoxLayout: size_hint_y: 0.4 @@ -201,7 +271,7 @@ RightLabel: text: root.right_label_text theme_text_color: "Custom" - text_color: 0,0,0,.4 + text_color: 0,0,0,0.5 font_size: sp(12) : @@ -239,15 +309,17 @@ ListItemWithLabel: source: app.image_path + "/payment/btc.png" - text: "BTC" + text: "BTC (Currently this feature is not available)" method_name: "btc" - + theme_text_color: 'Secondary' + md_bg_color: [0, 0, 0,1] ListItemWithLabel: source: app.image_path + "/payment/paypal.png" - text: "Paypal" + text: "Paypal (Currently this feature is not available)" method_name: "som" - + theme_text_color: 'Secondary' + md_bg_color: [0, 0, 0,1] ListItemWithLabel: source: app.image_path + "/payment/buy.png" text: "One more method" - method_name: "omm" \ No newline at end of file + method_name: "omm" diff --git a/src/bitmessagekivy/main.kv b/src/bitmessagekivy/main.kv index caa2c7cd..42e66762 100644 --- a/src/bitmessagekivy/main.kv +++ b/src/bitmessagekivy/main.kv @@ -185,7 +185,7 @@ on_release: app.root.ids.scr_mngr.current = 'set' on_release: root.parent.set_state() NavigationItem: - text: app.tr._('Purchase') + text: app.tr._('Payment plan') icon: 'shopping' divider: None on_release: app.root.ids.scr_mngr.current = 'payment' diff --git a/src/bitmessagekivy/mpybit.py b/src/bitmessagekivy/mpybit.py index 57df8395..bd398ab9 100644 --- a/src/bitmessagekivy/mpybit.py +++ b/src/bitmessagekivy/mpybit.py @@ -45,7 +45,7 @@ from pybitmessage.bitmessagekivy.baseclass.popup import ( from pybitmessage.bitmessagekivy.baseclass.login import * # noqa: F401, F403 from pybitmessage.bitmessagekivy.uikivysignaler import UIkivySignaler -from pybitmessage.mock.helper_startup import loadConfig +from pybitmessage.mock.helper_startup import loadConfig, total_encrypted_messages_per_month logger = logging.getLogger('default') @@ -93,6 +93,7 @@ class NavigateApp(MDApp): identity_list = get_identity_list() image_path = load_image_path() app_platform = platform + encrypted_messages_per_month = total_encrypted_messages_per_month() tr = Lang("en") # for changing in franch replace en with fr def __init__(self): diff --git a/src/bitmessagekivy/tests/test_payment_subscription.py b/src/bitmessagekivy/tests/test_payment_subscription.py index 5de59015..42309001 100644 --- a/src/bitmessagekivy/tests/test_payment_subscription.py +++ b/src/bitmessagekivy/tests/test_payment_subscription.py @@ -1,14 +1,13 @@ from .telenium_process import TeleniumTestProcess -from .common import skip_screen_checks from .common import ordered class PaymentScreen(TeleniumTestProcess): - """SubscriptionPayment Screen Functionality Testing""" + """Payment Plan Screen Functionality Testing""" @ordered - def test_select_subscription(self): - """Select Subscription From List of Subscriptions""" + def test_select_payment_plan(self): + """Select Payment plan From List of payments""" # This is for checking Current screen self.assert_wait_no_except('//ScreenManager[@current]', timeout=15, value='inbox') # Method to open the side navbar @@ -18,35 +17,54 @@ class PaymentScreen(TeleniumTestProcess): # assert for checking scroll function self.assertCheckScrollDown('//ContentNavigationDrawer//ScrollView[0]', timeout=10) # this is for opening Payment screen - self.cli.wait_click('//NavigationItem[@text=\"Purchase\"]', timeout=5) + self.cli.wait_click('//NavigationItem[@text=\"Payment plan\"]', timeout=5) # Checking the navbar is in closed state self.assertExists('//MDNavigationDrawer[@status~=\"closed\"]', timeout=5) # Assert for checking Current Screen self.assertExists("//ScreenManager[@current=\"payment\"]", timeout=5) - # Scrolling Down Product list + # Checking state of Current tab Payment plan + self.assertExists( + '//Payment/MDTabs[0]//MDTabsLabel[@text=\"Payment\"][@state=\"down\"]', timeout=5 + ) + # Scrolling Down Payment plan Cards self.drag( - '//ProductCategoryLayout[0]/ProductLayout[0]', - '//ProductCategoryLayout[0]/ProductLayout[1]') - # assert for checking scroll function - self.assertCheckScrollDown('//Payment//ScrollView[0]', timeout=5) - # Scrolling Up Product list - self.drag( - '//ProductCategoryLayout[0]/ProductLayout[1]', - '//ProductCategoryLayout[0]/ProductLayout[0]') - # assert for checking scroll function - self.assertCheckScrollUp('//Payment//ScrollView[0]', timeout=10) - - @skip_screen_checks - @ordered - def test_buy_option(self): - """Check subscription""" - # Click on BUY Button - self.cli.wait_click('//MDRaisedButton[@text=\"BUY\"]', timeout=5) + '//Payment//MDTabs[0]//MDCard[2]//MDLabel[@text=\"Standard\"]', + '//Payment//MDTabs[0]//MDCard[1]//MDLabel[@text=\"You can get zero encrypted message per month\"]' + ) + # Checking the subscription offer cards + self.assertExists( + '//Payment/MDTabs[0]//MDCard[3]//MDLabel[@text=\"Premium\"]', + timeout=10 + ) + # Checking the get it now button + self.assertExists( + '//Payment/MDTabs[0]//MDCard[3]//MDRaisedButton[@text=\"Get it now\"]', + timeout=10 + ) + # Clicking on the get it now button + self.cli.wait_click( + '//Payment/MDTabs[0]//MDCard[3]//MDRaisedButton[@text=\"Get it now\"]', + timeout=10 + ) + # Checking the Payment method popup + self.assertExists('//PaymentMethodLayout//ScrollView[0]//ListItemWithLabel[0]', timeout=10) # CLick on the Payment Method - self.cli.click_on('//ScrollView[0]//ListItemWithLabel[0]') + self.cli.wait_click( + '//PaymentMethodLayout//ScrollView[0]//ListItemWithLabel[0]', + timeout=10 + ) # Check pop up is opened self.assertExists('//PaymentMethodLayout[@disabled=false]', timeout=10) # Click out side to dismiss the popup - self.cli.wait_click('//MDRaisedButton[5]', timeout=5) - # Checking Current screen(Payment screen) - self.assertExists("//ScreenManager[@current=\"payment\"]", timeout=5) + self.cli.wait_click('//MDRaisedButton[1]', timeout=10) + # Checking state of next tab Payment + self.assertExists( + '//Payment/MDTabs[0]//MDTabsLabel[@text=\"Extra-Messages\"][@state=\"normal\"]', timeout=5 + ) + # Clicking on Payment tab + self.cli.wait_click('//Payment/MDTabs[0]//MDTabsLabel[@text=\"Extra-Messages\"]', timeout=5) + # Checking state of payment tab after click + self.assertExists( + '//Payment/MDTabs[0]//MDTabsLabel[@text=\"Extra-Messages\"][@state=\"down\"]', timeout=5 + ) + self.cli.sleep(1) diff --git a/src/images/kivy/payment/btc.png b/src/images/kivy/payment/btc.png new file mode 100644 index 0000000000000000000000000000000000000000..33302ff87d281b8eb5874a8c95f148201ceaa9e7 GIT binary patch literal 3532 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 literal 0 HcmV?d00001 diff --git a/src/images/kivy/payment/paypal.png b/src/images/kivy/payment/paypal.png new file mode 100644 index 0000000000000000000000000000000000000000..f994130dd2c84d2844b32d78083f705cfb09eb45 GIT binary patch literal 3368 zcmV+@4cGFCP)+9?M{QRh>sM6BXo}Qk@#>Vya z^}4#cw6wH_hK5#FR)K+mIXO8@OiY-Vm|b064h{}2EiES}C%wJBczAdl8yiDILynG) z6%`e6ad9*>G(|;4Jv}`jARv_{B@F-o3}s0~K~#90%{=6j1@0jI(YriAntb zAG{0>fb>*V*m%!+*)LntOX-?>HM2U#%ud325Us|O_2{(UGsgD&(`Y>zucBb?CHAcA z1+WgE?GK#A_=kz{GhR3Yzr$5@#Bdfm?x%!X6`!sXcC(UB7<$o0gWLm~$m?J=)C_&c z1+lx~>`=e4qztFQ5=F1XGMG{>ijHC8z~0R^Y@CE_T~rL?F&VuQ;~~+?NErItf5iN9 z{M(XjNdksm+5x>1DS>fCGYlu4@yjtmyGbO&_^(rbIsRgU3}ZU$DZ&QD5y7zI_p^#6 zVn2cz`ncFd7cSVY0vX!dm-5T8wO`3F9=)6(VYocsbOq3%WRff}(X-*AXR5zm{!=Y(HEl@1vs4<+IX448a&OGR=j9h>GFs zGbL4QX&Cm&OEjV2HRKFerdbHF!ZYkQK?RC3hJAiTOUPbS3B&#xnFl21M$E9UZlaC= z&aj`3{ux5oFJjooP^}%J08YSgYI@xo5QO1;hDqPD2@x**WQxzQU-_U66McsLcZ79t z-6D@+e`+$S;2Bg7!*{YWH*l;Chhaa;hI%;YFicIa7KHXvaVx`jiDjB--HL4tebc=O zDE4h_n>L1KyGt01)fm2?qj;dD-2colA^1c4e-DhBI20KDyPUoW{!|0cUE*hk_!jng z=-VY`Z7BcDY-T6EKOK1CFh?se7 z7@Io75KC}JL(oD+j&)O4XNaCQ{32tBn7mr@8KOOfYS&T?;A(Ac6*Y$V(hTi!5a^q_ z;W5Pjgd2+%N8mcDZokS9KeMelt|UhQTgP8JL$o1f>`2YfI>Q!HneeYLBpBN!J+M>) zR+p}nPah0DJi!Y+L1^>j;S(PWQ#`}x)P(@Bio?Sq+!>-H(hN=)41w>~-EZ9)QgnL< zT`;s@Vfa18xHF_Uebxy+*8RES?W!PQA47QqE=yqdBalk-n2nzt1t+`beuM8;) zY)n|7nGKvELlgzh(et$`0l>f}sWEgY7>btdtZV;uKUu}fEP>Y4sWGHz_%8WtY<e*h!qpu&)%6w430 zXKVh4M6dQ8zyxFYU`P?M)pD{rgnK}x{0NoE;Ag**EySO>yW=lQ z*;CM}N`?egL?+mVvb05^xRXEr3$&`RU`XN(`Pr{*2gz+|{v82V=@bk}ydgh^mN_$d z`D&Pdfv_UPxnQWHtHuRiMn={vkf%^VZWLjA={ILc5|r}SDSNy^GiR9>T?U|K?fr}) z?4u3v4Wg`Otx#iSc?=BEb<_r#dk7>Bm>?2@LA%i72@ty z5t{(Zor{biiBJhQ>`ug!oC*y``%>(3;H&0ZOcMF4fir+?$)b9d8uGDB)`4AzwZ&}M zC+j$K*C$-qPNhn-EK^Tto^LafS}ygb~7PTM|0fn=q27l;8X1hZ8?)qDYf6 zZLy(elsrZ;a^N`VECI)qK9;d%4!s4Nu0Jg?@WOcRL|=<^S#?l<=i_sFIU^Lpn=|A0%pv%wtbj^RPc?Ea(F^vVSPl^UH$hRLhx6zsQww*4Q4fXd4dnLOMU_LLtt@_VGna z{?Z6|1`)|r&odUtSq$N9=#N^!lS~6}+eHosIZq>MIwjJ8$DVply6jezYJi-H5;dKM zoPcNMPs8{atahJWTu0YHF%yNEYZLuK+k3fxn2x>+yk0}>7de|KG?mM1xqsS`4N<}w zIbSNuev=FP%>Si0x(SDaoDmi^od)Hwn_-E`5IN^93c#W=?|9wqbFHv&v--l(&~xzx z82$;bv-;q4S|s>BJF#zzXoeh)+j$FUiYUr{{qhTV?G=JgxSg4Sj&g{?Zl@e}BVDgP ztQ$jETsRUCw9-Co!^hb**lrOvoyv(q!&0x0^M|m|R5Y9Bm+60pNrMU=XGme^fJNKz zSa#iLOD?*ooCAiP8_>izhr1RmI>A%@K zYHFGa5Nj&Qe)Cs^tTYcoT^9pT7Z#0NeidH;$&fr8b!`*g)2ZRjUEdgL zkEn`9E|Y!n1>l?T7&JA8v~{9HVRu+=0+Z#7XPqeR`9IN+Ny_Mi44`<{`qGWu1RV>n z{0Yr&!)LuVE7f}f-{Je;Wi8z3eP1n_d)j$0uihP>*rxC#M!jL1ZlZS4C~XV9(Z6+?1I3I3iL(>OFwtJ2>UWEj%Bf{ZuB zkWjeq$#jJb36(p$%%2rQpr!KgpS(NoKXCt{>Bc4)t*2T4pY9=TPv$sXK+0+PS3&D8 zS<}5u5cKW?enXd`d8hOH-OJ7G6!E+9hG*_H0k~VeP=b3KT=@N3!9>M7SsTIRi)dy9 zF6{Gah(>vZQ!(!n+X$68#D~pI7CqG=zI;G(ocliGQoiUyG5Bwl~fYJ>|B!^ zqTY!b!=6)=5>#N=>lal)NKHk!qrc`xMY2LknxwBzL+OfaHSv{xx_&hYE=75nJ_c}# zQh%xfI@7*o8W&ZGF=dG$yI=X@MEMeT4H2Y1c?}J@O&yu1{?u-SLI((j*0di*#)Fp1 zpQcn-YMLEW3DhtQt-0x*#$H#5Qd@4#C%H=jjIp*HEI?4sq`}cKF>r=fVyY4DLWIR& zqJXgpqk2%gYJi5JWxqb7+JZ#S!3;Bt^V(PS3>KV5NLP9!_p>TtDOB$7jA52jb)kFo zj15W>9VtH=Q_O~o@rRUrM+>Zm-DXu2w6-RJgshi##xF(eKSG9?UEOvu(Ky